Every Claude Code session, on one board.
See what is running, what each session is working on, what is blocked on what, and what waits on you. Rivulets watches your sessions and never drives them.
What you see
A tree rooted at your topics. Each conversation is a column with its state, its last message and its tasks; the subagents it spawned sit under the task they work on, and a blocker hangs beside the task it holds back.
The needs-you queue lists what waits on you: a permission prompt, a question, a stopped session, a blocker only you can clear, a task you noted and have not started.
How it gets there
Claude Code hooks run riv emit at every prompt, tool call and stop. An agent
says more with riv status: the task it is on, what blocks it, when it is done.
riv also notices the pull requests a session opens and the tests it runs. The
board follows the server's stream and redraws as rows change.
The clerk
Agents forget to call riv status. After each prompt and each stop the clerk
judges what the turn means for the board and writes the tasks, blockers and topics it
finds, marked as its own.
It sees your prompts and the agent's last message only with your consent, and it stops at a monthly budget.
How it works
- Join with an invite link and make a passkey.
- Paste one line into Claude Code on each Mac; your agent installs riv and the plugin and signs in.
- Every session shows up on the board as it starts.
Get started
Rivulets is invite-only: request beta access above, and an invite link follows by email.
Once you are in, paste this into Claude Code on each Mac that runs sessions:
Set up Rivulets on this Mac: run `curl -fsSL https://rivulets.d.nevyn.dev/setup.md` and follow it.