Architecture
How MUXI components work together
MUXI is a layered system: CLI and SDKs talk to Servers, which manage Formations running on Runtimes. The Registry distributes formations.
System Overview
---
config:
layout: elk
elk:
nodePlacementStrategy: LINEAR_SEGMENTS
---
flowchart TB
subgraph Clients
CLI[CLI]
SDKs[SDKs]
end
subgraph Infrastructure
Server["Server (:7890)"]
subgraph Formations["Formation Runtimes
(:8001-8999)"]
F1[Formation A]
F2[Formation B]
F3[Formation C]
end
end
Registry[Registry]
CLI --> Server
SDKs --> Server
CLI -.-> Registry
Server --> Formations
Components
Server: Orchestration platform
Manages formation lifecycle, routes requests, handles auth, monitors health. Written in Go.
Default port: 7890
Runtime: Execution environment
Runs agent logic, manages memory, calls LLMs, executes tools. Written in Python (FastAPI*).
Default ports: 8001-8999
CLI: Command-line tool
Creates formations, deploys to servers, manages secrets. Written in Go.
SDKs: Client libraries
Python, TypeScript, Go, etc. Build apps, chat with formations, manage sessions, fire triggers.
Registry: Distribution hub
Share and discover formations. Version management. Like npm for agents.
The runtime ships as a native SIF image for Linux. On macOS/Windows, run via Docker; on Linux, run SIF directly (or Docker if preferred).
Request Flow
sequenceDiagram
participant C as Client
participant S as Server
participant F as Formation
participant L as LLM
C->>S: POST /api/my-formation/v1/chat
S->>S: Authenticate (HMAC or API key)
S->>F: Proxy request
F->>F: Load context (memory, knowledge)
F->>F: Select agent
F->>L: Send prompt
L-->>F: Response
F->>F: Update memory
F-->>S: Response
S-->>C: Response
Formation Structure
Everything your AI needs in one directory:
my-formation/
├── formation.afs # Main configuration
├── agents/ # Agent definitions (auto-discovered)
│ ├── researcher.afs
│ └── writer.afs
├── mcp/ # MCP tool servers (auto-discovered)
│ └── web-search.afs
├── a2a/ # Agent-to-agent services (auto-discovered)
│ └── external-api.afs
├── skills/ # Agent skills with SKILL.md files
│ └── data-analysis/
│ └── SKILL.md
├── knowledge/ # RAG sources (any location in formation)
│ └── docs/
├── secrets.enc # Encrypted credentials
└── secrets.example # Template for required secrets
Formation placement (concepts → files/dirs)
| Concept | Where it lives |
|---|---|
| LLM Config | formation.afs (llm: section) with per-agent overrides in agents/*.afs
|
| Agents | agents/*.afs - auto-discovered, define role, specialties
|
| Overlord | formation.afs (overlord: workflow, clarification settings) + SOUL.md
|
| Workflows | formation.afs (overlord.workflow: auto-decomposition, timeouts)
|
| Memory | formation.afs (memory: buffer, working, persistent config)
|
| Tools & MCP | mcp/*.afs - auto-discovered; formation.afs (mcp: global settings)
|
| Agent-to-Agent | a2a/*.afs - auto-discovered; formation.afs (a2a: config)
|
| Skills | skills/*/SKILL.md files with scripts, references, assets
|
| Knowledge | knowledge/ files, referenced in agents/*.afs (knowledge: section)
|
| Scheduled Tasks | formation.afs (scheduler: config) - users schedule via natural language
|
| Async Processing | formation.afs (async: threshold, webhooks)
|
| Secrets | secrets.enc - referenced as ${{ secrets.NAME }} anywhere
|
| User Credentials | ${{ user.credentials.NAME }} - per-user secrets bound at runtime
|
| Clarification | formation.afs (overlord.clarification: settings)
|
| Server/API | formation.afs (server: host, port, API keys)
|
| Logging | formation.afs (logging: destinations, formats)
|
| Versioning | formation.afs (schema:, version:, runtime: fields)
|
Inside a Formation
---
config:
layout: elk
elk:
nodePlacementStrategy: LINEAR_SEGMENTS
---
flowchart TB
subgraph Formation["Formation Runtime"]
Overlord["Overlord (Orchestrator)"]
Memory["Memory (3-tier)"]
subgraph Agents
A1[Agent]
A2[Agent]
A3[Agent]
A4[Agent]
end
Tools[MCP Tools]
Overlord <--> Memory
Overlord --> Agents
Agents --> Tools
end
Deployment Models
Local Development
muxi dev → Runtime (localhost:8001)
Single Server
Server (:7890)
├── Formation A (:8001)
├── Formation B (:8002)
└── Formation C (:8003)
Multi-Server
Load Balancer
├── Server-East (:7890) → Formations
└── Server-West (:7890) → Formations
Technology Stack
| Component | Technology | Why |
|---|---|---|
| Server | Go | Single binary, fast, concurrent |
| Runtime | Python + FastAPI (as native SIF image) | AI ecosystem, async, OneLLM |
| CLI | Go | Cross-platform, single binary |
| SDKs | Python, TS, Go | Native experience per language |
Design Principles
MUXI is infrastructure, not a framework. It deploys anywhere and integrates with anything.
- YAML configuration - Simple, versionable, shareable
- Encrypted secrets - Not environment variables
- MCP for tools - Standard protocol, any server works
- Multi-agent - Specialized agents, coordinated work
- Portable - Works on any cloud, any platform
Versioning & compatibility
- Formation schema follows semver; new minor versions stay backward compatible, breaking changes land in majors.
- Pin server/runtime versions together for production; upgrade runtime before server when possible.
- Regenerate/validate formations after upgrades to catch schema or tooling changes early.
Next Steps
Request Lifecycle - Detailed request flow
Security Model - Authentication layers
Reference - Building formations