Skip to content

Releases: guitaripod/claude-bridge

Release list

1.1.0

Choose a tag to compare

@guitaripod guitaripod released this 03 Aug 17:45

One sequenced stream, a bridge that keeps itself current, and defaults the machine already chose.

Added

  • One stream of everything. GET /stream serves a hub with a replayable ring and an always-on observer, so a client opens one socket per server instead of one per session — with sequence numbers, replay from a cursor, and gap detection.
  • A live agent says what it is doing — todo position, tool trail and elapsed time, published incrementally while a subagent runs.
  • One turn at a time per session. A second client's prompt queues behind the running turn instead of racing it, and stopping a turn discards what queued behind it.
  • The bridge updates itself. GET/POST /update reports the running version, how far behind the checkout is and which commits would land, then performs the update and the restart it ends with — taking the update script from the commit being updated to, and keeping the log a tail rather than a build transcript.
  • Sign the machine's Claude in from wherever you are. /auth reports the account; the browser flow runs on a pseudo-terminal here and returns its URL, and the code comes back from the client.
  • Every picture the agent looked at is handed to the client as a file part, fetched over /files/raw rather than base64'd through the transcript.
  • Skills and saved workflows join the slash-command catalog, and opencode Go usage is estimated from the machine's own opencode history.
  • Machine defaults. A session that names no model or effort runs what ~/.claude/settings.json says — what the terminal would run — re-read whenever the file changes. BRIDGE_MODEL/BRIDGE_EFFORT still win when set.
  • Ultracode. An effort of ultracode, or a prompt that says the word, runs that turn at xhigh with --settings {"ultracode":true} — the keyword the CLI honours interactively but never in print mode.

Fixed

  • A running turn is live however quiet its transcript; a subagent's model is not the conversation's; the transcript says what is actually answering, model and effort read from the last turn.

Performance

  • GET /sessions answers from the observer's last sweep instead of recomputing per request; the agent scan runs at a third of the sweep so the index actor stays responsive; a fresh chat no longer asks the index about a transcript that cannot exist; and the full-projects scan debounces, so a burst of lookups stats the tree once.

1.0.0

Choose a tag to compare

@guitaripod guitaripod released this 29 Jul 19:43

Expose a Claude Code subscription as structured HTTP sessions any client can drive.

claude-bridge runs the claude CLI headlessly — one claude -p --output-format stream-json --include-partial-messages process per turn — and turns its stream-JSON output into clean REST + SSE: persistent multi-session chat, token-by-token streaming, structured tool calls, reasoning blocks, per-turn cost and token accounting, resume, clear, fork and abort.

It serves the rest of a session too. Subagents and their own transcripts. Compactions as events rather than a wall of summary text. The attachments a prompt carried, served back with their MIME type. Claude plan and Grok rate-limit gauges. The slash commands that machine will actually resolve, including project and plugin commands. Goal state, so an agent can be told to keep working until a condition holds and you can walk away.

Your terminal sessions are bridge sessions. Every local Claude Code CLI transcript under ~/.claude/projects is discovered, parsed and listed; the first write adopts it and resumes the underlying session in the directory it started in. A chat begun in the terminal continues from a phone. Discovery is incremental — a 132 MB transcript tree folds in seconds cold and milliseconds warm.

Push. With an APNs key configured, the bridge pushes Live Activity updates during a turn and a device push when one ends, so a phone can watch work it isn't looking at.

Fail-closed. The default permission mode is bypassPermissions, which makes the HTTP surface equivalent to remote shell access. The server refuses to start without a password in that mode. Deploy behind Tailscale; never on the public internet.

Swift 6 + Hummingbird, macOS and Linux, GPL-3.0.