DEV Community

Cover image for Apache Maka treats the agent's event log as the runtime
Reno Lu
Reno Lu

Posted on

Apache Maka treats the agent's event log as the runtime

Apache Maka's central design choice is that its event log is not a side effect of the agent. The README puts it flatly: "The log is the runtime." Every model message, tool call, permission decision and termination becomes an append-only RuntimeEvent.

That design sits alongside the project's practice of publishing benchmark runs with a full per-task record.

The event is the unit

The README's hero image walks through a single turn as a sequence of RuntimeEvents: the model speaks, runs a command, asks permission, you approve, it gets the result, edits a file, the turn ends. Each of those steps is a record, the approval included.

Logging the permission decision adds context. Tools that write files or run a shell must pass the sandbox boundary first, according to the README. Because the permission decision sits in the same log as the call and its output, the record can show what the agent did and whether the call was allowed.

Projections, not copies

The README names three consumers of the log: the UI, the next prompt, and crash recovery. It calls them "projections of that log, never the only copy." One line is easy to skim past: "Old tool output can leave the next prompt without leaving the log."

Here, context management and record keeping are separate jobs. The prompt can shrink while the history stays whole.

Recovery follows the same model, with a conservative default. Resuming an interrupted turn is off unless you set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1, which enables Desktop Safe resume, the CLI /resume command, and startup auto-resume. The README also notes that those calls hit the model and use tokens.

The live record is runtime.sqlite, stored by default under Electron's userData directory next to settings, a connection catalog, an artifacts folder and credential-vault.json. The README is candid about that last file: API keys sit in a local plaintext file readable only by your OS account, and the renderer never sees them. Older JSONL transcripts are not imported, so an upgraded workspace can show empty threads.

Benchmarks with a per-task record

The project states its measure of a harness in a sentence: how many tasks it completes and at what cost. Its stated method is to benchmark Maka against other harnesses on the same model with the official verifier, and to ship the per-task results with every report in docs/eval/.

I am not going to repeat any results here, and the README does not put numbers on its front page either. The README describes the benchmark method and points readers to the per-task results in docs/eval/.

Eval is also scoped tightly. The README says Desktop, the TUI and CLI, and Eval are thin clients of one Runtime Host, and that Eval "owns only the experiment and its scores." The architecture sketch shows Experiment, Cells, Attempts and Results, with the Runtime Host executing Maka subjects. So the agent under evaluation runs through the same execution authority that serves the desktop app and the terminal.

Running it yourself

There is no Apache release yet. The project is incubating, and the README says the signed source archive will be the official release once one exists. Nightly desktop builds come from main for macOS on Apple Silicon and Intel, Windows x64, and Linux x64 and arm64. The Windows and Linux builds are unsigned previews, and the nightlies are not intended for production use.

Building from source needs Node.js 22.19 or newer, npm, Git, and ripgrep, which the Runtime's Grep tool uses. npm ci followed by npm run dev starts the Desktop development environment with hot module reloading. Maka does not bundle a shared model account, so the first stop is Settings, where you add an API, local-model or supported account connection, test it, and pick a default. The app distinguishes configured, send-ready and experimental connection states, and an account flow that is not wired into Runtime is not presented as a usable model.

From a terminal, npm run build and then npm run cli:dev opens the TUI, while its run subcommand executes a single turn. A graph option, also reachable in the TUI through /graph on, hands the task to a durable Graph. Its implementation operators use isolated Git worktrees, which is why the source project has to be a clean Git worktree before you try it.


GitHub: https://github.com/apache/maka


Curated by Agent Palisade — practical AI for small and mid-sized businesses.

Top comments (0)