🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman
Markdown project management for AI assistants
Markplane stores project work as markdown files in your repo, with YAML frontmatter for structured fields and cross-links between items. A built-in context layer turns that project state into compact summaries that agents can read, and the MCP server lets them create, update, and inspect work from chat.
Builders who want their AI assistant to manage tasks, plans, and blockers from inside the repo.
You can keep project state versioned with your code and let your agent act on it without leaving the repo.
What it does
Repo-based project files
Stores tasks, epics, plans, and notes as markdown files under `.markplane/`.
AI context layer
Generates `.context/` summaries and `INDEX.md` files so agents can load only the relevant project state.
Built-in MCP server
Exposes project actions like listing, creating, updating, and syncing items through MCP.
CLI commands
Includes commands such as `markplane add`, `ls`, `show`, `start`, `done`, `dashboard`, `sync`, and `check`.
Local web UI
Provides a dashboard, kanban board, dependency graph, search, and markdown rendering.
Cross-reference and dependency tracking
Supports wiki-style links, `blocks` and `depends_on` relationships, and validation with `markplane check`.
How to get it
- 1Run
brew trust zerowand01/markplane brew install zerowand01/markplane/markplane
- 2To upgrade later
brew update && brew upgrade markplane
- 3Run
curl -fsSL https://raw.githubusercontent.com/zerowand01/markplane/master/install.sh | sh
- 4Downloads the latest release, verifies the SHA256 checksum, and installs to…
curl -fsSL https://raw.githubusercontent.com/zerowand01/markplane/master/install.sh | INSTALL_DIR=/usr/local/bin sh
- 5macOS / Linux
tar xzf markplane-v*.tar.gz # extract the binary from the archive mv markplane ~/.local/bin/ # or /usr/local/bin/ with sudo
README

Project management in your repo, built for AI collaboration.
Every developer using AI coding assistants hits the same wall: the AI is great at code, but clueless about the project. It doesn't know what you're building, what's blocked, or what's next. Meanwhile, your project data is locked in a SaaS tool that lives outside your codebase, outside your editor, outside your flow.
Markplane stores every task, epic, and plan as a markdown file inside your repo — version-controlled with git, browsable with any editor, and automatically compressed into token-efficient summaries your AI assistant can read and act on. No database, no SaaS, no context-switching.
Quickstart
- Install
markplane(see below) - Initialize in your project:
markplane init --name "My Project"(details) - Open the web UI:
markplane serve --open - Connect your AI via MCP (setup guide)
- Just tell your AI what to do in plain English: "Create a task for the login bug, mark it critical, and link it to the auth epic."
A day with Markplane
Morning — You open your AI assistant and ask "what should we work on?" It pulls the project summary via MCP — 2 tasks in progress, 1 blocked on the auth migration, the payments epic is 60% done — and suggests the highest-priority planned task.
Mid-day — You hit a design question. You talk it through with your AI, arrive at an approach, and say "create a task for this, and then let's work on an implementation plan." Markdown files appear in your repo, linked and ready.
Afternoon — "Let's implement TASK-xyz." Your AI reads the plan, understands the dependencies and project context, and builds it. When you're happy with the result: "mark it done." The context layer updates.
End of day — You commit. Your project state is versioned alongside your code. Tomorrow's session picks up where today left off — no re-explaining.
Why Markplane
- AI-native, not AI-retrofitted —
.context/summaries compress full project state into ~1000 tokens. Your AI loads only what it needs. Every design decision optimizes for LLM context windows. - Files are the database — No vendor, no subscription, no migration.
grepyour tasks.git blameyour status changes. Branch your backlog like you branch your code. - MCP server built in — AI assistants don't just read your project — they manage it. Query tasks, update status, create plans, and track dependencies without leaving your conversation.
- Zero infrastructure —
markplane initand you're done. No signup, no server, no Docker container. It's a single binary.
Agent Memory
Markplane also works as structured memory for autonomous AI agents. Instead of unstructured daily logs that degrade over time, your agent gets typed tasks, decisions, and project state — compressed into a token-efficient summary that persists across sessions.
For OpenClaw, see @zerowand/markplane-memory.
The Context Layer
Markplane automatically generates a .context/ directory with compressed, token-efficient summaries of your entire project state. This is what makes AI collaboration work — your assistant doesn't need to read every file to understand the project.
| File | What it contains | Size |
|---|---|---|
summary.md | Active epics, in-progress work, blocked items, priority queue, key metrics | ~1000 tokens |
active-work.md | Detailed view of current work with dependencies and assignees | ~500 tokens |
blocked-items.md | Items waiting on unresolved dependencies | ~200-500 tokens |
metrics.md | Status distribution, priority breakdown, epic progress | ~500 tokens |
Each directory also has an INDEX.md that lists all items with IDs and status — so an AI agent can scan the index (~200 tokens) and load only the specific items it needs, instead of reading everything.
A typical monolithic ROADMAP.md + BACKLOG.md consumes 10,000-30,000 tokens with low signal-to-noise. Markplane's equivalent project state fits in ~1000 tokens.
See the AI Integration Guide for the full context layer design, token budgets, and recommended AI reading patterns.
Installation
Homebrew (macOS and Linux)
brew trust zerowand01/markplane
brew install zerowand01/markplane/markplane
Homebrew 6.0+ requires third-party taps to be trusted before their formulae
will load. Formulae are executable Ruby, and only official taps are
pre-reviewed, so Homebrew asks you to opt in explicitly. Without the first
command you'll see Error: Refusing to load formula ... from untrusted tap.
Trust is recorded in ~/.homebrew/trust.json and is set once per machine.
To upgrade later:
brew update && brew upgrade markplane
brew update refreshes the tap's metadata — without it Homebrew still
believes your installed version is current and reports nothing to upgrade.
Shell script (macOS and Linux)
curl -fsSL https://raw.githubusercontent.com/zerowand01/markplane/master/install.sh | sh
Downloads the latest release, verifies the SHA256 checksum, and installs to ~/.local/bin/. Customize with environment variables:
curl -fsSL https://raw.githubusercontent.com/zerowand01/markplane/master/install.sh | INSTALL_DIR=/usr/local/bin sh
Pre-built binary
Download the latest release for your platform from GitHub Releases. Pre-built binaries include the web UI and require no additional dependencies.
| Platform | Archive |
|---|---|
| macOS (Apple Silicon) | markplane-v*-aarch64-apple-darwin.tar.gz |
| macOS (Intel) | markplane-v*-x86_64-apple-darwin.tar.gz |
| Linux (x86_64) | markplane-v*-x86_64-unknown-linux-musl.tar.gz |
| Windows (x86_64) | markplane-v*-x86_64-pc-windows-msvc.zip |
macOS / Linux:
tar xzf markplane-v*.tar.gz # extract the binary from the archive
mv markplane ~/.local/bin/ # or /usr/local/bin/ with sudo
Note: On macOS, binaries downloaded via a browser may be blocked by Gatekeeper. Remove the quarantine attribute with
xattr -d com.apple.quarantine ~/.local/bin/markplane, or use the shell script install which avoids this entirely.
Windows: Extract markplane.exe from the .zip to a location on your PATH (e.g., %LOCALAPPDATA%\markplane\).
Build from source
Requires Rust 1.93.0+. To include the web UI, also requires Node.js 18+.
git clone https://github.com/zerowand01/markplane.git
cd markplane
# CLI only
cargo install --path crates/markplane-cli
# CLI + Web UI (single binary)
cd crates/markplane-web/ui && npm install && npm run build && cd ../../..
cargo install --path crates/markplane-cli --features embed-ui
Initialization
Initialize Markplane in your project:
markplane init --name "My Project"
This creates the .markplane/ directory with config, templates, and starter content to explore. Use markplane init --empty to skip starter content.
.markplane/
├── config.yaml # Project settings
├── INDEX.md # Root navigation
├── roadmap/ # Epics — strategic goals and phases (EPIC-xxxxx)
├── backlog/ # Tasks — the "what" to do (TASK-xxxxx)
├── plans/ # Plans — the "how" to do it (PLAN-xxxxx)
├── notes/ # Notes — research, ideas, decisions (NOTE-xxxxx)
├── templates/ # Document templates
└── .context/ # Token-optimized summaries for AI
Web UI
Launch the local web dashboard to see your project:
markplane serve --open
This opens http://localhost:4200 in your browser with a dashboard, kanban board, dependency graph, and more.
See the Web UI Guide for keyboard shortcuts, views, and details.
AI Integration
Markplane includes a built-in MCP server that lets AI coding assistants manage your project directly. Connect your assistant, then just tell it what to do in natural language — "create a task for the login bug", "show me what's blocked", "mark TASK-fq2x8 as done".
Example with Claude Code:
Per-user — adds Markplane to your local editor configuration:
claude mcp add --transport stdio markplane -- markplane mcp
Project-wide — add a .mcp.json file at the repo root so every team member gets the integration automatically:
{
"mcpServers": {
"markplane": {
"command": "markplane",
"args": ["mcp"]
}
}
}
See the MCP Setup Guide for other editors, configuration options, and the full tool and resource catalog.
CLI
The CLI is a power-user interface for everything Markplane can do:
markplane add "Fix login redirect" --type bug --priority critical --tags auth
markplane ls # List tasks
markplane ls --priority high,critical # Filter by priority
markplane show TASK-fq2x8 # View item details
markplane start TASK-fq2x8 # Set to in-progress
markplane done TASK-fq2x8 # Mark as done
markplane dashboard # Project overview
markplane sync # Regenerate INDEX.md + .context/
markplane check # Validate cross-references
See the CLI Reference for complete command documentation.
Status Workflows
| Type | Statuses | Configurable? |
|---|---|---|
| Task | draft → backlog → planned → in-progress → done (also cancelled) | Yes — via config.yaml workflows.task |
| Epic | later → next → now → done | No |
| Plan | draft → approved → in-progress → done | No |
| Note | draft → active → archived | No |
Task statuses are fully configurable. Each status maps to one of six status categories (draft, backlog, planned, active, completed, cancelled) that control system behavior (kanban columns, progress tracking, archive eligibility). Add custom statuses like in-review, in-qa, or deployed by placing them under the appropriate category in config.yaml.
Features
- Markdown + YAML frontmatter — Structured metadata (status, priority, effort, tags) in YAML; free-form details in markdown.
- AI-optimized context layer — Generated
.context/summaries compress full project state into ~1000 tokens for AI consumption. INDEX.md routing lets AI agents load only what they need. - Web UI — Local dashboard with kanban board, dependency graph, markdown rendering, search, and dark/light themes.
- MCP server — Structured tool access for AI coding assistants (Claude, Cursor, etc.) via JSON-RPC over stdio.
- Cross-references —
[[TASK-rm6d3]]wiki-style links between items, with validation viamarkplane check. - Dependency tracking —
blocks/depends_onrelationships and bidirectionalrelatedlinks with visual dependency graphs. - Real-time sync — Changes from CLI, MCP, or file edits appear instantly in the web UI via WebSocket.
- Archive management — Archive completed items across all entity types with easy restore.
- Built-in workflows — Configurable status progressions for tasks, epics, plans, and notes.
Documentation
- Getting Started Guide — Step-by-step tutorial
- CLI Reference — Complete command documentation
- Web UI Guide — Web dashboard usage and development
- AI Integration Guide — Context layer, INDEX.md pattern, AI workflows
- MCP Setup Guide — AI tool integration
- Item Reference — Directory structure, YAML schema, ID system, cross-references
Development
See CONTRIBUTING.md for development setup and contribution guidelines.
- Architecture — System design, data model, crate responsibilities
- Releasing — Release process and versioning
License
Apache-2.0. See LICENSE for details.
© 2026 zeroWand LLC
Files in the repo
- .claude
- .github
- .markplane
- assets
- crates
- docs
- .DS_Store
- .gitignore
- Cargo.lock
- Cargo.toml
- CLAUDE.md
- CONTRIBUTING.md
- install.sh
- LICENSE
- README.md
- SECURITY.md
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More tools
The best-benchmarked open-source AI memory system. And it's free.
Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.