{"id":46982645,"url":"https://github.com/chadbyte/clay","last_synced_at":"2026-05-19T06:09:17.101Z","repository":{"id":337524890,"uuid":"1153949512","full_name":"chadbyte/clay","owner":"chadbyte","description":"Multiplayer Claude Code and Codex. Self-hosted team workspace for Claude Code and Codex. Multi-user, browser-based, AI mates with memory.","archived":false,"fork":false,"pushed_at":"2026-05-16T09:52:21.000Z","size":37064,"stargazers_count":261,"open_issues_count":3,"forks_count":39,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-16T11:49:21.721Z","etag":null,"topics":["ai-agent","ai-agents","ai-team","automation","claude","claude-agent-sdk","claude-code","codex","collaboration","dev-tools","developer-tools","mobile","multi-user","pwa","ralph-loop","self-hosted","web-ui","web-ui-based","workspace"],"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":"docs/roadmaps/completed/CTX-ELIMINATION-ROADMAP.md","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-05-16T09:52:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"2378d977-d959-4933-85a0-7cc62d5fe6ba","html_url":"https://github.com/chadbyte/clay","commit_stats":null,"previous_names":["chadbyte/claude-relay","chadbyte/clay"],"tags_count":314,"template":false,"template_full_name":null,"purl":"pkg:github/chadbyte/clay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chadbyte","download_url":"https://codeload.github.com/chadbyte/clay/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chadbyte%2Fclay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33204164,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"online","status_checked_at":"2026-05-19T02:00:06.763Z","response_time":58,"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-agent","ai-agents","ai-team","automation","claude","claude-agent-sdk","claude-code","codex","collaboration","dev-tools","developer-tools","mobile","multi-user","pwa","ralph-loop","self-hosted","web-ui","web-ui-based","workspace"],"created_at":"2026-03-11T13:11:59.216Z","updated_at":"2026-05-19T06:09:17.078Z","avatar_url":"https://github.com/chadbyte.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/logo/icon-full-banded-256-transparent.png\" alt=\"Clay\" /\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eClaude Code for your whole team. No team? Build one with AI.\u003c/h3\u003e\n\n[![npm version](https://img.shields.io/npm/v/clay-server)](https://www.npmjs.com/package/clay-server) [![npm downloads](https://img.shields.io/npm/dw/clay-server)](https://www.npmjs.com/package/clay-server) [![GitHub stars](https://img.shields.io/github/stars/chadbyte/clay)](https://github.com/chadbyte/clay) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/chadbyte/clay/blob/main/LICENSE)\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"media/hero.png\" alt=\"Clay workspace\" /\u003e\u003c/p\u003e\n\nEverything Claude Code does, in your browser and on your phone. Multi-session, multi-user, self-hosted. No cloud relay, no middleman.\n\n```bash\nnpx clay-server\n# Scan the QR code to connect from any device\n```\n\n---\n\n## What you get\n\n### Drop-in replacement for the CLI\n\nYour CLI sessions, your CLAUDE.md rules, your MCP servers. **All of it works in Clay as-is.** Pick up a CLI session in the browser, or continue a browser session in the CLI.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/split.gif\" alt=\"split-screen workflow\" width=\"700\"\u003e\n\u003c/p\u003e\n\n### Claude Code on steroids\n\n**Multiple agents, multiple projects, at the same time.** Switch between them in the sidebar. Browse project files live while the agent works, with syntax highlighting for 180+ languages. Mermaid diagrams render as diagrams. Tables render as tables.\n\n**Schedule agents with cron**, or let them run autonomously with **Ralph Loop**. Close your laptop, sessions keep running.\n\n**Push notifications on mobile.** Your phone buzzes when Claude needs approval, finishes a task, or hits an error. Install as a PWA on iOS or Android, review and approve from anywhere.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/phone.gif\" alt=\"Clay on phone\" width=\"280\"\u003e\n\u003c/p\u003e\n\n### Your machine, your server, your data\n\n**Fully local.** Clay runs as a daemon on your machine. Your code and conversations never leave your machine except to reach the AI provider's API.\n\n**Plain files.** Sessions are JSONL. Settings are JSON. Knowledge is Markdown. Everything lives on your machine in formats you can read, move, and back up. No proprietary database, no cloud lock-in.\n\n**Secure by default.** PIN authentication, per-project permissions, and HTTPS are built in.\n\n### Bring your whole team\n\n**One API key runs the whole workspace.** Invite teammates, set permissions per person, per project, per session. Share one key across the org, or let each member use their own Claude Code login.\n\n**OS-level isolation.** On Linux, Clay maps each user to an OS-level account. File permissions and process isolation just work.\n\n**Shared sessions.** Your PM describes a bug in plain language, your senior joins the same session, and the fix ships together. If someone gets stuck, **jump into their session** to help in real time.\n\n### Build your AI team\n\n**Mates.** AI teammates with persistent memory across sessions. They learn your stack, your conventions, and your decision history. @mention them for a quick review, DM them directly, or bring multiple into the same conversation. **They don't flatter you. They push back.**\n\n\u003c!-- TODO: mates.gif --\u003e\n\n**Debate.** Your Mates argue both sides before you commit. \"REST vs GraphQL?\" \"Monorepo or separate repos?\" \"This migration plan won't survive production. Here's why.\"\n\n\u003c!-- TODO: debate.gif --\u003e\n\n---\n\n## Who is Clay for\n\n- **Solo dev who needs a second opinion.** Architecture review, dependency decisions, refactor tradeoffs. Build reviewers as Mates instead of asking the void.\n- **Small team sharing one Claude Code setup.** One API key, everyone in the browser, no terminal knowledge required.\n- **Dev lead running agents overnight.** Schedule tasks with cron, get push notifications on your phone, review in the morning.\n\n## Getting Started\n\n**Requirements:** Node.js 20+, Claude Code CLI (authenticated).\n\n```bash\nnpx clay-server\n```\n\nOn first run, it asks for a port number and whether you're using it solo or with a team.\nOpen the browser URL or scan the QR code to connect from your phone instantly.\n\nFor remote access, use a VPN like Tailscale.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/start.gif\" alt=\"Clay starting from CLI\" width=\"600\"\u003e\n\u003c/p\u003e\n\n## FAQ\n\n**\"Is this just a Claude Code wrapper?\"**\nClay uses the [Claude Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk) directly. It doesn't wrap terminal output. It adds multi-session orchestration, persistent AI teammates (Mates), structured debates, scheduled agents, multi-user collaboration, and a full browser UI.\n\n**\"Does my code leave my machine?\"**\nClay is fully self-hosted. The server runs on your machine, files stay local. Only API calls go out, same as using the CLI directly.\n\n**\"Can I continue a CLI session in the browser?\"**\nYes. Pick up a CLI session in the browser, or continue a browser session in the CLI.\n\n**\"Does my existing CLAUDE.md work?\"**\nYes. If your project has a CLAUDE.md, it works in Clay as-is.\n\n**\"Does each teammate need their own API key?\"**\nNo. Teammates can share one org-wide API key. On Linux with OS-level isolation, each member can also use their own Claude Code login. You can assign different API keys per project for billing isolation.\n\n**\"Does it work with MCP servers?\"**\nYes. MCP configurations from the CLI carry over as-is.\n\n**\"Can I use it on my phone?\"**\nYes. Clay works as a PWA on iOS and Android. You get push notifications for approvals, errors, and completed tasks. No app store required.\n\n**\"What is d.clay.studio in my browser URL?\"**\nIt's a DNS-only service that resolves to your local IP for HTTPS certificate validation. No data passes through it. All traffic stays between your browser and your machine. See [clay-dns](clay-dns/) for details.\n\n## Why I built Clay\n\nClaude Code is the best coding agent I've found. I wanted to turn it into a team, not just a single-player tool.\n\nThat started as a browser interface so I could access it from anywhere. Then I added multi-user so my team could use it too. Then I started building the AI teammates themselves.\n\nMost AI agent projects go for full autonomy. Let the AI loose, give it all the permissions, let it run. I wanted the opposite: **AI that works as part of a team.** Visible, controllable, accountable. Your teammates can see what the agent is doing, jump in when it needs help, and set the rules it operates under.\n\nThat's Clay now. A workspace where AI teammates have names, persistent memory, and their own perspective. Not \"act like an expert\" prompting. Actual colleagues who remember last week and sit in your sidebar next to the human ones.\n\n## CLI Options\n\n```bash\nnpx clay-server              # Default (port 2633)\nnpx clay-server -p 8080      # Specify port\nnpx clay-server --yes        # Skip interactive prompts (use defaults)\nnpx clay-server -y --pin 123456\n                              # Non-interactive + PIN (for scripts/CI)\nnpx clay-server --add .      # Add current directory to running daemon\nnpx clay-server --remove .   # Remove project\nnpx clay-server --list       # List registered projects\nnpx clay-server --shutdown   # Stop running daemon\nnpx clay-server --dangerously-skip-permissions\n                              # Bypass all permission prompts (requires PIN at setup)\n```\n\nRun `npx clay-server --help` for all options.\n\n## Architecture\n\nClay drives agent execution through the [Claude Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk) and streams it to the browser over 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 detailed sequence diagrams, daemon architecture, and design decisions, see [docs/architecture.md](docs/architecture.md).\n\n## Community Projects\n\nProjects built by the community on top of Clay.\n\n| Project | Description |\n|---------|-------------|\n| [clay-streamdeck-plugin](https://github.com/egns-ai/clay-streamdeck-plugin) | Stream Deck plugin that turns physical buttons into a live dashboard for managing Clay sessions, worktrees, and permission requests. |\n\nBuilding something with Clay? Share it in [Discussions](https://github.com/chadbyte/clay/discussions).\n\n## Contributors\n\n\u003ca href=\"https://github.com/chadbyte/clay/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=chadbyte/clay\" /\u003e\n\u003c/a\u003e\n\n## Contributing\n\nBug fixes and typo corrections are welcome. For feature suggestions, please open an issue first:\n[https://github.com/chadbyte/clay/issues](https://github.com/chadbyte/clay/issues)\n\nIf you're using Clay, let us know how in Discussions:\n[https://github.com/chadbyte/clay/discussions](https://github.com/chadbyte/clay/discussions)\n\n## Disclaimer\n\nNot affiliated with Anthropic. Claude is a trademark of Anthropic. Provided \"as is\" without warranty. Users are responsible for complying with their AI provider's terms of service.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchadbyte%2Fclay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchadbyte%2Fclay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchadbyte%2Fclay/lists"}