Maka Apache Maka (Incubating)

Apache Maka (Incubating) is a high-performance agent workspace that keeps a complete record of everything it did.

Website · Documentation · Download · 中文文档

GitHub stars License: Apache 2.0 Platforms: macOS, Windows preview, Linux preview

One turn of RuntimeEvents: the model speaks, runs a command, asks permission, you approve, it gets the result, edits a file, the turn ends. ## What Maka is An agent harness exists to finish tasks. We hold it to one measure: how many it completes and at what cost. We publish every run: same model, same official verifier, full per-task record. - **Measured, not claimed.** Maka is benchmarked against other harnesses on the same model with the official verifier, and the per-task results ship with every report in [`docs/eval/`](./docs/eval). - **The log is the runtime.** Every model message, tool call, permission decision and termination is an append-only RuntimeEvent. The UI, the next prompt and crash recovery are projections of that log, never the only copy. Old tool output can leave the next prompt without leaving the log. - **Your machine, your model.** Sessions, settings and run records stay local. You bring the model: a cloud API, a local model or a compatible gateway. - **One Runtime Host.** Desktop, the TUI and CLI, and Eval are thin clients of one execution authority; Eval owns only the experiment and its scores. The [website](https://maka.apache.org/en/) walks through one turn of the log and links the published runs. [ARCHITECTURE.md](./ARCHITECTURE.md) has the system map. ## Get Maka **Apache Releases**: The latest Apache release is 0.2.0 (incubating). The signed source archive is the official release; packages distributed elsewhere are convenience artifacts. See the [downloads page](https://maka.apache.org/en/downloads/) and [`.github/ASF_SOURCE_RELEASE.md`](./.github/ASF_SOURCE_RELEASE.md) for candidate criteria, signing procedures, and verification steps. **Development testing**: To contribute or help test unreleased changes, see [CONTRIBUTING](./CONTRIBUTING.md) and the [development mailing list](https://lists.apache.org/list.html?dev@maka.apache.org). Development builds are not approved Apache releases. **Build from source**: To compile and run Desktop, the TUI, or the CLI, see the [Build from source](#build-from-source) section below. ## Build from source ### Requirements - Node.js 22.19 or newer on the 22 line, or Node.js 24 or newer (CI uses Node.js 24; Node.js 23 is not supported); - npm (the lockfile and scripts use npm; the current `packageManager` is npm 11); - GnuPG to verify a release archive, or Git for contributor development; - `ripgrep`, used by Runtime's `Grep` tool. ### Build an Apache release Download and verify the signed source archive using the [downloads page](https://maka.apache.org/en/downloads/). Extract it, then build and start Desktop from the extracted directory: ```sh npm ci npm run dev:full ``` ### Contributor development For unreleased development builds, start from a Git checkout: ```sh 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: ```sh npm run dev:full ``` Direct Peer and Peer Mesh development additionally requires Rust stable 1.98 or newer and the platform linker (Xcode Command Line Tools on macOS, MSVC Build Tools on Windows). Use the peer-enabled entry point so the native addon is built before Desktop starts: ```sh npm run dev:peer # HMR npm run dev:full:peer # full build ``` If dependencies were installed with `ELECTRON_SKIP_BINARY_DOWNLOAD=1`, install the Electron platform binary before starting: ```sh node node_modules/electron/install.js ``` ### First run Maka does not bundle a shared model account. On first launch: 1. Open `Settings → Models`; 2. Add an API, local-model, or supported account connection; 3. Test it and choose a default model; 4. 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](./packages/cli/README.md). The commands below run the development CLI from a source checkout. Build the workspaces first: ```sh npm run build ``` Then start the TUI or run one Turn: ```sh 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 `. 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`](./packages/eval). ## Architecture The backend spine is: ```text 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](./ARCHITECTURE.md). It provides the system map, code boundaries, problem-oriented reading paths, and links to the deep dives under `docs/architecture/`. ## Repository layout ```text 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/mcp/ Provider-neutral Model Context Protocol client integration packages/runtime/ AgentRun, model adapters, tools, context, and recovery packages/runtime-host/ Single-owner Runtime Host lifecycle, protocol, and client bootstrap packages/eval/ Experiment cells, attempts, results, and executor/subject adapters packages/computer-use/ Computer-use backend selection, host lifecycle, and protocol adapters packages/cli/ TUI and non-interactive CLI packages/ui/ Shared conversation, Markdown, Artifact, and UI primitives native/ Rust: the Runtime Host direct-peer addon and Windows task launcher, and the gitoxide helper website/ Astro source for maka.apache.org docs/ Architecture, product, security, privacy, and test contracts scripts/ Build hygiene, visual checks, smoke tests, and release helpers skills/ Agent skills shipped with the repository patches/ Patches applied to npm dependencies at install experiments/ Platform experiments, currently the Windows sandbox smoke scripts ``` ## Local data and recovery Workspace data lives under Electron `userData` by default: ```text /workspaces/default/ runtime.sqlite settings.json # UI and workspace preferences connection-catalog.json # provider and model metadata credential-vault.json # local provider secrets artifacts/ ``` - When editing `settings.json` or `mcp.json` by hand, save the file as UTF-8 (preferably without a BOM). A UTF-8 BOM is accepted. Maka does not guess other encodings for files without a BOM or automatically convert UTF-16; explicitly convert those files to UTF-8 in your editor before using them. - 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.sqlite` is the live record. Older JSONL transcripts and Electron `safeStorage` credential files are not imported; an upgraded workspace can show empty threads, and those credentials must be entered again. - Explicit interrupted-turn resume is available by default in Desktop and through CLI/TUI `/resume`; a successful continuation calls the model and uses tokens. Set `MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=0` to disable new resume planning, or `=1` to additionally allow automated activation and model-driven WorkHub resume. An activation sent to an existing Session still processes its new stimulus by default. Startup recovery repairs already admitted continuations but does not automatically select an ordinary failed or cancelled turn. Details: [SECURITY.md](./SECURITY.md), [privacy](./docs/workspace-privacy-context.md), [resume](./docs/architecture/runtime-resume-architecture.md). ## Development and verification Before sending a change, read [CONTRIBUTING.md](./CONTRIBUTING.md). Common repository-level commands: ```sh npm run build npm run typecheck npm test npm run check:release ``` Run one workspace in isolation: ```sh npm --workspace @maka/runtime run test:dist npm --workspace @maka/eval run test:dist npm --workspace @maka/desktop run test:dist ``` 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. ```sh npm run refresh:model-metadata npm --workspace @maka/core run test:dist ``` Desktop real-window and visual verification: ```sh 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 - [Website](https://maka.apache.org/en/) - [Documentation index and authority map](./docs/README.md) - [Backend architecture](./ARCHITECTURE.md) - [Product design](./DESIGN.md) - [Contributing guide](./CONTRIBUTING.md) - [Security policy](./SECURITY.md) - [DeepWiki](https://deepwiki.com/apache/maka), third-party AI-generated documentation the project does not maintain ## License Maka is licensed under the [Apache License 2.0](./LICENSE). See [NOTICE](./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. > [!NOTE] > 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](./DISCLAIMER-WIP) records the issues the project is currently aware of. > [!IMPORTANT] > Maka is under active development. Data formats, CLI commands, and experimental capabilities may still change.