๐Ÿชต plank
What's new Guide GitHub โ†—
Local-first coding agent ยท macOS

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.

Everything new since v2.5 โ†’

Real screenshots, no mockups

Yes, it actually does this.

plank โ€” lock-free queue in Rust
plank writing a lock-free MPSC queue in Rust: dimmed thinking text above a syntax-highlighted code block
Writing a lock-free MPSC queue in Rust. Reasoning dimmed up top, code syntax-highlighted below โ€” every token generated on your Mac.
plank โ€” /context
plank's /context report showing 12.4k of 1,000,000 tokens used on DeepSeek V4 Flash, broken down by category
The /context report. 12.4k of 1,000,000 tokens used โ€” DeepSeek V4 Flash still has 98.8% of the workshop free.
plank โ€” /btw split view
plank split view: the main task keeps counting on the left while a /btw side question is answered on the right
Split brain. The counting task keeps going on the left while a throwaway /btw question is answered on the right โ€” the aside runs on a fork of the session, so neither one waits for the other and the real conversation is never touched.

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.

Open the guide โ†’

A day in the life

You talk. Plank works.

Copied! (to your clipboard โ€” not the cloud)