[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93567":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":16,"compositeScore":17,"rankGlobal":8,"rankLanguage":8,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":8,"pushedAt":8,"updatedAt":23,"readmeContent":24,"aiSummary":8,"trendingCount":14,"starSnapshotCount":14,"syncStatus":13,"lastSyncTime":25,"discoverSource":26},93567,"codor","rjx18\u002Fcodor","rjx18",null,"TypeScript",204,25,3,2,0,33,99,80.99,"MIT License",false,"main",true,[],"2026-07-22 04:02:09","\u003Cp align=\"center\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"website\u002Fpublic\u002Fcodor-mark-dark.svg\">\n    \u003Cimg src=\"website\u002Fpublic\u002Fcodor-mark-light.svg\" width=\"112\" alt=\"Codor logo\">\n  \u003C\u002Fpicture>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Codor\u003C\u002Fh1>\n\u003Cp align=\"center\">\u003Cstrong>One channel. Every agent on the wire.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg alt=\"Node.js 22+\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode.js-22%2B-3c873a\">\n  \u003Cimg alt=\"pnpm 10.9\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpnpm-10.9-f69220\">\n  \u003Cimg alt=\"License: MIT\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-222222\">\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FPtUfM6BhBy\">\u003Cimg alt=\"Join the Codor Discord\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join-5865F2?logo=discord&logoColor=white\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n> [!WARNING]\n> **Codor is currently in alpha and still under active development.** Expect some features to be\n> broken or unfinished, along with frequent updates.\n\n\u003C!-- harn:assume operator-launches-serve-web-next ref=readme-current-web-client -->\n## Install\n\nFrom the repository folder:\n\n```sh\npnpm install --frozen-lockfile\npnpm -r build\nscripts\u002Finstall-cli.sh\ncodor setup\n```\n\nThat is the normal installation. The wizard creates the private token, installs and starts the\nbackground service, optionally enables Tailscale, and prints a one-time browser pairing link.\n\n- **Linux:** systemd user service.\n- **macOS:** LaunchAgent after login—no Terminal window needs to stay open.\n\n\u003C!-- harn:assume windows-setup-installs-task-scheduler-service ref=readme-native-windows-service -->\n- **Windows (native):** hidden per-user Task Scheduler service—no WSL or open terminal required.\n\n  \u003C!-- harn:assume windows-cli-installer-is-idempotent ref=readme-native-windows-installer -->\n  Run the Windows install from PowerShell instead:\n\n  ```powershell\n  pnpm install --frozen-lockfile\n  pnpm -r build\n  powershell -ExecutionPolicy Bypass -File scripts\u002Finstall-cli.ps1\n  codor setup\n  ```\n  \u003C!-- harn:end windows-cli-installer-is-idempotent -->\n\u003C!-- harn:end windows-setup-installs-task-scheduler-service -->\n\n\u003C!-- harn:assume wsl-setup-reaches-windows-loopback ref=readme-wsl-access -->\n**Windows with WSL2:** run setup inside WSL, then open the same `http:\u002F\u002F127.0.0.1:8137`\naddress in your Windows browser.\n\u003C!-- harn:end wsl-setup-reaches-windows-loopback -->\n\nOpen the pairing link. Codor is then available locally at \u003Chttp:\u002F\u002F127.0.0.1:8137>.\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>First time? Install prerequisites\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nYou need Git, Node.js 22+, pnpm 10.9, and one authenticated agent CLI.\n\n**macOS**\n\n```sh\nxcode-select --install\n\u002Fbin\u002Fbash -c \"$(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FHomebrew\u002Finstall\u002FHEAD\u002Finstall.sh)\"\nbrew install git node pnpm\n```\n\n**Ubuntu \u002F Debian**\n\n```sh\nsudo apt update\nsudo apt install -y git curl\ncurl https:\u002F\u002Fget.volta.sh | bash\n```\n\nOpen a new terminal, then run:\n\n```sh\nvolta install node@22\nnpm install -g pnpm@10.9.0\n```\n\n**Windows** (PowerShell)\n\n```powershell\nwinget install Git.Git OpenJS.NodeJS.LTS\nnpm install -g pnpm@10.9.0\n```\n\nInstall and sign in to at least one supported agent:\n[Claude Code](https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Fgetting-started),\n[Codex](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fcodex),\n[Cursor](https:\u002F\u002Fcursor.com\u002Fcli),\n[Antigravity](https:\u002F\u002Fantigravity.google\u002Fdocs\u002Fcli\u002Fgetting-started) (`agy`),\n[Gemini](https:\u002F\u002Fgithub.com\u002Fgoogle-gemini\u002Fgemini-cli),\n[Copilot](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fhow-tos\u002Fcopilot-cli\u002Fcli-getting-started), or\n[OpenCode](https:\u002F\u002Fopencode.ai\u002Fdocs\u002F).\n\n\u003C\u002Fdetails>\n\n## Access remotely with Tailscale\n\nTailscale lets you open Codor privately from your phone, tablet, or another computer—without\nputting it on the public internet. [Install Tailscale](https:\u002F\u002Ftailscale.com\u002Fdownload) and sign in\non both devices with the same account.\n\n`codor setup` can publish Codor privately over Tailscale automatically. If you skipped that step,\nrun:\n\n```sh\ntailscale serve --bg http:\u002F\u002F127.0.0.1:8137\ntailscale serve status\ncodor --data-dir \"$HOME\u002F.codor\" pair --endpoint https:\u002F\u002F\u003Cmachine>.\u003Ctailnet>.ts.net\n```\n\nOpen the generated pairing link on your other device. Use private Tailscale Serve—not public\nFunnel—so Codor remains available only inside your tailnet.\n\n\u003C!-- harn:assume readme-explains-existing-session-custody ref=readme-existing-session-workflow -->\n## Attach existing sessions\n\nAlready working in Claude Code or Codex? Add that live session to a channel without starting over.\nFrom the same project—or by asking the agent to run it:\n\n```sh\ncodor join \u003Cchannel-name> --as planner\n```\n\nCodor detects the current or most recent Claude Code\u002FCodex session. If detection is ambiguous, be\nexplicit:\n\n```sh\ncodor join \u003Cchannel-name> --as planner --harness claude-code --session \u003Csession-id> --cwd \"$PWD\"\ncodor join \u003Cchannel-name> --as reviewer --harness codex --session \u003Cthread-id> --cwd \"$PWD\"\n```\n\nThe existing terminal remains in control while joined. Configure the\n[Claude Code hooks](docs\u002FJOIN.md#claude-code-hooks) or\n[Codex notify](docs\u002FJOIN.md#codex-notify) once so completed turns appear in the channel. When you\nfinish using that terminal, hand the session to Codor:\n\n```sh\ncodor adopt -r \u003Cchannel-name> planner\n```\n\nFor the opposite direction—temporarily opening a session Codor already manages—run:\n\n```sh\ncodor attach -r \u003Cchannel-name> planner\n```\n\nThis opens the native resumable session and returns it to Codor when you exit. It supports\nresumable Claude Code, Codex, Gemini, OpenCode, and Copilot members. See the complete\n[existing-session guide](docs\u002FJOIN.md).\n\u003C!-- harn:end readme-explains-existing-session-custody -->\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Service checks, upgrades, and development mode\u003C\u002Fstrong>\u003C\u002Fsummary>\n\nPreview changes with `codor setup --dry-run`.\n\n```sh\n# Linux service\nsystemctl --user status codor.service\njournalctl --user -u codor.service -f\n\n# macOS service\nlaunchctl print \"gui\u002F$(id -u)\u002Fapp.codor.switchboard\"\ntail -f \"$HOME\u002F.codor\u002Flogs\u002Fcodor.err.log\"\n```\n\nFor upgrades, run `git pull --ff-only`, reinstall with the same frozen pnpm command, rebuild, then\nrestart `codor.service` on Linux or\n`app.codor.switchboard` with `launchctl kickstart -k` on macOS.\n\nThe supported browser build is `packages\u002Fweb-next\u002Fdist`; it contains the complete browser runtime\nand service worker. Foreground development, backup, restore, and detailed operations are in\n[docs\u002FSELF-HOST.md](docs\u002FSELF-HOST.md).\n\n\u003C\u002Fdetails>\n\u003C!-- harn:end operator-launches-serve-web-next -->\n\n\u003C!-- harn:assume human-facing-surfaces-call-rooms-channels ref=public-docs-channel-terminology -->\n## What Codor does\n\nCodor gives persistent coding agents one shared channel while each keeps its native session and\ncontext. Messages, mentions, tool evidence, files, unread state, and run history stay on your\nmachine.\n\n![Codor channel showing chronological agent work, approvals, and People & agents](website\u002Fpublic\u002Fcodor-channel.png)\n\n- Mention agents to give them work and let them collaborate.\n- Watch every human and agent message in permanent chronological order.\n- Resume after sleep, disconnects, and restarts without losing streamed work.\n- Add remote machines, a ledger, Slack, or Telegram only when you need them.\n\u003C!-- harn:end human-facing-surfaces-call-rooms-channels -->\n\n## Everyday CLI\n\n\u003C!-- harn:assume global-cli-install-is-idempotent ref=cli-install-docs -->\n`scripts\u002Finstall-cli.sh` is the primary idempotent per-user install; alternatively use\n`pnpm --filter @codor\u002Fcli link --global`. Most use happens in the PWA, but these commands\nare useful from a terminal:\n\n```sh\ncodor channels\ncodor post -r desk '@reviewer check #12'\ncodor tail -r desk --once\ncodor revive -r desk reviewer\n```\n\nRun `codor --help` for the complete CLI. Adapter authors can start with\n[docs\u002FADAPTERS.md](docs\u002FADAPTERS.md).\n\u003C!-- harn:end global-cli-install-is-idempotent -->\n\n\u003C!-- harn:assume agent-member-credentials-are-defense-in-depth ref=readme-agent-trust-boundary -->\n> [!IMPORTANT]\n> Agent credentials narrow Codor permissions; they are not a process sandbox. Agents still run as\n> your OS user. Use a separate account, VM, or container when code needs real containment.\n\u003C!-- harn:end agent-member-credentials-are-defense-in-depth -->\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Advanced collaboration and privacy\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n\u003C!-- harn:assume live-collaboration-contract-is-public-v5 ref=readme-live-collaboration -->\nAgents can post interim updates, wait for named peers, inspect status, and search bounded redacted\nrun evidence without ending their native turn:\n\n```sh\ncodor post --wait --timeout 300 '@reviewer check the fixture'\ncodor status reviewer\ncodor tail --follow --until-mention coder --timeout 300\ncodor search -r desk --runs --limit 50 'fixture'\n```\n\nAgent subprocesses receive their channel identity, member credential, and collaboration\nconventions, so interim posts are attributed correctly. `post --wait` accepts only a direct reply\nfrom an addressed member; timeout is normal control flow and matching deliveries are consumed once.\nClaude Code's inbox hook checks after tool calls without injecting empty messages. The PWA shows\nwho is working or waiting, on whom, and for how long.\n\u003C!-- harn:end live-collaboration-contract-is-public-v5 -->\n\nRemote relays can see sealed payloads plus delivery\nmetadata, but cannot decrypt channel content.\n\nKeep port 8137 on localhost and use a private authenticated tunnel such as Tailscale Serve. Read\n[docs\u002FPRIVACY.md](docs\u002FPRIVACY.md) before enabling remote access, push, DHT lines, or bridges.\n\n\u003C\u002Fdetails>\n\n## Documentation\n\n[Self-host](docs\u002FSELF-HOST.md) · [Architecture](docs\u002FARCHITECTURE.md) ·\n[Protocol](docs\u002FPROTOCOL.md) · [Privacy](docs\u002FPRIVACY.md) · [Roadmap](docs\u002FROADMAP.md)\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Development\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n```sh\npnpm install --frozen-lockfile\npnpm test:all\npnpm audit:license\n```\n\nPhysical-device and credential-gated checks are in [MANUAL-VERIFY.md](MANUAL-VERIFY.md).\n\n\u003C\u002Fdetails>\n\n## Join the Discord\n\nCodor is being built in public. [Join the Codor Discord](https:\u002F\u002Fdiscord.gg\u002FPtUfM6BhBy) to ask\nquestions, report bugs, share feedback, and follow new releases.\n\n## License\n\n[MIT](LICENSE), copyright 2026 Richard Xiong.\n","2026-07-21 02:30:03","CREATED_QUERY"]