Skip to content

millpond is designed, not built. Its design book holds the design whole.

millpond

millpond is the inbox for what should change a repository's work: it lands each event once and sends one item of work to one worktree.

millpond: captures in, items outThree adapters, headwater for releases, eddy for meetings and a folder drop for files, each print one capture line on their tick. millpond lands each capture once by its key and banks its raw file on the host, outside git. A second tick prints the same release, and millpond passes it over because the key is already held. The release is its own excerpt and becomes one signal; a reader turns the meeting into three signals and the file into two. A curation session proposes a move for each of the six signals; the operator accepts and one commit writes them all: two drops, one answered, and three joined into one item, bump mise. millpond sends the item to one worktree, an agent works from its brief and submits, sluice lands the merge on main, and millpond records the landing on the item. millpond the inbox: what happened in, work out ADAPTERS, EACH ON A TICK MILLPOND · THE INBOX, A GIT REPOSITORY 0 taken 1 taken 2 taken 3 taken 3 taken · 1 passed over RAW BANK · ON THIS HOST, NEVER IN GIT headwater releases of what a repo pins waiting for its tick listing… printed 1 capture next tick · listing… printed the same release eddy recorded meetings waiting for its tick listing… printed 1 capture folder drop any file in a watched folder waiting for its tick listing… printed 1 capture release/mise/2026.10.10 notes.md meeting/wispr/7c1e04 transcript.txt folder/drop/9b2f…e81a request.eml own excerpt · 1 signal key already held · passed over own excerpt · 1 signal unread · a reader is charged read · 3 signals unread read · 2 signals release/mise/2026.10.10 a deployer, a script, a person: … | millpond land SIGNALS BATCH · A SESSION PROPOSES A MOVE FOR EACH YOU ACCEPT · ONE COMMIT WRITES THEM ALL release mise 2026.10.10 is out join meeting standup moves to 9:30 drop meeting CI needs the new mise join meeting the docs link is broken answered file a newsletter, no ask drop file please pin mise in CI join THE WORK item 1 · 3 signals joined bump mise to 2026.10.10 proposed · brief written sent to one worktree landed · 9f2c1e4 worktree · an agent with the brief item/1-bump-mise working… wt submit main landed before landed by sluice main THE BRANCH 1 Adapters print what happened, one line per event. 2 Each event lands once, by key; raw material stays off git. 3 A session proposes the moves; you accept, and items form. 4 One item goes to one worktree, and sluice lands the work.
millpond: captures in, items outThree adapters, headwater for releases, eddy for meetings and a folder drop for files, each print one capture line on their tick. millpond lands each capture once by its key and banks its raw file on the host, outside git. A second tick prints the same release, and millpond passes it over because the key is already held. The release is its own excerpt and becomes one signal; a reader turns the meeting into three signals and the file into two. A curation session proposes a move for each of the six signals; the operator accepts and one commit writes them all: two drops, one answered, and three joined into one item, bump mise. millpond sends the item to one worktree, an agent works from its brief and submits, sluice lands the merge on main, and millpond records the landing on the item. millpond the inbox: what happened in, work out ADAPTERS, EACH ON A TICK MILLPOND · THE INBOX, IN GIT 0 taken 1 taken 2 taken 3 taken 3 taken · 1 passed over RAW BANK · THIS HOST, NEVER IN GIT headwater releases waiting listing… printed 1 listing again… printed it again eddy meetings waiting listing… printed 1 folder drop files waiting listing… printed 1 release/mise/2026.10.10 notes.md meeting/wispr/7c1e04 transcript.txt folder/drop/9b2f…e81a request.eml own excerpt · 1 signal held · passed over own excerpt · 1 signal unread read · 3 signals unread read · 2 signals release/mise/2026.10.10 SIGNALS BATCH · A SESSION PROPOSES ACCEPTED · ONE COMMIT release mise 2026.10.10 is out join meeting standup moves to 9:30 drop meeting CI needs the new mise join meeting the docs link is broken answered file a newsletter, no ask drop file please pin mise in CI join THE WORK item 1 · 3 signals joined bump mise to 2026.10.10 proposed · brief written sent to one worktree landed · 9f2c1e4 worktree · an agent with the brief item/1-bump-mise working… wt submit main landed before landed by sluice main THE BRANCH 1 Adapters print what happened. 2 Each event lands once, by key. 3 A session proposes; you accept. 4 One item, one worktree, landed.

Some events outside a repository should change its work: a release of something it depends on, a decision in a meeting, a file someone sends. Each arrives somewhere different, in a different shape, and most of them ask for nothing. millpond gives them one way in and one way out.

Lands each event once

An adapter keys every event it reports. millpond takes a key once, so an adapter lists a window again without harm and two hosts never land the same release twice.

Keeps the raw material off git

The inbox is a git repository of small records. A transcript or a full set of release notes stays on the host behind a pointer, so a meeting’s words never reach GitHub.

Works a backlog in batches

A Claude session proposes one move for each of fifty signals. You change the rows you disagree with, and one commit writes the batch.

Sends one item to one worktree

Curation joins signals into items. millpond starts an agent on an item’s brief in a worktree of its own, and records sluice’s landing against the item. An item that asks a question goes to a sounding.

millpond is designed and not built. Its design lives in agentplot/blueprints with the design of every tool around it, and its statement comes next. The roadmap says what gets built in what order.