# Maki

> A lightweight Rust terminal coding agent that reduces context token usage and is extendable with Neovim-style Lua plugins.

Maki is an open-source terminal coding agent written in Rust by tontinton. It reads, searches, edits, and runs code in a repository, and is built to spend as few context tokens as possible. It connects to many model providers and is extended through Lua plugins.

## What It Is

Maki is a TUI coding agent: point it at a repo, pick a provider, and it works through the task using built-in tools such as read, bash, edit, and batch. It runs as a native binary with no JavaScript runtime, using ratatui for the interface. It also supports headless use via `--print` with output the docs describe as compatible with Claude Code, and can be driven from editors such as Zed over the Agent Client Protocol.

## How it reduces token use

The project's main focus is context efficiency. Several tools work together:

- `index` parses supported languages with tree-sitter into a skeleton of imports, types, and function signatures with line ranges, so the model reads only the lines it needs.
- `code_execution` runs a sandboxed Python interpreter where other tools are async functions, so only printed output enters the context.
- `tool_search` hides large MCP tool sets behind one search tool and loads definitions on demand.
- `task` lets the model choose a weak, medium, or strong model for each subagent and returns a summary rather than the transcript.
- Compaction drops images and thinking blocks first, then summarizes old turns.

The author states that in the FrontierHarness Eval benchmark Maki 0.5.5 reached a 70% pass rate at $2.06 per pass, and claims it cuts cost and time by about 2x in benchmarks.

## Extending with Lua

Maki has a Neovim-style Lua plugin API. Built-in tools are themselves Lua plugins, and users can add tools, slash commands, keymaps, UI, and whole model providers by placing files in the config directory. Skills, MCP servers over stdio or HTTP, hooks, and Lua packages are also documented.

## Providers and controls

Supported providers include Anthropic, OpenAI, xAI, Google, Copilot, Ollama, llama.cpp, Mistral, DeepSeek, OpenRouter, and others, plus any API compatible with OpenAI or Anthropic formats. Bash commands are parsed with tree-sitter so permission rules see every command in a compound line, and `--yolo` skips permissions. Other documented features include long-term memory, plan mode, parallel sessions, subagent chat windows, fuzzy search, double-Escape rewind, image paste, 26 themes, and opt-in OpenTelemetry export.

## Features
- Tree-sitter based index tool producing file skeletons with line ranges
- Sandboxed code_execution tool with tools exposed as async Python functions
- Tool search for large MCP tool sets
- Subagents with weak/medium/strong model tiers
- Context compaction
- Neovim-style Lua plugin API
- Custom providers via Lua plugins
- Permission system parsing bash commands with tree-sitter
- Long-term memory tool
- Plan mode
- Parallel sessions and subagent chat windows
- MCP over stdio or HTTP
- Skills
- ACP editor integration
- Headless --print mode compatible with Claude Code output
- Opt-in OpenTelemetry export
- 26 themes
- Image attachments in prompts
- SSRF protection on webfetch

## Integrations
Anthropic, OpenAI, xAI, Google, GitHub Copilot, Ollama, llama.cpp, Mistral, DeepSeek, OpenRouter, Requesty, Z.AI, OpenCode Zen, OpenCode Go, Aperture, Zed, MCP, OpenTelemetry, rtk

## Platforms
WINDOWS, MACOS, LINUX, API, CLI

## Pricing
Open Source

## Version
v0.6.0

## Links
- Website: https://maki.sh
- Documentation: https://maki.sh/docs
- Repository: https://github.com/tontinton/maki
- EveryDev.ai: https://www.everydev.ai/tools/maki
