Skip to content

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

How it works

A sounding is one question, worked by one agent session in one place, ending on one conclusion. The operator decides each conclusion. sounding is a standalone tool, and it works the same on its own, with millpond, with crew or under Flywheel.

sounding open writes question.md: the question and its sources. A question reaches sounding three ways:

  • From millpond, as an item that asks a question: whether to take a major release, or how to settle what a meeting left open. Its sources are the item’s signals, the captures they came from, and any earlier conclusion on the subject.
  • From any Claude Code session, with /sound <question>. The sounding opens while that session goes on with its own work.
  • From a key in another tool’s herdr plugin, such as headwater’s on a release that needs judgment.

The session works in a worktree of the repository the question is about, on the branch sounding/<name>. It may write prototype code there to test an answer, and that code never lands from the sounding’s branch: sounding’s Claude Code plugin refuses a sluice submission from any sounding/* branch. The work you accept reaches main the way any work does, through an item’s worktree or crew’s plan, and through sluice.

The three exits, the stop check and the timeboxA session works the question on sounding/take-mise-2027. It needs to know whether the Linux runners are in scope, runs sounding ask, and waits: a card asks the operator, who answers yes, test both, and the answer goes back to the session. It finds that the docs pin mise 2026.9 too, a finding beyond its question, and runs sounding offer: the finding goes to millpond land as a capture of its own under the key sounding/take-mise-2027/1, its own excerpt of kind ask, and becomes one signal. It tries to stop with no conclusion and no note, and the stop check sends it back to work. Its 45 minute timebox runs out, and it runs sounding conclude with what it knows: conclusion.md holds the answer, its evidence, the work it proposes and what stays open, for the operator to decide. ONE SESSION sounding/take-mise-2027 round 1 working waiting on you working stopping working concluding ended working the question Linux runners in scope? sounding ask answer: test both the docs pin mise 2026.9 sounding offer done: stop stop check: sent back timebox up sounding conclude timebox · 45 min up: it concludes with what it knows stop check a conclusion, or a note for round 2 no conclusion, no note: sent back a conclusion, or a note for round 2 THREE EXITS sounding ask sounding ask sounding offer sounding offer sounding conclude sounding conclude a card for you a card · from sounding take-mise-2027 Do the Linux runners count? waiting on you you: yes, test both millpond millpond land sounding/take-mise-2027/1 the inbox: captures, signals, items its own excerpt, kind ask · 1 signal conclusion.md, not yet written conclusion.md · round 1 the answer, its evidence, the work it proposes, and what stays open you decide 1 Ask: a question for you, on a card. 2 Offer: a finding beyond it, to millpond. 3 The stop check sends it back to work. 4 Conclude: when it knows, or when time is up.
The three exits, the stop check and the timeboxA session works the question on sounding/take-mise-2027. It needs to know whether the Linux runners are in scope, runs sounding ask, and waits: a card asks the operator, who answers yes, test both, and the answer goes back to the session. It finds that the docs pin mise 2026.9 too, a finding beyond its question, and runs sounding offer: the finding goes to millpond land as a capture of its own under the key sounding/take-mise-2027/1, its own excerpt of kind ask, and becomes one signal. It tries to stop with no conclusion and no note, and the stop check sends it back to work. Its 45 minute timebox runs out, and it runs sounding conclude with what it knows: conclusion.md holds the answer, its evidence, the work it proposes and what stays open, for the operator to decide. ONE SESSION sounding/take-mise-2027 round 1 working waiting on you working stopping working concluding ended working the question Linux runners in scope? sounding ask answer: test both the docs pin mise 2026.9 sounding offer done: stop stop check: sent back timebox up sounding conclude timebox · 45 min timebox up: it concludes with what it knows stop check ends only on a conclusion, or a note for the next round no conclusion, no note: sent back to work ends only on a conclusion, or a note for the next round THREE EXITS sounding ask sounding ask sounding offer sounding offer sounding conclude sounding conclude a card for you a card · from sounding take-mise-2027 Do the Linux runners count? waiting on you you: yes, test both millpond millpond land sounding/take-mise-2027/1 the inbox: captures, signals, items its own excerpt, kind ask · 1 signal conclusion.md, not yet written conclusion.md · round 1 the answer, its evidence, the work it proposes, and what stays open you decide 1 Ask puts a question on your card. 2 Offer sends a finding to millpond. 3 The stop check sends it back to work. 4 It concludes, at the latest on time.
One round of one session. It asks you a question and waits, offers millpond a finding beyond its question, is sent back by the stop check, and concludes when its timebox runs out.

The session leaves by one of three commands:

Exit What follows
sounding conclude Writes conclusion.md: the answer, its evidence, what it would change, the work it proposes, and what stays open. You decide it.
sounding offer Hands a finding beyond the question to millpond land as a capture of its own. The finding is its own excerpt, of kind ask, asserted by the sounding, under the key sounding/<name>/<n>.
sounding ask Puts a question only you can answer on a card. The session waits for your answer.

An offer keeps the session on its question. Whatever else it notices goes to the inbox, where curation gives it a move like any other signal.

Two guards hold each round to its question:

  • The stop check keeps the session from ending without a conclusion or a note saying where the next round would start.
  • The timebox limits each round. When it runs out, the session concludes with what it knows.
Round 1 goes back with a note and is kept as rounds/1.md. Round 2 is accepted: millpond keeps it as the item's record, and the work it proposes arrives as two new items.

You decide each conclusion on a card, in sounding’s herdr plugin, or on crew’s rail:

  • Accept settles the question. millpond keeps the conclusion as the item’s record, and each piece of work the conclusion proposes becomes an item of its own, or an entry in crew’s plan.
  • Go on starts the next round in the same worktree. The conclusion moves to rounds/<n>.md, and your notes join the next session’s question.
  • Drop records the reason and removes the worktree.

Curation never judges a moved signal again, and nobody asks you to approve the same thing twice. So an accepted conclusion enters the inbox as the record that settles signals: when a later signal arrives on the same subject, curation answers it by naming the conclusion. Only offers come back as signals.

  • The command line: sounding open, list, conclude, offer, ask, accept, go-on and drop.
  • The Claude Code plugin gives every session /sound <question>. A sounding’s own session gets its question, its sources and its earlier rounds from a hook at its start, and the stop check at its end. The plugin serves soundings, conclusion, accept, go_on and drop over MCP, and refuses a sluice submission from a sounding/* branch.
  • The herdr plugin lists the open soundings in the sidebar, each with its round and its state: working, waiting on you, or parked. Each sounding has a workspace, with the session’s pane and its conclusion beside it.
sounding's herdr plugin: the sidebar, a workspace and the keysA herdr window. Its sidebar lists the open soundings, each with its round and its state: ci-on-linux, round 2, waiting on you; docs-search, round 1, parked. The start key adds take-mise-2027, round 1, working, and the open key shows its workspace: the session in one pane, its conclusion beside it. The session concludes and the sounding waits on you. The notes key opens the conclusion in plannotator, where a note is typed against what stays open. The go on key starts round 2 in the same worktree: the conclusion is kept as rounds/1.md and the note joins the question. Round 2 concludes, the accept key settles it, and it leaves the list. The open key moves to ci-on-linux; then the drop key drops docs-search, recording the reason and removing its worktree. herdr · sounding's plugin SOUNDINGS take-mise-2027 round 1 · working round 1 · waiting on you round 2 · working round 2 · waiting on you accepted ci-on-linux round 2 · waiting on you docs-search round 1 · parked dropped · worktree removed no sounding open take-mise-2027 · round 1 take-mise-2027 · round 2 ci-on-linux · round 2 docs-search · parked the session read question.md ran CI on mise 2027.1 sounding conclude ended · conclusion ready question.md + your note ran CI on Linux too sounding conclude ended · conclusion ready ended · conclusion ready no session running conclusion.md not written yet conclusion.md · round 1 Take 2027.1 once CI passes --locked. proposes: the scripts, the bump open: the Linux runners plannotator · conclusion.md Take 2027.1 once CI passes --locked. open: the Linux runners your note check the Linux runners too go on: round 2 in the same worktree rounds/1.md the conclusion, kept question.md and your note conclusion.md · round 2 Take 2027.1 once CI passes --locked; Linux passes too. proposes: the scripts, the bump accepted the item settled; the work it proposes goes on as new items conclusion.md · round 2 Run CI on Linux and macOS. proposes: one workflow change rounds/1.md · a note for round 2 start from the search index dropped reason recorded, worktree removed KEYS start start open open notes notes go on go on accept accept drop drop conclusion in plannotator, for notes
sounding's herdr plugin: the sidebar, a workspace and the keysA herdr window. Its sidebar lists the open soundings, each with its round and its state: ci-on-linux, round 2, waiting on you; docs-search, round 1, parked. The start key adds take-mise-2027, round 1, working, and the open key shows its workspace: the session in one pane, its conclusion beside it. The session concludes and the sounding waits on you. The notes key opens the conclusion in plannotator, where a note is typed against what stays open. The go on key starts round 2 in the same worktree: the conclusion is kept as rounds/1.md and the note joins the question. Round 2 concludes, the accept key settles it, and it leaves the list. The open key moves to ci-on-linux; then the drop key drops docs-search, recording the reason and removing its worktree. herdr · sounding's plugin SOUNDINGS take-mise-2027 round 1 · working round 1 · waiting on you round 2 · working round 2 · waiting on you accepted ci-on-linux round 2 · waiting on you docs-search round 1 · parked dropped · worktree removed no sounding open take-mise-2027 · round 1 take-mise-2027 · round 2 ci-on-linux · round 2 docs-search · parked the session read question.md ran CI on mise 2027.1 sounding conclude ended · conclusion ready question.md + your note ran CI on Linux too sounding conclude ended · conclusion ready ended · conclusion ready no session running conclusion.md not written yet conclusion.md · round 1 Take 2027.1 once CI passes --locked. proposes: the scripts, the bump open: the Linux runners plannotator · conclusion.md Take 2027.1 once CI passes --locked. open: the Linux runners your note check the Linux runners too go on: round 2 in the same worktree rounds/1.md the conclusion, kept question.md and your note conclusion.md · round 2 Take 2027.1; Linux passes too. proposes: the scripts, the bump accepted the item settled, and its work sent to millpond as new items conclusion.md · round 2 Run CI on Linux and macOS. proposes: one workflow change rounds/1.md · a note for round 2 start from the search index dropped reason recorded; worktree removed KEYS start start open open notes notes go on go on accept accept drop drop
Keys start, open, accept, send back and drop a sounding, and open its conclusion in plannotator for notes.

A sounding runs one of two ways: unattended, ending on a card, or with you, in a pane beside you as a conversation (--with-me).