| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| [中文](./ARCHITECTURE.zh-CN.md) |
| |
| # Maka Backend Architecture |
| |
| Each State Root has its own Runtime Host as execution and write authority. Desktop, TUI, CLI, bots, and evaluation clients execute work through that Host boundary rather than creating a second Runtime for the same state. Multiple Hosts may own different State Roots; Peer Mesh supplies endpoint membership and connections without combining their execution authorities. |
| |
| ```mermaid |
| flowchart LR |
| C["Desktop / TUI / CLI / Bot"] --> H["Runtime Host"] |
| H --> S["SessionManager"] |
| S --> R["AgentRun + RuntimeKernel"] |
| 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 |
| |
| - Host ownership, admission, observation, Client isolation and lifecycle: [Runtime Host architecture](./docs/architecture/runtime-host-architecture.md). |
| - Proposed Desktop conversation projection design (Chinese; not yet implemented): [Host-owned conversation lifecycle](./docs/architecture/desktop-conversation-host-projection.zh-CN.md). |
| - Network identity, membership, path selection and stream recovery: [Peer Mesh architecture](./docs/architecture/peer-mesh-architecture.md). |
| - 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. |