pub struct AppState {Show 36 fields
pub config: Arc<Mutex<Config>>,
pub provider: Arc<dyn Provider>,
pub model: String,
pub temperature: f64,
pub mem: Arc<dyn Memory>,
pub auto_save: bool,
pub webhook_secret_hash: Option<Arc<str>>,
pub pairing: Arc<PairingGuard>,
pub trust_forwarded_headers: bool,
pub rate_limiter: Arc<GatewayRateLimiter>,
pub auth_limiter: Arc<AuthRateLimiter>,
pub idempotency_store: Arc<IdempotencyStore>,
pub whatsapp: Option<Arc<WhatsAppChannel>>,
pub whatsapp_app_secret: Option<Arc<str>>,
pub linq: Option<Arc<LinqChannel>>,
pub linq_signing_secret: Option<Arc<str>>,
pub nextcloud_talk: Option<Arc<NextcloudTalkChannel>>,
pub nextcloud_talk_webhook_secret: Option<Arc<str>>,
pub wati: Option<Arc<WatiChannel>>,
pub gmail_push: Option<Arc<GmailPushChannel>>,
pub observer: Arc<dyn Observer>,
pub tools_registry: Arc<Vec<ToolSpec>>,
pub cost_tracker: Option<Arc<CostTracker>>,
pub audit_logger: Option<Arc<AuditLogger>>,
pub event_tx: Sender<Value>,
pub shutdown_tx: Sender<bool>,
pub node_registry: Arc<NodeRegistry>,
pub path_prefix: String,
pub session_backend: Option<Arc<dyn SessionBackend>>,
pub session_queue: Arc<SessionActorQueue>,
pub device_registry: Option<Arc<DeviceRegistry>>,
pub pending_pairings: Option<Arc<PairingStore>>,
pub canvas_store: CanvasStore,
pub mcp_registry: Option<Arc<McpRegistry>>,
pub approval_registry: Arc<ApprovalRegistry>,
pub mcp_local_url: Option<Arc<str>>,
}Expand description
Shared state for all axum handlers
Fields§
§config: Arc<Mutex<Config>>§provider: Arc<dyn Provider>§model: String§temperature: f64§mem: Arc<dyn Memory>§auto_save: bool§webhook_secret_hash: Option<Arc<str>>SHA-256 hash of X-Webhook-Secret (hex-encoded), never plaintext.
pairing: Arc<PairingGuard>§trust_forwarded_headers: bool§rate_limiter: Arc<GatewayRateLimiter>§auth_limiter: Arc<AuthRateLimiter>§idempotency_store: Arc<IdempotencyStore>§whatsapp: Option<Arc<WhatsAppChannel>>§whatsapp_app_secret: Option<Arc<str>>WhatsApp app secret for webhook signature verification (X-Hub-Signature-256)
linq: Option<Arc<LinqChannel>>§linq_signing_secret: Option<Arc<str>>Linq webhook signing secret for signature verification
nextcloud_talk: Option<Arc<NextcloudTalkChannel>>§nextcloud_talk_webhook_secret: Option<Arc<str>>Nextcloud Talk webhook secret for signature verification
wati: Option<Arc<WatiChannel>>§gmail_push: Option<Arc<GmailPushChannel>>Gmail Pub/Sub push notification channel
observer: Arc<dyn Observer>Observability backend for metrics scraping
tools_registry: Arc<Vec<ToolSpec>>Registered tool specs (for web dashboard tools page)
cost_tracker: Option<Arc<CostTracker>>Cost tracker (optional, for web dashboard cost page)
audit_logger: Option<Arc<AuditLogger>>Audit logger (optional, for web dashboard audit viewer)
event_tx: Sender<Value>SSE broadcast channel for real-time events
shutdown_tx: Sender<bool>Shutdown signal sender for graceful shutdown
node_registry: Arc<NodeRegistry>Registry of dynamically connected nodes
path_prefix: StringPath prefix for reverse-proxy deployments (empty string = no prefix)
session_backend: Option<Arc<dyn SessionBackend>>Session backend for persisting gateway WS chat sessions
session_queue: Arc<SessionActorQueue>Per-session actor queue for serializing concurrent turns
device_registry: Option<Arc<DeviceRegistry>>Device registry for paired device management
pending_pairings: Option<Arc<PairingStore>>Pending pairing request store
canvas_store: CanvasStoreShared canvas store for Live Canvas (A2UI) system
mcp_registry: Option<Arc<McpRegistry>>MCP registry for direct tool invocation from HTTP handlers (memory graph, etc.)
approval_registry: Arc<ApprovalRegistry>Registry of pending human approval requests from workflow runs
mcp_local_url: Option<Arc<str>>Base URL (e.g. http://127.0.0.1:60004) of the in-process MCP server,
used by gateway reverse-proxy handlers in api_mcp. None if the
MCP server failed to bind — proxy handlers should then return 503.
Populated after MCP server bind in run_gateway.
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 UnsafeUnpin 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,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§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.Source§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.Source§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.Source§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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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