Latest commit

History

4,162 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Maka Apache Maka (Incubating)

Incubating at The Apache Software Foundation

GitHub starsLicense: Apache 2.0macOS Apple SiliconWindows unsigned previewLinux not yet supportedDeepWiki: third-party AI-generated docs中文文档

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.

Download Desktop Nightly
Daily builds from main for developers and testers. Not an ASF release, not intended for production use.

Maka — Your work. Your agent.

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 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.

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 pointBest forCurrent capability
DesktopDaily interaction, file and Artifact workflows, model and permission setupElectron + React with streaming sessions, tool timelines, branching, search, and recovery
TUI / CLIUsing Maka in the current project directory or running one non-interactive Turnmaka, maka run; shares workspace and model connections with Desktop
EvalReproducible benchmark experiments across Maka and external subjectsmaka 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.

Desktop Nightly is built daily from main for developers and testers. Choose the newest Maka Desktop Nightly prerelease; after installation, the app updates automatically on the Nightly channel. It is not an ASF release and is not intended for production use. 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 packageManager is npm 11);
  • Git;
  • ripgrep, used by Runtime's Grep tool.

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

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:

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:

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. 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/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
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.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.
  • Resuming an interrupted turn is off by default. Set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1 only 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 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.

npm run refresh:model-metadata
npm --workspace @maka/core run test:dist

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

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.

About

Maka — local-first AI desktop assistant

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

4,162 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Maka Apache Maka (Incubating)

Incubating at The Apache Software Foundation

GitHub starsLicense: Apache 2.0macOS Apple SiliconWindows unsigned previewLinux not yet supportedDeepWiki: third-party AI-generated docs中文文档

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.

Download Desktop Nightly
Daily builds from main for developers and testers. Not an ASF release, not intended for production use.

Maka — Your work. Your agent.

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 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.

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 pointBest forCurrent capability
DesktopDaily interaction, file and Artifact workflows, model and permission setupElectron + React with streaming sessions, tool timelines, branching, search, and recovery
TUI / CLIUsing Maka in the current project directory or running one non-interactive Turnmaka, maka run; shares workspace and model connections with Desktop
EvalReproducible benchmark experiments across Maka and external subjectsmaka 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.

Desktop Nightly is built daily from main for developers and testers. Choose the newest Maka Desktop Nightly prerelease; after installation, the app updates automatically on the Nightly channel. It is not an ASF release and is not intended for production use. 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 packageManager is npm 11);
  • Git;
  • ripgrep, used by Runtime's Grep tool.

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

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:

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:

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. 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/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
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.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.
  • Resuming an interrupted turn is off by default. Set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1 only 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 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.

npm run refresh:model-metadata
npm --workspace @maka/core run test:dist

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

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.

About

Maka — local-first AI desktop assistant

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4,162 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Maka Apache Maka (Incubating)

Incubating at The Apache Software Foundation

GitHub starsLicense: Apache 2.0macOS Apple SiliconWindows unsigned previewLinux not yet supportedDeepWiki: third-party AI-generated docs中文文档

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.

Download Desktop Nightly
Daily builds from main for developers and testers. Not an ASF release, not intended for production use.

Maka — Your work. Your agent.

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 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.

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 pointBest forCurrent capability
DesktopDaily interaction, file and Artifact workflows, model and permission setupElectron + React with streaming sessions, tool timelines, branching, search, and recovery
TUI / CLIUsing Maka in the current project directory or running one non-interactive Turnmaka, maka run; shares workspace and model connections with Desktop
EvalReproducible benchmark experiments across Maka and external subjectsmaka 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.

Desktop Nightly is built daily from main for developers and testers. Choose the newest Maka Desktop Nightly prerelease; after installation, the app updates automatically on the Nightly channel. It is not an ASF release and is not intended for production use. 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 packageManager is npm 11);
  • Git;
  • ripgrep, used by Runtime's Grep tool.

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

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:

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:

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. 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/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
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.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.
  • Resuming an interrupted turn is off by default. Set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1 only 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 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.

npm run refresh:model-metadata
npm --workspace @maka/core run test:dist

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

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.

About

Maka — local-first AI desktop assistant

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4,162 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Maka Apache Maka (Incubating)

Incubating at The Apache Software Foundation

GitHub starsLicense: Apache 2.0macOS Apple SiliconWindows unsigned previewLinux not yet supportedDeepWiki: third-party AI-generated docs中文文档

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.

Download Desktop Nightly
Daily builds from main for developers and testers. Not an ASF release, not intended for production use.

Maka — Your work. Your agent.

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 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.

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 pointBest forCurrent capability
DesktopDaily interaction, file and Artifact workflows, model and permission setupElectron + React with streaming sessions, tool timelines, branching, search, and recovery
TUI / CLIUsing Maka in the current project directory or running one non-interactive Turnmaka, maka run; shares workspace and model connections with Desktop
EvalReproducible benchmark experiments across Maka and external subjectsmaka 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.

Desktop Nightly is built daily from main for developers and testers. Choose the newest Maka Desktop Nightly prerelease; after installation, the app updates automatically on the Nightly channel. It is not an ASF release and is not intended for production use. 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 packageManager is npm 11);
  • Git;
  • ripgrep, used by Runtime's Grep tool.

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

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:

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:

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. 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/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
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.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.
  • Resuming an interrupted turn is off by default. Set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1 only 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 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.

npm run refresh:model-metadata
npm --workspace @maka/core run test:dist

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

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.

About

Maka — local-first AI desktop assistant

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

4,162 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Maka Apache Maka (Incubating)

Incubating at The Apache Software Foundation

GitHub starsLicense: Apache 2.0macOS Apple SiliconWindows unsigned previewLinux not yet supportedDeepWiki: third-party AI-generated docs中文文档

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.

Download Desktop Nightly
Daily builds from main for developers and testers. Not an ASF release, not intended for production use.

Maka — Your work. Your agent.

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 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.

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 pointBest forCurrent capability
DesktopDaily interaction, file and Artifact workflows, model and permission setupElectron + React with streaming sessions, tool timelines, branching, search, and recovery
TUI / CLIUsing Maka in the current project directory or running one non-interactive Turnmaka, maka run; shares workspace and model connections with Desktop
EvalReproducible benchmark experiments across Maka and external subjectsmaka 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.

Desktop Nightly is built daily from main for developers and testers. Choose the newest Maka Desktop Nightly prerelease; after installation, the app updates automatically on the Nightly channel. It is not an ASF release and is not intended for production use. 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 packageManager is npm 11);
  • Git;
  • ripgrep, used by Runtime's Grep tool.

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

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:

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:

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. 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/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
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.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.
  • Resuming an interrupted turn is off by default. Set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1 only 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 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.

npm run refresh:model-metadata
npm --workspace @maka/core run test:dist

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

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.

About

Maka — local-first AI desktop assistant

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4,162 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Maka Apache Maka (Incubating)

Incubating at The Apache Software Foundation

GitHub starsLicense: Apache 2.0macOS Apple SiliconWindows unsigned previewLinux not yet supportedDeepWiki: third-party AI-generated docs中文文档

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.

Download Desktop Nightly
Daily builds from main for developers and testers. Not an ASF release, not intended for production use.

Maka — Your work. Your agent.

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 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.

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 pointBest forCurrent capability
DesktopDaily interaction, file and Artifact workflows, model and permission setupElectron + React with streaming sessions, tool timelines, branching, search, and recovery
TUI / CLIUsing Maka in the current project directory or running one non-interactive Turnmaka, maka run; shares workspace and model connections with Desktop
EvalReproducible benchmark experiments across Maka and external subjectsmaka 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.

Desktop Nightly is built daily from main for developers and testers. Choose the newest Maka Desktop Nightly prerelease; after installation, the app updates automatically on the Nightly channel. It is not an ASF release and is not intended for production use. 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 packageManager is npm 11);
  • Git;
  • ripgrep, used by Runtime's Grep tool.

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

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:

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:

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. 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/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
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.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.
  • Resuming an interrupted turn is off by default. Set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1 only 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 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.

npm run refresh:model-metadata
npm --workspace @maka/core run test:dist

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

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.

About

Maka — local-first AI desktop assistant

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4,162 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Maka Apache Maka (Incubating)

Incubating at The Apache Software Foundation

GitHub starsLicense: Apache 2.0macOS Apple SiliconWindows unsigned previewLinux not yet supportedDeepWiki: third-party AI-generated docs中文文档

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.

Download Desktop Nightly
Daily builds from main for developers and testers. Not an ASF release, not intended for production use.

Maka — Your work. Your agent.

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 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.

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 pointBest forCurrent capability
DesktopDaily interaction, file and Artifact workflows, model and permission setupElectron + React with streaming sessions, tool timelines, branching, search, and recovery
TUI / CLIUsing Maka in the current project directory or running one non-interactive Turnmaka, maka run; shares workspace and model connections with Desktop
EvalReproducible benchmark experiments across Maka and external subjectsmaka 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.

Desktop Nightly is built daily from main for developers and testers. Choose the newest Maka Desktop Nightly prerelease; after installation, the app updates automatically on the Nightly channel. It is not an ASF release and is not intended for production use. 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 packageManager is npm 11);
  • Git;
  • ripgrep, used by Runtime's Grep tool.

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

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:

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:

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. 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/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
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.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.
  • Resuming an interrupted turn is off by default. Set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1 only 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 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.

npm run refresh:model-metadata
npm --workspace @maka/core run test:dist

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

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.

About

Maka — local-first AI desktop assistant

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

4,162 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Maka Apache Maka (Incubating)

Incubating at The Apache Software Foundation

GitHub starsLicense: Apache 2.0macOS Apple SiliconWindows unsigned previewLinux not yet supportedDeepWiki: third-party AI-generated docs中文文档

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.

Download Desktop Nightly
Daily builds from main for developers and testers. Not an ASF release, not intended for production use.

Maka — Your work. Your agent.

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 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.

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 pointBest forCurrent capability
DesktopDaily interaction, file and Artifact workflows, model and permission setupElectron + React with streaming sessions, tool timelines, branching, search, and recovery
TUI / CLIUsing Maka in the current project directory or running one non-interactive Turnmaka, maka run; shares workspace and model connections with Desktop
EvalReproducible benchmark experiments across Maka and external subjectsmaka 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.

Desktop Nightly is built daily from main for developers and testers. Choose the newest Maka Desktop Nightly prerelease; after installation, the app updates automatically on the Nightly channel. It is not an ASF release and is not intended for production use. 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 packageManager is npm 11);
  • Git;
  • ripgrep, used by Runtime's Grep tool.

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

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:

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:

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. 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/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
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.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.
  • Resuming an interrupted turn is off by default. Set MAKA_RUNTIME_SAFE_BOUNDARY_RESUME=1 only 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 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.

npm run refresh:model-metadata
npm --workspace @maka/core run test:dist

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

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.

About

Maka — local-first AI desktop assistant

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages