{"id":44682102,"url":"https://github.com/chadbyte/claude-relay","last_synced_at":"2026-02-16T06:01:20.184Z","repository":{"id":337524890,"uuid":"1153949512","full_name":"chadbyte/claude-relay","owner":"chadbyte","description":"Access Claude Code on your machine, from anywhere. One command, no install.","archived":false,"fork":false,"pushed_at":"2026-02-15T08:45:04.000Z","size":8937,"stargazers_count":17,"open_issues_count":23,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-15T09:54:58.460Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/chadbyte.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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}},"created_at":"2026-02-09T21:14:32.000Z","updated_at":"2026-02-15T08:45:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"2378d977-d959-4933-85a0-7cc62d5fe6ba","html_url":"https://github.com/chadbyte/claude-relay","commit_stats":null,"previous_names":["chadbyte/claude-relay"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chadbyte/claude-relay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclaude-relay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclaude-relay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclaude-relay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclaude-relay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chadbyte","download_url":"https://codeload.github.com/chadbyte/claude-relay/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclaude-relay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29501354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T05:57:17.024Z","status":"ssl_error","status_checked_at":"2026-02-16T05:56:49.929Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-02-15T05:00:50.056Z","updated_at":"2026-02-16T06:01:20.134Z","avatar_url":"https://github.com/chadbyte.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# claude-relay\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/phone.gif\" alt=\"claude-relay on phone\" width=\"300\"\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eWeb UI for Claude Code. Any device. Push notifications.\u003c/h3\u003e\n\nClaude Code. Anywhere.  \nSame session. Same files. Same machine.  \nYour files stay on your computer. Nothing leaves for the cloud.\n\nPick up the same Claude Code session on your phone.  \nStart in the terminal, continue on your phone, switch back anytime.  \nSame session, same files, now in your pocket.\n\nClaude Code is automating more of your editing and execution workflow.\nBut when it needs approval or asks a question, it halts in the terminal. If you walk away, it just sits there waiting.\n\nclaude-relay eliminates this bottleneck.\nIt is not a thin wrapper that intercepts input/output. It drives Claude Code via the Claude Agent SDK and relays the stream from your local machine to your browser.\n\nGet approval notifications while grabbing a coffee.\nContinue working from the sofa on your iPad.\nSplit your browser: claude-relay on one side, your app preview on the other, and watch the code change in real time.\n\n```bash\ncd ~/your-project\nnpx claude-relay\n# First run: Set Port/PIN -\u003e Scan QR -\u003e Connect\n```\n\n---\n\n## Never Miss an Approval\n\nWhen Claude Code requests permission before executing a tool, you get a notification on your phone.\nOne tap, and Claude Code gets back to work.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/push-notification.jpg\" alt=\"push notification\" width=\"300\"\u003e\n\u003c/p\u003e\n\nIt works in browser tabs too. When input is awaited, the favicon blinks and the tab title changes to alert you.\n\n## Side by Side Workflow\n\nKeep claude-relay on one side and your localhost on the other.\nWatch the results update live while Claude Code fixes your source files.\n\nMermaid diagrams render as diagrams, and tables appear as actual tables.\nYou can explore files in the sidebar and use the built-in terminal to run shell commands.\n\n## All in One Place\n\nRun `npx claude-relay` in each project to register them to the same server.\nManage all your active sessions from a single dashboard.\n\n```bash\ncd ~/projects/backend \u0026\u0026 npx claude-relay    # Register project\ncd ~/projects/frontend \u0026\u0026 npx claude-relay   # Adds to the same server\n```\n\nThe server runs in the background. Even if you close the terminal window, your sessions and the server remain active.\n\n---\n\n## Getting Started\n\n```bash\nnpx claude-relay\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/start.gif\" alt=\"npx claude-relay\" width=\"600\"\u003e\n\u003c/p\u003e\n\nOn the first run, you'll set a port and PIN to launch the server.\nScan the QR code with your phone to connect instantly, or open the URL displayed in your terminal.\n\n## Key Features\n\n* **Push Approvals** - Approve or reject from your phone while away, so Claude Code does not get stuck waiting.\n* **Multi Project Daemon** - Manage all projects via a single port.\n* **Auto Session Logs (JSONL)** - Conversations and execution history are always saved locally. No data loss on crashes or restarts. Location: `./.claude-relay/sessions/`\n* **File Browser and Terminal** - Inspect files and execute commands directly from the browser.\n\n\u003e Note: Session logs may contain prompts, outputs, and commands. Do not share this folder.\n\n\u003cdetails\u003e\n\u003csummary\u003eView Full Feature List\u003c/summary\u003e\n\n**Notifications**\n\n* **Push Notifications** - Approvals, completions, errors, and questions. Add to Home Screen (PWA) to receive notifications without opening the app. Behavior depends on OS and browser. Tested on iPhone (Home Screen PWA) and desktop Chrome.\n* **Favicon and Title Blinking** - Visual cues when input is awaited.\n* **Sound Alerts** - Supports browser notifications, desktop notifications, and audio alerts.\n\n**Projects and Sessions**\n\n* **Multi Project** - Single port management for all projects.\n* **Project Names** - Custom names make it easy to distinguish tabs.\n* **Session Persistence** - Sessions survive server restarts, browser crashes, and network drops.\n* **Session Handoff** - Start in the terminal, continue on your phone, pass back to desktop.\n* **Rewind (Native Claude Code)** - Accessible directly from the browser UI.\n\n**Rendering and Tools**\n\n* **Mermaid and Markdown** - Proper rendering for diagrams, tables, and code blocks.\n* **Syntax Highlighting** - Support for over 180 languages with copy buttons on every block.\n* **File Browser** - Sidebar navigation with file previews and markdown rendering.\n* **Built in Terminal** - Full shell access within the browser.\n* **Slash Commands** - Execute standard Claude Code commands from the browser, with autocomplete.\n\n**UI**\n\n* **Mobile Optimized** - Large approve and reject buttons. Behaves like a native app via PWA.\n* **Real time Sync** - All devices view the exact same session state.\n* **QR Code** - Scan to connect instantly.\n* **Image Paste** - Paste images directly from your clipboard into the input.\n\n**Server and Security**\n\n* **Background Daemon** - Server persists even if the CLI is closed.\n* **Keep Awake** - Prevents macOS sleep to keep sessions alive. Configurable toggle.\n* **PIN Protection** - Restrict access with a 6 digit PIN.\n* **HTTPS** - Automatic certificate generation via mkcert.\n* **Zero Config** - Inherits your existing Claude Code configuration.\n\n\u003c/details\u003e\n\n## Network\n\nOn the same Wi Fi, it just works. Open the URL shown in the terminal on any device.\n\nFor remote access, [Tailscale](https://tailscale.com) is recommended. Install it on both devices and log in with the same account to connect via an encrypted tunnel without port forwarding. Free for personal use.\n\n## Security\n\nclaude-relay opens on your local network to allow access from other devices such as phones and tablets on the same Wi Fi.\nSetting a PIN is highly recommended.\n\nAnyone on your network with the URL and PIN can access the session. PIN protection can be enabled during the initial setup.\n\nDo not expose this directly to the public internet. Usage on public or shared networks is not recommended.\nFor remote access, use [Tailscale](https://tailscale.com) or a VPN.\n\nUsers are responsible for their network configuration and exposure scope.\n\n## HTTPS for Push\n\nBasic features work out of the box. Only push notifications require HTTPS.\n\nSet it up once using [mkcert](https://github.com/FiloSottile/mkcert):\n\n```bash\nbrew install mkcert\nmkcert -install\n```\n\nCertificates are generated automatically. The setup wizard handles the rest.\n\nIf push registration fails: check whether your browser trusts HTTPS and whether your phone can access the address.\n\n## CLI Options\n\n```bash\nnpx claude-relay              # Default (port 2633)\nnpx claude-relay -p 8080      # Specify port\nnpx claude-relay --no-https   # Disable HTTPS\nnpx claude-relay --no-update  # Skip update check\nnpx claude-relay --debug      # Enable debug panel\n```\n\n## Requirements\n\n* [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) installed and authenticated\n* Node.js 18+\n* [mkcert](https://github.com/FiloSottile/mkcert) - For push notifications (optional)\n* [Tailscale](https://tailscale.com) - For remote access (optional)\n\n## Architecture\n\nclaude-relay is not a wrapper that intercepts standard input/output.\nIt is a local relay server that drives Claude Code execution via the [Claude Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk) and streams data to the browser via WebSocket.\n\n```mermaid\ngraph LR\n    Browser[\"Browser\u003cbr/\u003e(Phone / Desktop)\"]\n    WS[\"WebSocket\"]\n    Server[\"HTTP Server\u003cbr/\u003elib/server.js\"]\n    Project[\"Project Context\u003cbr/\u003elib/project.js\"]\n    SDK[\"Claude Agent SDK\"]\n    Claude[\"Claude Code\u003cbr/\u003eProcess\"]\n    Push[\"Push Service\"]\n\n    Browser \u003c--\u003e|Real time stream| WS\n    WS \u003c--\u003e Server\n    Server --\u003e|slug routing| Project\n    Project \u003c--\u003e|async iterable| SDK\n    SDK \u003c--\u003e|Prompt / Response| Claude\n    Project --\u003e|Approval request| Push\n    Push --\u003e|Notification| Browser\n```\n\nFor a detailed sequence diagram, daemon structure, and design decisions, refer to [docs/architecture.md](docs/architecture.md).\n\n---\n\n## Contributing\n\nBug fixes and typos are welcome. For feature suggestions, please open an issue first:\n[https://github.com/chadbyte/claude-relay/issues](https://github.com/chadbyte/claude-relay/issues)\n\nIf you are using claude-relay, let us know how you are using it in Discussions:\n[https://github.com/chadbyte/claude-relay/discussions](https://github.com/chadbyte/claude-relay/discussions)\n\n## Disclaimer\n\nThis is an independent project and is not affiliated with Anthropic. Claude is a trademark of Anthropic.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchadbyte%2Fclaude-relay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchadbyte%2Fclaude-relay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchadbyte%2Fclaude-relay/lists"}