@jakevin7: Pi and Maka independently converged on the same runtime architecture. The interesting part is where we didn't. When Pi'…
Summary
Two AI agent systems, Pi and Maka, converged on similar runtime architectures but diverged in key areas like crash recovery, showcasing different trade-offs in durable workflow design.
View Cached Full Text
Cached at: 08/25/26, 08:09 AM
Pi and Maka independently converged on the same runtime architecture. The interesting part is where we didn’t.
When Pi’s harness v2 doc landed, we did a double take — it describes almost exactly the pipeline we’d built into Maka:
durable facts → run state → model context → UI → re-reduce after crash Same tool boundary, too: persist intent → perform effect → persist result.
We had an agent diff both architecture docs line by line. Overall similarity ~50%; “log is truth, state is projection” and “tool side-effect boundary” both land around 80%. But no shared terminology, type names, or document structure — and the intent-before-effect pattern is just standard WAL / Saga / event-sourcing / durable-workflow practice.
Timeline, stated without interpretation: Maka’s log-first runtime chapter landed 2026-07-12. Pi’s harness-v2.md was first committed 2026-07-29.
I’d rather read this as convergence. When two unrelated teams arrive at the same place from different directions, the direction is probably right. The agent harness layer is settling on a consensus — and that consensus is borrowed from operating systems and databases. Write-ahead logs, event sourcing, durable operations. Decades-old ideas.
The divergence is the interesting part.
On crash recovery we made opposite calls:
Pi: the original operation stays suspended; resume() continues it. Tools declaring replay: safe may re-execute on recovery. Maka: the old Run is first sealed into a terminal state. Resume never revives it — it mints a fresh runId / invocationId / turnId. If T1 exists but T2 is missing, the state is indeterminate, and we** park rather than re-run on a generic tool-level safety declaration**.
Pi: resume the durable operation Maka: close old attempt → prove safety → create continuation Concurrency diverges as well. Pi’s lanes are like git branches over a shared conversation tree — the unit of parallelism is a lane within a session. Maka allows at most one root execution per Session; parallelism comes from separate child Sessions, with Agent Graph as a durable scheduling control plane above the Runtime.
Which is better? I don’t think there’s a universal answer. Pi’s path recovers faster and keeps a more coherent mental model. Ours is more conservative — heavier resume, in exchange for never repeating an external side effect we can’t prove safe.
Someone on our team put it well today: there are no silver bullets in software engineering. What matters isn’t collecting clever designs, it’s knowing whether the trade-off is acceptable for the problem you’ve actually defined.
Maka chose fail-closed, because we’re betting on long-running tasks with real side effects — where re-running once costs far more than resuming once too carefully.
Apache Maka (Incubating) ·
apache/maka
Source: https://github.com/apache/maka
Apache Maka (Incubating)
Incubating at The Apache Software Foundation
A local-first Agent workspace built for real work.
Maka inspects projects, runs tools under a sandbox boundary, and records
model messages and tool calls as recoverable execution facts — on your
machine, through one Runtime Host.

Apache Maka (Incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision-making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF. DISCLAIMER-WIP records the issues the project is currently aware of.
Maka is under active development. The macOS Apple Silicon desktop build is an early public release; data formats, CLI commands, and experimental capabilities may still change.
Why Maka
- Your machine, your data. Sessions, settings, and run records stay local by default. You bring the model: a cloud API, a local model, or a compatible gateway.
- The record is kept. Model messages, tool calls, tool results, and how a turn ended are written down. The UI and the next model call are views of that record, not the only copy.
- Shorter context is not deleted history. Maka can omit old tool output from the next prompt without throwing away the saved evidence.
- One place runs the agent. Desktop, the terminal, and Maka evaluation all go through Runtime Host. Eval only owns the experiment and its scores.
Read Maka Backend Architecture for the design.
Surfaces
| Entry point | Best for | Current capability |
|---|---|---|
| Desktop | Daily interaction, file and Artifact workflows, model and permission setup | Electron + React with streaming sessions, tool timelines, branching, search, and recovery |
| TUI / CLI | Using Maka in the current project directory or running one non-interactive Turn | maka, maka run; shares workspace and model connections with Desktop |
| Eval | Reproducible benchmark experiments across Maka and external subjects | maka eval run <spec> --out <directory> |
Current capabilities
Agent Runtime
- Multiple model connections, streaming output, thinking, usage, and clearer provider errors;
- Built-in tools:
Read,Write,Edit,Bash,Glob,Grep. Computer Use and catalog skills are optional and not on by default; - Tools that leave the sandbox must be approved; runs can be aborted; failures are classified;
- A durable execution record, crash recovery, and optional resume of an interrupted turn.
Desktop workspace
- Create, archive, search, rename, retry, regenerate, and branch sessions from a Turn;
- Artifact lists and previews, workspace instructions, model settings, and sandbox settings;
- Local memory and web search when configured;
- Chat apps (IM bots) are experimental. See IM onboarding.
Evaluation
- Declarative multi-arm experiments expanded into task × repetition × subject cells;
- Immutable per-cell attempts with targeted infrastructure replacement and earliest-valid selection;
- A small result kernel for score, normalized usage, attributable cost, duration, status, failure reason, and artifacts;
- Maka subjects execute only through Runtime Host; external subjects use generic external subject adapters.
Quick start
Releases and downloads
Apache Maka has not made an Apache release yet. Everything currently published from this repository or from a package registry was produced before or during incubation, is not an Apache Software Foundation release, and has not been reviewed or voted on by the Incubator PMC.
Once Apache releases exist, the official release is the source release published by the ASF and approved by the podling PPMC and the Incubator PMC. A package built from that source and distributed elsewhere, for example through a package registry or as a Desktop installer, is a convenience artifact rather than the release itself, and it is valid only when it is built from an approved source release. .github/ASF_SOURCE_RELEASE.md holds the candidate contract, signing path, and verification steps.
Until an approved source release exists, this README recommends no prebuilt download. Build and run Maka from source as described below. Desktop currently targets Apple Silicon Macs (arm64). Intel Macs and Linux are not supported yet. Windows is an unsigned preview, not a supported release tier.
Requirements
- Node.js 22.19 or newer (CI uses Node.js 24);
- npm (the lockfile and scripts use npm; the current
packageManageris npm 11); - Git;
ripgrep, used by Runtime’sGreptool.
Start Desktop
git clone https://github.com/apache/maka.git
cd maka
npm ci
npm run dev
npm run dev starts the Desktop development environment with HMR. To build every workspace before starting Electron, use:
npm run dev:full
If dependencies were installed with ELECTRON_SKIP_BINARY_DOWNLOAD=1, install the Electron platform binary before starting:
node node_modules/electron/install.js
First run
Maka does not bundle a shared model account. On first launch:
- Open
Settings → Models; - Add an API, local-model, or supported account connection;
- Test it and choose a default model;
- Return to the workspace and start a task.
The app distinguishes configured, send-ready, and experimental connection states. An account flow that is not wired into Runtime is not presented as a usable model.
Terminal entry points
For the public npm package, see the CLI installation and usage guide. The commands below run the development CLI from a source checkout.
Build the workspaces first:
npm run build
Then start the TUI or run one Turn:
npm run cli:dev
npm run cli:dev -- run "Summarize this repository and identify its most important risk"
npm run cli:dev -- run --graph "Implement two independent slices, integrate them, then review the result"
npm run cli:dev -- --help
The TUI also accepts /graph on, /graph off, and /graph <task>. Non-interactive
--graph runs wait for the durable Graph to finish before printing the final
supervisor output. Graph implementation operators use isolated Git worktrees, so
the source project must be a clean Git worktree.
The repository CLI uses the same Maka Dev profile as a development Desktop build. The
released maka binary continues to use the Maka profile; the two profiles are not copied or
synchronized automatically. Evaluation specs and adapters live in packages/eval.
Architecture
The backend spine is:
Desktop / TUI / CLI → Runtime Host → SessionManager → AgentRun
↓
Model + Tool Runtime → Runtime Event Log
↓
Context / Session / UI projections
Experiment → Cells → Attempts → Results
↓
Runtime Host executes Maka subjects
Start with ARCHITECTURE.md. It provides the system map, code boundaries, problem-oriented reading paths, and six bilingual deep dives.
Repository layout
apps/desktop/ Electron main / preload / React renderer
packages/core/ Pure contracts for Sessions, Events, Permissions, and Connections
packages/storage/ SQLite operational state, configuration, and payload stores
packages/runtime/ AgentRun, model adapters, tools, context, and recovery
packages/eval/ Experiment cells, attempts, results, and executor/subject adapters
packages/cli/ TUI and non-interactive CLI
packages/ui/ Shared conversation, Markdown, Artifact, and UI primitives
docs/ Architecture, product, security, privacy, and test contracts
scripts/ Build hygiene, visual checks, smoke tests, and release helpers
Local data and recovery
Workspace data lives under Electron userData by default:
<Electron userData>/workspaces/default/
runtime.sqlite
connection-catalog.json
credential-vault.json
settings.json
artifacts/
- API keys and similar secrets are a local plaintext file (
credential-vault.json), readable only by your OS account. The renderer never sees them. - Tools that write files or run a shell must pass the sandbox boundary first.
runtime.sqliteis the live record. Older JSONL transcripts and ElectronsafeStoragecredential files are not imported; an upgraded workspace can show empty threads, and those credentials must be entered again.- Resuming an interrupted turn is off by default. Set
MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1only if you want Desktop Safe resume, CLI/resume, and startup auto-resume — those calls hit the model and use tokens.
Details: SECURITY.md, privacy, resume.
Development and verification
Before sending a change, read CONTRIBUTING.md.
Common repository-level commands:
npm run build
npm run typecheck
npm test
npm run check:release
Run one workspace in isolation:
npm --workspace @maka/runtime test
npm --workspace @maka/eval test
npm --workspace @maka/desktop test
Use refresh:model-metadata to fetch the current catalog from models.dev, update the committed snapshot, and regenerate the derived TypeScript files. A refresh fails closed when any committed model, capability, provider override, or pricing field disappears; after reviewing an intentional upstream removal, acknowledge it with npm run refresh:model-metadata -- --accept-upstream-removals. sync:model-metadata is intentionally offline: it only regenerates those files from the committed snapshot. Keep access-path-specific overrides in model-metadata.ts; do not edit the generated files by hand.
npm run refresh:model-metadata
npm --workspace @maka/core test
Desktop real-window and visual verification:
npm --workspace @maka/desktop run e2e
npm --workspace @maka/desktop run smoke:real-window
Before submitting code, run typecheck, build, and focused tests proportionate to the change, followed by git diff --check.
Documentation
- Documentation index and authority map
- Backend architecture
- Product design
- Contributing guide
- Security policy
License
Maka is licensed under the Apache License 2.0. See NOTICE for attribution information. Third-party components remain subject to their respective licenses and notices.
Apache Maka, Maka, Apache, the Apache feather, and the Apache Maka project logo are either registered trademarks or trademarks of The Apache Software Foundation.
Similar Articles
@jakevin7: Pi's New Architecture and Maka Show That the Answers for Harness Have Been in Database Papers All Along!! Many of Maka's Core Authors Have a Background in Databases. When Pi's Harness v2 Documentation Came Out, Everyone in the Maka Internal Group Was Stunned Because It's Almost Exactly What We've Been…
Pi's new architecture is highly similar to that of the Maka tool, indicating that the agent harness layer is borrowing principles from database write-ahead logs and event sourcing, forming an engineering consensus.
@jakevin7: I increasingly feel that Maka is very suitable for learning Agent. For example, recently a Maka core dev raised an issue discussing DeepSeek's cache optimization. The whole process is transparent: 1 issue + 8 PRs pushed through, from usage normalization → …
A tweet and project description introducing the Maka desktop AI workbench, discussing cache optimization in Agent development, runtime engineering issues, and Maka's functional architecture as a local-first tool.
@jakevin7: Maka has been sprinting hard in the past two days, and the most noteworthy thing is out. Autonomous Task Loop v1 is live. Previously, Maka would run an agent and be done. Now it's a persistent loop: preflight → runtime → SelfCheck…
Maka has released Autonomous Task Loop v1, enabling a persistent agent loop: preflight → runtime → SelfCheck → FeedbackObservation → Decision. It supports self-checking, budget control, and state recovery, giving Maka's desktop AI workstation the foundational ability to run ongoing tasks.
I built two multi-agent AI systems with completely opposite philosophies. Here's what I've learned so far.
The author builds two multi-agent AI systems with opposite design philosophies: ChaoticAI (collaborative, org-chart-based) and S.A.G.E. with RAAC (adversarial argumentation). The post shares reflections on memory architecture and the potential synthesis of both approaches.
@jakevin7: After joining Apache, Maka has finally successfully released a version as well. The entire community is becoming increa…
Apache Maka, an AI agent workspace incubating at the Apache Software Foundation, has released a version with growing community involvement, featuring local-first design and tool execution capabilities.