Skip to content

Architecture

AgentMuru follows a dependency-inward Python architecture. Application behavior does not depend on the browser, server framework, database adapter, Databricks, or a hosted-model SDK.

Workspace / CLI / FastAPI / integrations
                    |
              Application
                    |
          Runtime / agents / workflows
                    |
 events / tools / approvals / store protocols
                    |
 in-memory and SQLite adapters / official model adapters

Application boundary

Application declares agents and stores. Runtime owns execution and policy. The browser and HTTP API consume runtime state instead of embedding a second execution engine.

Provider boundary

ModelProvider normalizes text, complete tool calls, completion usage, and safe failures. The OpenAI, Anthropic, and Google integrations depend on their official SDKs, while runtime and agent packages depend only on AgentMuru model events.

State boundary

Session, artifact, and approval protocols define explicit mutations. The runtime calls methods such as append message, create run, update run, bind idempotency, append event, and recover interrupted work. Retrieved objects are not treated as magical durable state.

In-memory and SQLite implementations share these protocols. SQLite is the bundled durable local adapter. Server-scale stores can implement the same boundary without changing agents or tools.

Transport boundary

FastAPI exposes snapshots, commands, ordered event replay, and a WebSocket follow stream. Muru Workspace hydrates from a snapshot and resumes from a sequence cursor. Protocol state remains typed and versioned.

Security boundary

Model output is treated as untrusted input. Tool registration, schema validation, permissions, approval, redaction, timeout, retries, and execution all remain runtime-controlled. Server identity and session ownership are independent from provider identity.

Labs boundary

The Go-native module has separate contracts, release artifacts, and qualification. Machine profiling, pack compilation, adaptive routing, local models, and host-capability brokering do not expand the Python package claim until they pass their own promotion gates.