pub struct AppState {Show 27 fields
pub auth_key: String,
pub version: String,
pub app_path: String,
pub wstore: Arc<Store>,
pub filestore: Arc<FileStore>,
pub global_transcript_store: Option<Arc<FileStore>>,
pub event_bus: Arc<EventBus>,
pub broker: Arc<Broker>,
pub reactive_handler: &'static ReactiveHandler,
pub poller: Arc<Poller>,
pub config_watcher: Arc<ConfigWatcher>,
pub messagebus: Arc<MessageBus>,
pub subagent_watcher: Arc<SubagentWatcher>,
pub history_service: Arc<HistoryService>,
pub process_tracker: Arc<AgentProcessRegistry>,
pub lan_discovery: Arc<LanDiscoveryController>,
pub lsp_supervisor: Arc<LspSupervisor>,
pub local_web_url: String,
pub http_client: Client,
pub srv_state: Arc<Mutex<State>>,
pub srv_events_tx: Sender<Event>,
pub saga_id_alloc: Arc<AtomicU64>,
pub saga_log: Arc<SagaLog>,
pub auth_session_manager: Arc<AuthSessionManager>,
pub install_sessions: Arc<InstallSessionRegistry>,
pub container_manager: Option<Arc<ContainerManager>>,
pub shell_sessions: Arc<ShellSessionRegistry>,
}Fields§
§auth_key: String§version: String§app_path: String§wstore: Arc<Store>§filestore: Arc<FileStore>§global_transcript_store: Option<Arc<FileStore>>GLOBAL, channel-independent transcript store backing the
agent:<defId>:current zone. None when the shared root can’t be
resolved (global transcripts disabled — falls back to per-channel
filestore). Lets an agent’s conversation load when opened from any
build/channel, finishing the cross-channel arc started by #1387–#1396.
See docs/analysis/ANALYSIS_CROSS_CHANNEL_CONVERSATION_HISTORY_2026_06_14.md.
event_bus: Arc<EventBus>§broker: Arc<Broker>§reactive_handler: &'static ReactiveHandler§poller: Arc<Poller>§config_watcher: Arc<ConfigWatcher>§messagebus: Arc<MessageBus>§subagent_watcher: Arc<SubagentWatcher>§history_service: Arc<HistoryService>§process_tracker: Arc<AgentProcessRegistry>Tracks every OS-level process each agent CLI has spawned, via
platform-specific mechanisms (Windows Job Objects, Linux cgroups,
macOS process groups). Surfaces the tree to the swarm pane and
provides kill-tree on pane close / host exit.
See backend::process_tracker + agentmux-ai/AGENT_SPAWNED_PROCESSES_SPEC.md.
lan_discovery: Arc<LanDiscoveryController>Live controller for mDNS-based LAN/host peer discovery. The controller
owns a swappable daemon slot so the network:lan_discovery setting can
be toggled at runtime without restarting the process.
See specs/lan-discovery-toggle.md.
lsp_supervisor: Arc<LspSupervisor>Language Server Protocol supervisor — owns the lifecycle of LSP
server child processes (one per workspace/language) and proxies
LSP messages between the editor pane and the server.
Spec: specs/SPEC_EDITOR_LSP_AND_THEMES_2026-05-26.md.
local_web_url: StringLocal HTTP URL of this instance (e.g. “http://127.0.0.1:PORT”). Used for cross-instance inject forwarding and file registry entries.
http_client: ClientShared HTTP client for cross-instance inject forwarding.
srv_state: Arc<Mutex<State>>Phase E.2c.2 — srv reducer’s canonical state. Workspace HTTP/WS
RPC handlers route through the reducer (dispatch
Command::Create/Delete/...Workspace and read out of
state.workspaces); the persist subscriber mirrors emitted
events back to SQLite. Tab/Block RPC migrations land in
E.2c.3 / E.2c.4.
srv_events_tx: Sender<Event>Phase E.2c.2 — broadcast bus for srv reducer events. RPC handlers publish reducer-emitted events here so the persist subscriber writes them back to SQLite. Pipe IPC server (when bound) shares the same bus.
saga_id_alloc: Arc<AtomicU64>Phase E.5.5 — monotonic saga-id allocator. Each saga
(TearOffTab, TearOffBlock, RestoreTornOffTab, etc.) calls
fetch_add to claim a unique id; the id is stamped onto
Event::SagaStarted/Completed/Failed so subscribers can
correlate. Per-instance scope (no cross-process sharing — see
docs/retro/saga-coordinator-location-analysis-2026-04-30.md).
saga_log: Arc<SagaLog>Saga durability — durable on-disk log of saga lifecycle.
Written by SagaCtx::dispatch / compensate (per-step) and
emit_terminal (per-saga) so a srv crash mid-saga leaves a
recoverable trail. PR 1 ships the log + instrumentation; PR 2
adds resume-on-startup + --diag sagas.
See docs/specs/SPEC_SAGA_DURABILITY_2026-05-01.md.
auth_session_manager: Arc<AuthSessionManager>Pre-launch OAuth session state — one entry per in-flight
“Connect with OAuth” attempt from the launch modal. See
docs/specs/SPEC_PRE_LAUNCH_OAUTH_FLOW_2026_05_14.md.
install_sessions: Arc<InstallSessionRegistry>In-flight install.start sessions. Frontend subscribes to
install_chunk WPS events scoped by session id; the registry
holds per-session cancel handles so install.cancel can abort
an install mid-flight.
See SPEC_AGENT_INSTALL_STAGE_2026_05_17.md §9.
container_manager: Option<Arc<ContainerManager>>Docker container manager for container-type agent panes (Phase 2).
None when Docker is not available on this host — container agents
will refuse to start rather than crashing the server.
shell_sessions: Arc<ShellSessionRegistry>Phase 3 — per-shell stop handles so ShellStop (MCP tool) and the UI
stop button can tree-kill a running persistent shell node. See
docs/specs/SPEC_PERSISTENT_SHELL_PHASE3_STOP_2026_06_14.md.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for AppState
impl !RefUnwindSafe for AppState
impl Send for AppState
impl Sync for AppState
impl Unpin for AppState
impl !UnwindSafe for AppState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more