Skip to content

1.0.0

Choose a tag to compare

@guitaripod guitaripod released this 29 Jul 19:43
· 26 commits to master since this release

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.