sous 0.11.0 · 4 agents, one list

Everything waiting on you, in one list.

AI makes it easy to keep ten projects moving at once. sous keeps track of them: the reviews people asked you for, what you are waiting on, and the work you left behind in git. It shows up on its own when you open a terminal or an agent starts a session.

brew install bilal-/tap/sous && sous setup
View on GitHub
❯ soussous · 3 on you · 2 on others · 3 unfinished   on you  1               billing                   send the pricing copy to Sam                                  5d  3               api                       check the index after the deploy                              20h  6               billing                   run needs you · Fix the flaky invoice test. · "Two fixtures…  0m   on others  2               mobile-app                waiting on app store review                                   4d  5               api                       Priya is reviewing the facets PR                              1d   unfinished  s:387a4a84f0a2  chime                     feat/widget has no upstream                                   5d  s:74e99ca18a18  chime                     2 files uncommitted · feat/widget                             5d  s:59b327734862  api                       3 commits unpushed · main                                     2h  (… cut short: sous show <n> for a whole note)   5 checked · 0 unavailable · as of 12:48 · sous snooze <id> to hide a row
The board

Three questions, answered every time you look.

Every row says how long it has waited. Age is the only order: no priorities, no due dates, no sprints.

On you

Reviews people asked you for, and the notes you marked as yours.

On others

What you are waiting for: an app store review, a colleague, a reply.

Unfinished

Work you left behind in git: files not committed, commits not pushed, stashes.

sous is an index, not a tracker. Your work stays where it lives, in git, GitHub, GitLab or a project's FOLLOWUPS.md. sous keeps pointers and short notes, and works everything else out again each time.

For your agents

Every session starts where you left off.

When an agent starts in a project, sous hands it a short brief: the branch, the last commit, how the last session ended, and what is waiting. No prompt to write, no context to paste.

  • Claude Code
  • Codex
  • Antigravity
  • opencode
  • and any agent that reads ~/.agents/skills
[sous] The user's list of what is waiting on them across projects. Run sous help for how to use it.[sous] Runs waiting on the user:  6 billing: run needs you · Fix the flaky invoice test. · "Two fixtures cover the flaky test… · sous reply 6 "<answer>"api · main · last commit 1h ago  "Retry a slow shard"  3 commits unpushed · mainlast session · claude · 2026-10-03 · ended: "The facets are cached and paged. Next: retry a slow shard, then deploy."on you: 1 · on others: 1 · ideas: 1  3  check the index after the deploy  20h  5  Priya is reviewing the facets PR  1d  (them)  4  try a smaller shard size  2d  (idea)   sous note "…" to add · sous done <n> to close · sous kind <n> me to escalate
Hand it off

Give a task to an agent. sous keeps the ticket.

sous go --run starts your agent in its own git worktree, in the background. When it needs you, or it is done, the run is on your board, with the one command that moves it on.

  1. 1

    Hand it over

    A brief that says what, why and what done means. Retrying it never starts two.

    ❯ sous go billing --run "Fix the flaky invoice test.
    
    Done means it passes 20 runs in a row."
  2. 2

    It asks, you answer

    The agent works on its own branch. A question waits on your board, not in a tab.

    6  billing  Fix the flaky invoice test.  (me · just now)   run needs you · Two fixtures cover the flaky test. Keep the old one or the new one? (claude)   branch sous/run-6 · worktree ~/.sous/runs/57240bc16a9e/worktree · log ~/.sous/runs/57240bc16a9e/log   next: sous reply 6 "<answer>" · sous done 6
  3. 3

    Review, then clean up

    Reply and it carries on. When it is done, review the branch; sous done --clean tidies the worktree and keeps the work.

Agent first

Built for the agent calling it, and for you.

  • Every command takes --json. Errors too.
  • Safe to retry. The same note twice is one note; the same run twice is one run.
  • Always says what is next. Every answer ends with the command to run.
  • Never waits for input, and never holds up a session.

sous follows the AXI guidelines for agent friendly command line tools.

{  "id": "3",  "did": "already_noted",  "ref": null,  "next": [    "sous done 3"  ]}
Plugins

Four small doors. Any language.

A plugin is any program named sous-<kind>-<name> that reads its arguments and writes a line. The built in git, GitHub, GitLab and agent support go through the same doors.

sous-signal-*

A signal finds what is waiting on you.

pull requests, CI runs, tickets, calendar holds

sous-backend-*

A backend is where a filed note goes.

Jira, Linear, Gitea, a plain text file

sous-launcher-*

A launcher starts an agent or editor in a project.

your agent, your editor

sous-runner-*

A runner does a task in the background, and says how it is going.

an agent on a server, a queue of reviewed changes

Honest by design

Nothing made up. Nothing sent anywhere.

Missing never looks like zero

If GitHub cannot be reached, the board says ? on you (github failed), not a calm zero, and keeps what it knew, marked stale.

Your machine, your tools

No account, no API key, no background service. sous calls the git,gh and glab you already use.

The tracker wins

Close a filed issue where it lives and your note closes too. If sous cannot check, the row says so.

Starting is always fast

The session brief and sous here never wait on the network, so an agent never waits on sous.

Set up in a minute. Then forget it is there.

sous setup finds your projects, adds itself to your shell and your agents, and tells you what it did. Run it again any time.

brew install bilal-/tap/sous && sous setup

macOS and Linux. Read every command or thedesign.