README.md

June 29, 2026 ยท View on GitHub

An AI coding agent optimized for minimal use of context tokens, while providing a great user experience.

Features

Context efficiency

  • index tool - uses tree-sitter to parse supported programming languages to produce a high level skeleton of a file, with exact start-end lines of each item (e.g. a function's implementation is in lines 150-165). Encouraged to be used before reads. For my usage it adds 59 tok/turn but saves 224 tok/turn on read calls, saving 165 tok/turn.
  • code_execution tool - uses monty to run an interpreter that has all other tools available as async functions. Maki uses it to filter / summarize / transform / pipe data to other tools as input, without it ever reaching and polluting the context window. Sandbox limited by time & memory.
  • task tool - when delegating work to subagents, the AI chooses whether to run weak / medium / strong model of used provider. Think haiku / sonnet / opus.
  • System prompt, tool descriptions, and tool examples are all concise, I've made sure not to bloat your context.
  • Uses rtk if you have it installed, disable with --no-rtk. Saves ~50% of bash output tokens. Remember bash is just 12% of total token usage, so 6% is nice, but saving on reads (65% of total) by using index gave me more benefit. I think I'll do bash output filtering like this myself in a future release.

User experience

  • SUPER fast startup, 60 FPS, and light on memory. Not running any JavaScript, using ratatui for TUI. Even the splash screen animation uses SIMD.
  • Philosophy of not hiding anything - while other coding agents hide information as models improve (e.g. not showing number of lines read), maki leaves you in control.
  • UI fits everything well on my small screen laptop.
  • Full visibility of subagents - each subagent gets their own "chat window" you can easily navigate between using /tasks (Ctrl-X), or Ctrl-N/P.
  • Sensible permission system - when the agent runs git diff && rm -rf /, what do you think will happen in your current coding agent? It will treat it as git *. Maki uses tree-sitter to parse the bash command and figure out the permissions requested are git * and rm *. Disable using --yolo.
  • SSRF protection on webfetch calls.
  • A memory tool to keep long term context, just tell maki to remember something (sometimes it uses it automatically). Managed via /memory (view / edit / delete memories).
  • Fuzzy search with Ctrl-F.
  • /btw to run a command with the chat history without interfering with the current session.
  • Rewind on Escape-Escape (no code rewind yet, only chat history).
  • Attach images in prompts.
  • 26 of the most popular themes.
  • Resume sessions.
  • Skills & MCPs.
  • Plan mode.
  • Run bash commands using !, or !! if you want maki to not know about it.
  • /cd to change dir.
  • Use --print --output-format stream-json to run UI-less. Output is compatible with Claude Code, so you can easily replace your existing solutions (although I wouldn't recommend that, maki is very new).

Supported providers

  • Anthropic - ANTHROPIC_API_KEY only (using OAuth is against TOS). Bedrock supported via CLAUDE_CODE_USE_BEDROCK=1.
  • OpenAI - OPENAI_API_KEY and OAuth via maki auth login openai.
  • Google - GEMINI_API_KEY.
  • Copilot - GH_COPILOT_TOKEN or an existing GitHub Copilot sign-in at ~/.config/github-copilot/.
  • Ollama - OLLAMA_HOST for local (e.g. http://localhost:11434), or OLLAMA_API_KEY for cloud.
  • llama.cpp - LLAMA_CPP_HOST (e.g. http://localhost:8080), optionally LLAMA_CPP_API_KEY.
  • Mistral - MISTRAL_API_KEY.
  • Z.AI - ZHIPU_API_KEY.
  • DeepSeek - DEEPSEEK_API_KEY.
  • OpenRouter - OPENROUTER_API_KEY.
  • Synthetic - SYNTHETIC_API_KEY.

Dynamic providers - drop an executable script into ~/.config/maki/providers/ to add custom providers or proxies. See docs for details.

Installation

# Download and read the script first (don't blindly trust shell scripts).
curl -fsSL https://maki.sh/install.sh -o install.sh
cat install.sh

# Then run.
chmod +x install.sh && sh install.sh

One-liner

curl -fsSL https://maki.sh/install.sh | sh

Living on the edge (main branch)

cargo install --locked --git https://github.com/tontinton/maki.git maki

With Nix

nix run github:tontinton/maki

Or download a pre-built binary from GitHub Releases.

ACP

Run maki acp or configure your ACP supporting editor to use maki, e.g. in Zed's settings.json:

"agent_servers": {
  "Maki": {
    "default_config_options": {
      "model": "deepseek/deepseek-v4-flash"
    },
    "type": "custom",
    "command": "maki",
    "args": ["acp"],
    "env": {}
  }
}

Documentation

More info at the official docs.

DISCLAIMER: >90% of code in maki was written by maki, guided by humans. The code is not as good as what I would've made in the artisanal hand-made style. But it's also not slop / vibe coded. I just think people should be honest about their use of AI in projects in this era.

Extending with Lua

Currently working on a refactor so maki is a core agent UI loop with features like tools, UI elements, and storage all controlled by Lua plugins. This will allow you to customize the hell out of maki.

Status: all tools but batch and code_execution are Lua plugins (in the ./plugins dir).

Example config

tontinton/makiconf - includes a semble tool (Lua code) for semantic code search, and an ast-grep MCP server for AST-based search and replace.