Watch over your agents’ shoulder.
See your coding agents work, live. shoulder follows Claude Code, Codex, Gemini CLI and opencode through your project. It shows the file that each agent reads or edits, the diff against your last commit, and the commands that it runs. It runs in your terminal, in your terminal theme.
go install github.com/bjarneo/shoulder@latest
Then run shoulder in your project. You can also download a binary for Linux or macOS.
snake.js one line at a time. Codex adds tests in the same project, and the view jumps to its edit. 47 seconds, no sound.One screen for every agent in the project.
Start your agents as usual. shoulder finds their sessions in the project and shows them side by side. You do not configure anything, and the agents do not know that shoulder is there.
Text uses your default colors and the 16 ANSI colors of your terminal. When you change the terminal theme, shoulder changes with it.
- AGENTS
- Each agent with its state, its file and line, and how full its context window is.
- FILE
- The file of the focused agent. A cursor shows where it reads or edits. Old lines show as red, new lines as green.
- TERMINAL
- The commands of the focused agent and their output.
- ACTIVITY
- Each read, search, edit, command and reply, with the time.
- SPLITS
- Press
sto see one pane for each agent.
The view goes where the work is.
When an agent edits a file in your project, shoulder jumps to that agent and that file. When the focused agent finishes, shoulder moves to an agent that still works.
shoulder waits 1.5 seconds between two jumps, so the view does not flicker. To keep one agent in view, press 1 to 9. To turn auto focus on again, press a.
- A2 codex started · Add tests for the snake logic.
- → A2 codex edits snake.test.js
- A2 codex · node --test → ✓ ok
- → A1 claude edits snake.js
- A1 claude done · the 4 tests pass
It reads the logs that your agents already write.
shoulder only reads. It does not send input to an agent, it does not change files, and it does not connect to the network.
| Agent | Session data | Details |
|---|---|---|
| A1Claude Code | ~/.claude/projects/ | Main sessions and subagents |
| A2Codex | ~/.codex/sessions/ | Reads with sed -n and cat count as reads |
| A3Gemini CLI | ~/.gemini/tmp/ | Shows when a tool call waits for your approval |
| A4opencode 2.x | ~/.local/share/opencode/opencode.db | Opens the database read-only |
If your agents keep their data in a different place, shoulder uses CLAUDE_CONFIG_DIR, CODEX_HOME, GEMINI_CLI_HOME and XDG_DATA_HOME.
Install and run.
-
Install shoulder with Go 1.26 or later:
go install github.com/bjarneo/shoulder@latestOr download a binary for Linux or macOS, on amd64 or arm64:
$ curl -sL https://github.com/bjarneo/shoulder/releases/latest/download/shoulder-linux-amd64.tar.gz | tar xz $ sudo mv shoulder-linux-amd64/shoulder /usr/local/bin/ -
Run shoulder in the project where your agents work:
$ cd ~/Code/myproject $ shoulder -
Start Claude Code, Codex, Gemini CLI or opencode in the same project. Each agent shows up within a few seconds.
| --since | 1h | Show sessions with activity in this period, for example 30m or 6h. |
| --splits | off | Start with one split per agent. |
| --signs | off | Show changes as signs in the gutter, without the deleted lines. |
| --version | Print the version. |
Keys.
The keys follow Vim. You can also click an agent, a file, a tab or a split.