| [中文](./ARCHITECTURE.zh-CN.md) |
| |
| # Maka Backend Architecture |
| |
| Maka has one execution authority: Runtime Host. Desktop, TUI, CLI, bots, and evaluation clients ask Runtime Host to execute work; none owns a second Runtime. |
| |
| ```mermaid |
| flowchart LR |
| C["Desktop / TUI / CLI / Bot"] --> H["Runtime Host"] |
| H --> S["SessionManager"] |
| S --> R["AgentRun + Runtime Runner"] |
| R --> T["Tool Runtime"] |
| R --> L["Runtime Event Log"] |
| S --> G["Agent Graph Control Plane"] |
| G --> R |
| L --> P["Context / Session / UI / Recovery projections"] |
| |
| E["@maka/eval\nExperiment → Cells → Attempts → Results"] --> H |
| X["External subjects"] --> E |
| ``` |
| |
| Runtime Host owns Session and Turn identity, agent lifecycle, continuation, tools, permissions, and events. `@maka/eval` owns benchmark experiment semantics only: subjects, tasks, repetitions, cells, immutable attempts, result selection, budgets, and verifier configuration. A Maka subject always crosses the public Runtime Host client/protocol boundary; an external competitor is a generic external subject. |
| |
| ## Runtime layers |
| |
| 1. Runtime Event Log is the canonical source for model messages, tool calls, tool results, and termination facts. Context pruning and compaction change provider input projections, not history. |
| 2. SessionManager and AgentRun own execution lifecycle. Runtime Host owns admission, client capabilities, interactions, and the public protocol. |
| 3. Agent Graph schedules dependent work using child Sessions and sends every activation back through the same Runtime. |
| 4. Storage owns interactive Runtime state. It has no Eval-specific root, TaskRun ledger, or experiment result authority. |
| |
| ## Eval boundary |
| |
| ```text |
| Experiment = benchmark + executor + subjects + tasks + repetitions |
| Cell = task × repetition × subject |
| |
| repetition = a new experimental sample |
| infra retry = a replacement attempt for the same cell |
| continuation = internal Runtime Host behavior within a Maka subject |
| ``` |
| |
| One Experiment uses one fully expanded declarative spec. Every arm shares its executor, benchmark, tasks, budget, and verifier. A/B is simply a two-arm Experiment. Harbor and Pier are executor adapters, not independent workflows. |
| |
| The result kernel contains only score, normalized usage, attributable cost, duration, status or failure reason, and artifacts. When a cell has multiple attempts, the earliest valid attempt is authoritative; operators cannot choose a preferred outcome. |
| |
| ## Code boundaries |
| |
| | Area | Responsibility | |
| |---|---| |
| | `packages/core` | Pure Session, Runtime Event, AgentRun, permission, and protocol contracts | |
| | `packages/storage` | Interactive Runtime stores and SQLite control planes | |
| | `packages/runtime` | SessionManager, AgentRun, model adapters, tools, context, recovery, and Graph reconciliation | |
| | `packages/runtime-host` | Sole hosted execution authority and public client/protocol | |
| | `packages/eval` | Experiment cells, attempts, result selection, and subject/executor adapters | |
| | `packages/cli` | TUI, `maka run`, and the public `maka eval` route | |
| | `apps/desktop/src/main` | Electron composition and product-entry adapters | |
| |
| ## Reading paths |
| |
| - Runtime facts and projections: [Runtime core](./docs/architecture/runtime-core-architecture-draft.md) and [compaction](./docs/architecture/llm-compaction-events-log-projection-draft.md). |
| - Crash recovery and continuation: [Runtime resume](./docs/architecture/runtime-resume-architecture.md). |
| - Multi-agent scheduling: [Agent Graph](./docs/architecture/agent-graph-stream-scheduling-draft.md). |
| - Evaluation behavior and public seams: [`packages/eval`](./packages/eval). |
| |
| Historical designs remain under [`docs/archive`](./docs/archive/README.md). Current GitHub issues and source take precedence over older drafts. |