Skip to content

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

How it fits

millpond sits between the tools that notice events and the tools that do the work. Each tool stands alone, with its own Claude Code and herdr plugins, and millpond is the inbox that joins them.

The Flywheel family: one loop from what is noticed to what landsheadwater reports a new release of mise and eddy lists a recorded planning call; each prints a capture, and millpond keeps both. The release is its own excerpt, so it becomes one signal; a reader reads the meeting into three signals. Curation joins two of them into one item and makes the third, a question, an item of its own. Each item runs down the flume, which launches one agent in one worktree for it: the bump in one worktree, the export in a planner's plan, and the question in a sounding, whose accepted conclusion comes back to millpond as a new item. sluice tests each change as merged and lands both on main, and flume tidies the bump's worktree. The landed bump moves the pin back to headwater, which stops reporting that release. Flywheel is the Method the whole loop belongs to.Flywheelthe Method all of it belongs to1NOTICE2INBOX3LAUNCH4WORK5LAND6THE LOOP CLOSESthe landed bump moves the pin to 2026.10.10headwatermise 2026.10.10new release · reportedpinned · not reportededdyWispr · planningrecorded · 32 minmillpondthe inboxcapturessignalsitemsown excerptreadercurationflumeone worktreean agent on one brancha planner's plana chore for a teamsoundingworks one questionconclusion acceptedlanded · tidiedsluicetests each as mergedlands what passedmiseCSVmainbump miseCSV exportkeep JSONParquet?releasemeetingsentsentbump miseCSV exportbump miseCSV export2 signalsParquet?Parquet
The Flywheel family: one loop from what is noticed to what landsheadwater reports a new release of mise and eddy lists a recorded planning call; each prints a capture, and millpond keeps both. The release is its own excerpt, so it becomes one signal; a reader reads the meeting into three signals. Curation joins two of them into one item and makes the third, a question, an item of its own. Each item runs down the flume, which launches one agent in one worktree for it: the bump in one worktree, the export in a planner's plan, and the question in a sounding, whose accepted conclusion comes back to millpond as a new item. sluice tests each change as merged and lands both on main, and flume tidies the bump's worktree. The landed bump moves the pin back to headwater, which stops reporting that release. Flywheel is the Method the whole loop belongs to.Flywheelthe Method all of it belongs to1NOTICE2INBOX3LAUNCH4WORK5LAND6THE LOOP CLOSESthe landed bump moves the pin to 2026.10.10headwatermise 2026.10.10new release · reportedpinned · not reportededdyWispr · planningrecorded · 32 minmillpondthe inboxcapturessignalsitemsown excerptreadercurationflumeone worktreean agent on one brancha planner's plana chore for a teamsoundingworks one questionconclusion acceptedlanded · tidiedsluicetests each as mergedlands what passedmiseCSVmainbump miseCSV exportkeep JSONParquet?releasemeetingsentsentbump miseCSV exportbump miseCSV export2 signalsParquet?Parquet
The Flywheel family: one loop from what is noticed to what landsheadwater reports a new release of mise and eddy lists a recorded planning call; each prints a capture, and millpond keeps both. The release is its own excerpt, so it becomes one signal; a reader reads the meeting into three signals. Curation joins two of them into one item and makes the third, a question, an item of its own. Each item runs down the flume, which launches one agent in one worktree for it: the bump in one worktree, the export in a planner's plan, and the question in a sounding, whose accepted conclusion comes back to millpond as a new item. sluice tests each change as merged and lands both on main, and flume tidies the bump's worktree. The landed bump moves the pin back to headwater, which stops reporting that release. Flywheel is the Method the whole loop belongs to.Flywheelthe Method all of it belongs to1NOTICE2INBOX3LAUNCH4WORK5LAND6THE LOOP CLOSESthe landed bump moves the pin to 2026.10.10headwatermise 2026.10.10new release · reportedpinned · not reportededdyWispr · planningrecorded · 32 minmillpondthe inboxcapturessignalsitemsown excerptreadercurationflumeone worktreean agent on one brancha planner's plana chore for a teamsoundingworks one questionconclusion acceptedlanded · tidiedsluicetests each as mergedlands what passedmiseCSVmainbump miseCSV exportkeep JSONParquet?releasemeetingsentsentbump miseCSV exportbump miseCSV export2 signalsParquet?Parquet

One loop, from what is noticed to what lands. Flywheel is the Method it belongs to.

  1. 1headwater and eddy notice events and print captures.
  2. 2millpond keeps them as an inbox: captures become signals, and curation joins signals into items.
  3. 3millpond sends each item down flume, which launches one agent in one worktree for it, and tidies the place once the work lands.
  4. 4An item is worked in its worktree or a planner's plan. A question goes to a sounding, whose conclusion comes back as new items.
  5. 5sluice tests the work as merged and lands it.
  6. 6The landed bump moves the pin, so headwater stops reporting that release.

headwater · releases

Reports releases and advisories for what a repository declares. Its adapter part, headwater capture, prints one capture per new release. The release’s notes are its excerpt, and its signal asks for a bump.

eddy · meetings

Lists recorded meetings across meeting services. A part per service prints one capture per meeting, with the transcript as raw material and no excerpt, so a reader turns it into signals.

sounding · one question

Works one question in one session, in a worktree of its own, and ends on a conclusion you accept, send back for another round, or drop. millpond sends it an item that asks a question, keeps the accepted conclusion as the item’s record, and makes an item of each piece of work it proposes. A finding beyond the question comes back as a capture, keyed sounding/<name>/<n>.

sluice · landing

Tests a change as merged and lands it. The agent an item starts submits through sluice, and millpond records the landing against the item.

crew · teams and plans

Runs teams, plans and bolts, and calls millpond’s command line as it calls sluice’s. Its curator works an inbox through millpond’s tools, and its planner turns items into chores and units.

Flywheel · the umbrella

Built later on the same crates as millpond. It reads the same inboxes with no import, and crew becomes Flywheel.

An adapter whose source needs no other tool ships inside millpond: the folder drop, where any file in a watched folder is one capture, and the import that carries existing signal folders in once. An adapter that wraps another tool’s domain ships with that tool, so headwater’s and eddy’s parts stay theirs and millpond runs them like anyone else’s.

On its own

Inbox: a git repository of your own. Curates: a Claude session through millpond’s tools, and you accept. Items go to one worktree each, landed by sluice, or a question to a sounding.

With crew

Inbox: the partition’s flywheel branch in crew’s state repository. Curates: crew’s curator through the same tools, and the operator decides each item on crew’s rail. Items go to crew’s planner, then a team, landed by sluice.

With Flywheel

Inbox: the instance’s state repository, the same files. Curates: Flywheel’s curation session. Items go to Flywheel’s units and bolts.

Moving from one setup to the next changes the host and the curator. The adapters and the inbox stay where they are, so nothing is captured twice and Flywheel imports nothing when it takes over.

  • It never judges what a capture says. A reader session reads a capture into signals, and a curation session proposes moves. A model runs in those two places and nowhere else.
  • It never plans across items. crew’s planner orders items across teams today, and Flywheel’s does later.
  • It never works a question. A sounding does, and millpond keeps the conclusion you accept.
  • It never knows a source. An adapter lists its source and keys its events. millpond takes whatever lines it is handed, from any adapter.
  • It never lets raw material into git. A transcript stays on the host behind a pointer.

millpond and Flywheel share their foundation, flywheel-next’s crates. They hold the capture contract’s types and key rules, the signal, move and item records, the built-in adapters, the five-field cron schedule and the conformance pack, and both hosts take them. One conformance pack proves every host and every adapter part. Raw banking, the checks on a capture and the verbatim check on a reader’s excerpt are millpond’s, and Flywheel takes them in turn.