Meet Plank.
It's a good board.
The agent local inference deserves.
A coding agent that runs entirely on your Mac. No cloud, no API keys, no โyour request has been queued.โ Just you, your Metal GPU, and a suspiciously capable piece of wood.
brew install aovestdipaperino/tap/plank-agent
Seasoned lumber โ the stable channel. brew upgrade keeps you steady.
Why keep it local
Your code stays in the workshop.
Works in airplane mode
The only agent that respects your window seat. Zero bars, full brain.
No secrets leave the Mac
Your API keys, your NDAs, your embarrassing variable names โ all stay home.
$0.00 per token
The bill for local inference is a slightly warmer laptop. That's the whole invoice.
No round trips
Runs on the DeepSeek V4 Flash model, right there on Metal. The latency is you thinking.
What's in the box
Batteries, tools, and one plank.
Lives in your terminal
A cozy Ratatui TUI with streaming output, thinking, diffs, and a status bar that occasionally roasts you.
A full tool belt
Read, edit, glob, bash (sync & background jobs), web fetch โ the boring superpowers that actually ship code.
Speaks MCP
Plug in your own MCP servers via a tidy .mcp.json. Plank makes friends easily.
Remembers things
Persistent sessions with a real KV-cache, so it only re-reads the new stuff. Elephants, meet lumber.
Looks at your screenshots
Paste a picture and ask what broke. A vision encoder ships beside the model and runs on the same Metal device, so the pixels never leave the Mac.
Taps you on the shoulder
Native macOS notifications when a turn finishes or it needs you. No hooks, no fuss.
Written in Rust
Fast, fearless, and it compiles clean under -D warnings. The plank has standards.
Since you were last here
The plank has been busy.
A few of the newest arrivals. Turns that used to wander now finish, your memory files edit as one, and the instructions file is the one named for the job.
Minutes, not hours
A repetition guard stops a turn the moment its reasoning starts looping, and low-effort thinking is the default. Measured on one real request: from two hours with nothing to show, to a tested change in 16 minutes.
One buffer for all your memory
/memory opens user and project memory together in the built-in editor, each between markers naming its file. Save, and every edit goes back to the file it came from.
AGENTS.md, and only that
Start plank in a project with a CLAUDE.md and no AGENTS.md and it links the one to the other. A project with neither is offered /init. Headless runs touch nothing.
Real screenshots, no mockups
Yes, it actually does this.
Read the manual
The whole thing, explained.
Thirteen chapters, from brew install to branching a session mid-turn. Written for people using plank, not building it.
- 1InstallationHomebrew, channels, building from source, getting the model
- 2Getting startedyour first session, the three front ends, one-shot mode
- 3The interfacethe TUI tour, keybindings,
@completion,!commands, images - 4Slash commandsthe complete command reference
- 5Toolswhat the model can do, the sandbox, plan mode, questions, task lists
- 6Sessionssaving, resuming, checkpoints, branching, export
- 7Contextthe context window, compaction,
AGENTS.md, memory - 8Configuration
settings.json, command-line flags, precedence - 9Extending plankskills, templates, subagents, hooks, MCP servers
- 10Remote and hosted engines
serve,--remote, shared engines, providers - 11The arcadethe games that run over a live turn
- 12Advanced workflowsbranching, delegation, long sessions, repeatability
- 13Troubleshootingwhen something goes wrong
A day in the life
You talk. Plank works.
you โธ add a dark mode toggle and don't break anything ๐ชต reading src/theme.rs โฆ editing 3 files โฆ running tests โฆ โ 47 passing, 0 failed ๐ turn complete you โธ ship it plank โธ that's a you decision, friend. i'm a board.