Repository navigation
conch 0.1.7
120 commits since v0.1.6, in five pieces: agents that say what they are doing, a diff you can read, your own commands on the menus, a phone that reaches every machine, and workspaces that keep to themselves.
Agents say what they are doing, instead of being guessed at
- The Program Status Protocol (OSC 7501). conch answers the query a program sends — a program that gets no answer stays silent for the session — and takes its reports over conch's own screen rules, which were rewritten every time an agent's spinner changed. Claude Code 2.1.295 and Pi emit it today; the report travels down the pty, so it works over ssh and inside a container.
conch agent explain IDsays where a state came from. - Two tiers, said plainly. Supported is Claude Code, Codex, Gemini CLI, OpenCode and Devin. Runs here is an agent described by a manifest: conch starts and watches it and no more, and says so rather than showing an empty Sessions list. conch ships manifests for Aider, Amp, Cursor CLI, Grok, Kilo Code and Pi, and
conch agent addwrites your own. - A mark for every agent, taken from its own where a character comes close — Anthropic's starburst, Google's logo, a cube for Cursor, an ✕ for Grok, pixels for Kilo Code, π for Pi — with 🤖 for an agent conch was not told about.
- No install conch cannot do. An agent whose manifest named no installer used to run an empty script and report success; the menu now says conch has none, and names what to do instead.
- The agent list is asked for again when the menu opens, so an agent installed since conch started is offered as a start rather than an install.
Reading a diff
- Side by side above 100 columns, word-level highlighting inside a changed line, and
eto open the file at the selected hunk in$EDITOR. A long line wraps inside its column rather than being cut, coloured on every row;sswitches layout for the file in front of you, and[ui] diffmakes the choice yours.
Your own commands on conch's menus
[[actions]]inconfig.toml: a named command on the row menus, run on that row's machine in that row's checkout, withCONCH_MACHINE,CONCH_PROJECT,CONCH_BRANCH,CONCH_WORKTREEandCONCH_PANEin its environment. No registry, nothing to host — it runs only when you pick it.
The phone
- Every machine, not just this one. A paired device reaches this computer and the machines you name for it; the drawer is grouped by machine; an agent on another machine opens on the first tap.
- The socket is deflated with the window kept between frames — measured 14.9× fewer bytes end to end, and less processor time per frame than compressing each alone — and the app itself is served deflated (102 KB of shell as 34 KB).
- Capabilities are asked of each machine, so a machine running an older conch says so before anything is tried.
Workspaces
- Each workspace keeps to its own: its machines, folders, tabs, counts and waiting agents, workspace 1 included.
Mouse, scrolling, ssh
- Smooth scrolling everywhere (a line per trackpad event), the wheel belongs to conch's history while a program is on the main screen as it does in tmux, the pointer becomes a hand over a link in kitty and Ghostty, and clicking an agent in the tree now hands it the keyboard.
- ssh compression is asked for where the connection is made rather than on the bridge, where it did nothing; saved hosts live in folders with their own options, and
Kcopies your key.
Fixes worth naming
- A watcher that had to drop an event no longer drops the change with it.
- Claude is read as waiting on its dialog, not on the question's words alone.
- Waiting and done agents are counted apart in the status bar and tree.
- A pane adopted through a reload closes its terminal on exec, so a closed pane hangs up.
The docs now also say who conch is for, and what to use instead when it is not.
Install
curl -fsSL https://raw.githubusercontent.com/Amitgb14/conch/master/install.sh | shAlready running conch? Press u in the TUI, or conch update.