{"id":51469555,"url":"https://github.com/luojiahai/code-by-wire","last_synced_at":"2026-07-06T15:30:53.050Z","repository":{"id":365123404,"uuid":"1263344910","full_name":"luojiahai/code-by-wire","owner":"luojiahai","description":"The cockpit for local Claude Code.","archived":false,"fork":false,"pushed_at":"2026-07-02T05:56:05.000Z","size":8972,"stargazers_count":15,"open_issues_count":4,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-02T07:25:38.425Z","etag":null,"topics":["ai","anthropic","claude","claude-code","code-by-wire","desktop-app","electron","llm","react","terminal","token","typescript","usage"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luojiahai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"luojiahai"}},"created_at":"2026-06-08T21:37:23.000Z","updated_at":"2026-07-01T12:21:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/luojiahai/code-by-wire","commit_stats":null,"previous_names":["luojiahai/code-by-wire"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/luojiahai/code-by-wire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luojiahai%2Fcode-by-wire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luojiahai%2Fcode-by-wire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luojiahai%2Fcode-by-wire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luojiahai%2Fcode-by-wire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luojiahai","download_url":"https://codeload.github.com/luojiahai/code-by-wire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luojiahai%2Fcode-by-wire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35197534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","anthropic","claude","claude-code","code-by-wire","desktop-app","electron","llm","react","terminal","token","typescript","usage"],"created_at":"2026-07-06T15:30:52.419Z","updated_at":"2026-07-06T15:30:53.028Z","avatar_url":"https://github.com/luojiahai.png","language":"TypeScript","funding_links":["https://github.com/sponsors/luojiahai","https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee\u0026emoji=\u0026slug=luojiahai\u0026button_colour=FFDD00\u0026font_colour=000000\u0026font_family=Cookie\u0026outline_colour=000000\u0026coffee_colour=ffffff","https://buymeacoffee.com/luojiahai"],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"docs/assets/logo.svg\" alt=\"\" height=\"64\" align=\"center\"\u003e Code-by-wire\n\nEnglish | [简体中文](README.zh-CN.md)\n\n[![CI](https://img.shields.io/github/actions/workflow/status/luojiahai/code-by-wire/ci.yml?style=flat-square\u0026label=CI)](https://github.com/luojiahai/code-by-wire/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)\n[![Latest release](https://img.shields.io/github/v/release/luojiahai/code-by-wire?style=flat-square)](https://github.com/luojiahai/code-by-wire/releases)\n[![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-db61a2?style=flat-square\u0026logo=github\u0026logoColor=white)](https://github.com/sponsors/luojiahai)\n\n[![Buy Me A Coffee](https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee\u0026emoji=\u0026slug=luojiahai\u0026button_colour=FFDD00\u0026font_colour=000000\u0026font_family=Cookie\u0026outline_colour=000000\u0026coffee_colour=ffffff)](https://buymeacoffee.com/luojiahai)\n\nClaude Code writes a rich trail to the `.claude` directory as it works: every\nturn, every token, every tool call, the running cost, the context window. The\nCLI shows you almost none of it.\n\nCode-by-wire reads that trail and turns it into one live dashboard. Every\nsession on your machine in one place, with live state, the full transcript, an\nembedded terminal to drive or take over, and the telemetry the terminal hides.\nOne pane instead of a dozen terminal windows.\n\n![Code-by-wire: a live Claude Code session with the session rail, transcript, and telemetry panels](docs/assets/cbw-screenshot.png)\n\n## Download\n\nOne click starts the download. Always the latest release.\n\n| Platform              | File                                                                                                                              |\n| --------------------- | --------------------------------------------------------------------------------------------------------------------------------- |\n| macOS · Apple Silicon | [`Code-by-wire-arm64.dmg`](https://github.com/luojiahai/code-by-wire/releases/latest/download/Code-by-wire-arm64.dmg)             |\n| macOS · Intel         | [`Code-by-wire-x64.dmg`](https://github.com/luojiahai/code-by-wire/releases/latest/download/Code-by-wire-x64.dmg)                 |\n| Windows · x64         | [`Code-by-wire-Setup-x64.exe`](https://github.com/luojiahai/code-by-wire/releases/latest/download/Code-by-wire-Setup-x64.exe)     |\n| Windows · ARM64       | [`Code-by-wire-Setup-arm64.exe`](https://github.com/luojiahai/code-by-wire/releases/latest/download/Code-by-wire-Setup-arm64.exe) |\n\n## What you get\n\n- **Every session in one rail.** A searchable sidebar that groups every session\n  by project into collapsible folders, each row flagging its own live state.\n- **Drive, fork, or just watch.** Spawn a managed session in an embedded\n  terminal, fork a live one, adopt one you started elsewhere, or observe it\n  read-only.\n- **The full transcript.** Every message, tool call, and result, reconstructed\n  from disk and rendered cleanly.\n- **The telemetry the CLI hides.** Live context pressure, spend, token\n  throughput, duty cycle, git, tasks, subagents, and background shells, per\n  session.\n- **The whole story.** A cross-session Stats view with a year-long contributions\n  calendar and exact, never-estimated totals.\n- **Your rate limits in view.** Reads your account's rate-limit windows straight\n  from the `.claude` directory, with live reset countdowns.\n\n## Features\n\nNothing to set up. Open the app and every session already running on your\nmachine is there.\n\n### 👀 See every session at a glance\n\n**Grouped by project, folded to taste.** The sidebar buckets every session into\na collapsible folder per project, newest activity first, with a running count on\neach folder and a total up top. Inside a folder, live sessions sort above ended\nones, and each row carries a small state dot — working, waiting, idle, or ended.\n\n**Search as you type.** A box at the top of the rail filters the whole list by\nsession name or project the moment you start typing.\n\n### 🕹️ Start, drive, or watch any session\n\n**Start one in a click.** New session picks a directory and a model, then spawns\nClaude Code in an embedded terminal. Fork a live session to branch a fresh copy\nfrom where it left off, or end a running one from the menu in its header.\n\n**Observe safely, adopt later.** A session you started elsewhere shows up\nread-only, because two processes writing one transcript would corrupt it. Once\nit ends, adopt it to resume inside the app and take the controls. Adopt unlocks\nonly when the original process is gone, the only time it's safe.\n\n**Terminal or transcript.** A managed session toggles between its live terminal\nand the rendered transcript. Switching away only detaches the view. The terminal\nkeeps buffering, so you never lose scrollback.\n\n**Label it, open it.** Rename any session inline to whatever you'll recognize it\nby, copy its id, or open its working directory in VS Code or your file browser.\n\n### 📜 Read exactly what the agent did\n\n**The full transcript, step by step.** Every message, tool call, and tool\nresult, reconstructed from the raw transcript on disk and rendered cleanly.\n\n**A dock that follows the work.** Below the live view, the Structure dock tabs\nthrough the session's makeup and snaps to whatever's happening, collapsing to a\none-line tally when nothing's live:\n\n- **Tasks.** The task list with each item's status and what it's blocked by.\n- **Subagents.** The child sessions a session spawned, as a live list you can\n  drill into.\n- **Shells.** Background shells the session kicked off, reconstructed from the\n  transcript, with their full output on demand.\n\n### 📊 The telemetry Claude Code keeps out of sight\n\nSelect a session and a right-hand rail of live panels reads it out:\n\n- **Pressure.** How full the context window is, using Claude's own number when\n  it reports one, over your account's rate-limit windows — 5-hour, 7-day, and\n  per-model weekly buckets when present — each a bar with percent used and a\n  live reset countdown. Bars warm to amber and redline as they fill.\n- **Spend.** Total tokens with Claude Code's own dollar figure beside it, broken\n  out by kind: fresh input, generated output, cache reads, and the 5-minute and\n  1-hour cache writes. On a subscription the dollar figure is _equivalent API\n  value_, what the tokens would cost at API rates, never money owed.\n- **Throughput.** Live token rate over a rolling window, output and input.\n- **Duty.** The session's duty cycle — how much of the wall clock the API was\n  actually working.\n- **Session.** Model, effort, and the run clock, plus git (branch, dirty state,\n  ahead/behind), any linked pull request, lines added and removed, and time\n  since the last activity.\n\n### 📈 The whole story across every session\n\n**Stats is where the app opens.** Reached from the rail's top menu, it totals\nevery Claude Code session on your machine, not just the one you're watching. Pick\na range: Today, 7d, 30d, 90d, or All.\n\n**Headline numbers.** A grid of the figures worth knowing at a glance — sessions,\ntokens, your favorite model, active days, most active day, longest session, and\nyour longest and current daily streaks.\n\n**A contributions calendar.** A year of activity as a token heatmap. Switch the\nwindow between the trailing twelve months and any past year, and click any day to\nscope the whole page to it.\n\n**Tokens per day.** One stacked bar per day, split by model, alongside a by-model\nbreakdown for the range.\n\n**Two more ways to slice it.** By project, with each project's work folded in,\nand by session in a sortable table. An _Include cache_ toggle decides whether\ncached tokens count toward the totals.\n\n**Exact, never estimated.** Every number is read straight from the transcripts\non disk, deduped and totalled. No sampling, no guesses. The first launch\nbackfills your history behind a progress bar, then it stays live like everything\nelse — and you can reset and rebuild it from scratch anytime.\n\n### ⚙️ Settings and CLI health\n\n**Settings** opens from the rail's top menu, in two sections. **System** checks\nyour local Claude Code — whether it's found, current, and logged in — and hands\nyou the exact fix when something's off, plus a field to point the app at a\nnon-standard binary. It also flags a duplicate install or a config-directory\nmismatch. The System tab wears a caution badge that lights amber or red the\nmoment the CLI needs attention, so a broken or logged-out install never slips by.\n**About** carries the app version and handles software updates.\n\n## Install\n\nGrab the installer from [Download](#download) above, or build it yourself.\n\n### First launch\n\nOn macOS, open the `.dmg` and drag Code-by-wire to Applications, then launch it.\nThe app is signed and notarized by Apple, so it opens straight away, no Gatekeeper\nwarning and no quarantine workaround.\n\nOn Windows, run the `.exe`. It's unsigned for now, so Windows SmartScreen may warn.\nClick **More info → Run anyway**.\n\nOnce installed, Code-by-wire keeps itself current: it checks for new releases on\nlaunch and lets you download and install them from Settings → About. You can turn\nthe launch check off there.\n\n### Build from source\n\nBuild an unsigned app locally instead. Run the command for your platform:\n\n```\npnpm install\npnpm rebuild:native   # rebuild better-sqlite3 + node-pty for Electron's ABI\npnpm dist             # macOS: writes the .dmg to release/\npnpm dist:win         # Windows: writes the .exe to release/\n```\n\nOn macOS, open the `.dmg` from `release/` and drag Code-by-wire to Applications.\nBecause it's unsigned, the first launch may need a right-click → **Open**, or\nclearing the quarantine flag:\n\n```\nxattr -dr com.apple.quarantine /Applications/Code-by-wire.app\n```\n\nOn Windows, run the `.exe` from `release/`. It's unsigned, so SmartScreen may\nwarn — click **More info → Run anyway**.\n\n## Requirements\n\n- macOS (Apple Silicon or Intel) or Windows (x64 or ARM64)\n- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) installed\n  locally, so there are sessions to observe and control\n\n## Develop\n\n```\npnpm install\npnpm rebuild:native   # rebuild better-sqlite3 + node-pty for Electron's ABI\npnpm dev              # launch the app\n```\n\n`pnpm test` runs the provider read tests over the redacted `.claude` fixtures\nin `tests/fixtures/`. `pnpm typecheck` checks the main and renderer projects.\n\nThis is a personal project and isn't taking outside code, but bug reports and\nideas are welcome. [Open an issue](https://github.com/luojiahai/code-by-wire/issues/new/choose),\nor see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluojiahai%2Fcode-by-wire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluojiahai%2Fcode-by-wire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluojiahai%2Fcode-by-wire/lists"}