[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83117":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":25,"discoverSource":26},83117,"relaydeck","relaydeck\u002Frelaydeck","micro-agent orchestrator for local agents","https:\u002F\u002Frelaydeck.ai",null,"Python",61,6,1,2,0,5,45.54,"MIT License",false,"main",[],"2026-06-12 04:01:40","> [!WARNING]\n> **Early beta release.** relaydeck is brand new and moving fast, so expect rough edges, breaking changes, and the occasional bug. Please [open an issue](https:\u002F\u002Fgithub.com\u002Frelaydeck\u002Frelaydeck\u002Fissues) if something breaks, and contributions are always welcome.\n\n\u003Cdiv align=\"center\">\n\n\u003Ch1>relaydeck\u003C\u002Fh1>\n\n\u003Ch2>Orchestrate agents. Plug the world in.\u003C\u002Fh2>\n\n\u003Cp>\n\u003Cb>One local daemon, one dashboard, your entire fleet.\u003C\u002Fb>\n\u003Cbr>Run CLI coding agents in parallel: live terminals, durable peer-to-peer messaging,\n\u003Cbr>your choice of model providers, and a plugin stack you extend per workspace.\n\u003Cbr>No cloud account. No telemetry.\n\u003C\u002Fp>\n\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Frelaydeck\u002F\">\u003Cimg alt=\"PyPI\" src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Frelaydeck?style=flat-square&logo=pypi&logoColor=white&color=B7410E\">\u003C\u002Fa>\n  \u003Cimg alt=\"Python 3.12+\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.12+-B7410E?style=flat-square&logo=python&logoColor=white\">\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"License: MIT\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-141210?style=flat-square\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Frelaydeck.ai\">\u003Cimg alt=\"relaydeck.ai\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Frelaydeck.ai-141210?style=flat-square&logo=safari&logoColor=white\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr>\n\n\u003Csub>\u003Cb>HARNESSES\u003C\u002Fb>\u003C\u002Fsub>\n\n\u003Cp>\n  \u003Cimg alt=\"Claude Code\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude_Code-141210?style=flat-square&logo=claude&logoColor=white\">\n  \u003Cimg alt=\"Codex\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCodex-141210?style=flat-square&logo=data:image%2Fsvg%2Bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0yMi4yODE5IDkuODIxMWE1Ljk4NDcgNS45ODQ3IDAgMCAwLS41MTU3LTQuOTEwOCA2LjA0NjIgNi4wNDYyIDAgMCAwLTYuNTA5OC0yLjlBNi4wNjUxIDYuMDY1MSAwIDAgMCA0Ljk4MDcgNC4xODE4YTUuOTg0NyA1Ljk4NDcgMCAwIDAtMy45OTc3IDIuOSA2LjA0NjIgNi4wNDYyIDAgMCAwIC43NDI3IDcuMDk2NiA1Ljk4IDUuOTggMCAwIDAgLjUxMSA0LjkxMDcgNi4wNTEgNi4wNTEgMCAwIDAgNi41MTQ2IDIuOTAwMUE1Ljk4NDcgNS45ODQ3IDAgMCAwIDEzLjI1OTkgMjRhNi4wNTU3IDYuMDU1NyAwIDAgMCA1Ljc3MTgtNC4yMDU4IDUuOTg5NCA1Ljk4OTQgMCAwIDAgMy45OTc3LTIuOTAwMSA2LjA1NTcgNi4wNTU3IDAgMCAwLS43NDc1LTcuMDcyOXptLTkuMDIyIDEyLjYwODFhNC40NzU1IDQuNDc1NSAwIDAgMS0yLjg3NjQtMS4wNDA4bC4xNDE5LS4wODA0IDQuNzc4My0yLjc1ODJhLjc5NDguNzk0OCAwIDAgMCAuMzkyNy0uNjgxM3YtNi43MzY5bDIuMDIgMS4xNjg2YS4wNzEuMDcxIDAgMCAxIC4wMzguMDUydjUuNTgyNmE0LjUwNCA0LjUwNCAwIDAgMS00LjQ5NDUgNC40OTQ0em0tOS42NjA3LTQuMTI1NGE0LjQ3MDggNC40NzA4IDAgMCAxLS41MzQ2LTMuMDEzN2wuMTQyLjA4NTIgNC43ODMgMi43NTgyYS43NzEyLjc3MTIgMCAwIDAgLjc4MDYgMGw1Ljg0MjgtMy4zNjg1djIuMzMyNGEuMDgwNC4wODA0IDAgMCAxLS4wMzMyLjA2MTVMOS43NCAxOS45NTAyYTQuNDk5MiA0LjQ5OTIgMCAwIDEtNi4xNDA4LTEuNjQ2NHpNMi4zNDA4IDcuODk1NmE0LjQ4NSA0LjQ4NSAwIDAgMSAyLjM2NTUtMS45NzI4VjExLjZhLjc2NjQuNzY2NCAwIDAgMCAuMzg3OS42NzY1bDUuODE0NCAzLjM1NDMtMi4wMjAxIDEuMTY4NWEuMDc1Ny4wNzU3IDAgMCAxLS4wNzEgMGwtNC44MzAzLTIuNzg2NUE0LjUwNCA0LjUwNCAwIDAgMSAyLjM0MDggNy44NzJ6bTE2LjU5NjMgMy44NTU4TDEzLjEwMzggOC4zNjQgMTUuMTE5MiA3LjJhLjA3NTcuMDc1NyAwIDAgMSAuMDcxIDBsNC44MzAzIDIuNzkxM2E0LjQ5NDQgNC40OTQ0IDAgMCAxLS42NzY1IDguMTA0MnYtNS42NzcyYS43OS43OSAwIDAgMC0uNDA3LS42Njd6bTIuMDEwNy0zLjAyMzFsLS4xNDItLjA4NTItNC43NzM1LTIuNzgxOGEuNzc1OS43NzU5IDAgMCAwLS43ODU0IDBMOS40MDkgOS4yMjk3VjYuODk3NGEuMDY2Mi4wNjYyIDAgMCAxIC4wMjg0LS4wNjE1bDQuODMwMy0yLjc4NjZhNC40OTkyIDQuNDk5MiAwIDAgMSA2LjY4MDIgNC42NnpNOC4zMDY1IDEyLjg2M2wtMi4wMi0xLjE2MzhhLjA4MDQuMDgwNCAwIDAgMS0uMDM4LS4wNTY3VjYuMDc0MmE0LjQ5OTIgNC40OTkyIDAgMCAxIDcuMzc1Ny0zLjQ1MzdsLS4xNDIuMDgwNUw4LjcwNCA1LjQ1OWEuNzk0OC43OTQ4IDAgMCAwLS4zOTI3LjY4MTN6bTEuMDk3Ni0yLjM2NTRsMi42MDItMS40OTk4IDIuNjA2OSAxLjQ5OTh2Mi45OTk0bC0yLjU5NzQgMS40OTk3LTIuNjA2Ny0xLjQ5OTdaIi8%2BPC9zdmc%2B&logoColor=white\">\n  \u003Cimg alt=\"Cursor\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCursor-141210?style=flat-square&logo=cursor&logoColor=white\">\n  \u003Cimg alt=\"Antigravity\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAntigravity-141210?style=flat-square&logo=googlegemini&logoColor=white\">\n  \u003Cimg alt=\"OpenCode\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenCode-141210?style=flat-square\">\n  \u003Cimg alt=\"pi\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpi-141210?style=flat-square\">\n  \u003Cimg alt=\"relaydeck native\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Frelaydeck_native-B7410E?style=flat-square\">\n\u003C\u002Fp>\n\n\u003Csub>\u003Cb>PROVIDERS\u003C\u002Fb>\u003C\u002Fsub>\n\n\u003Cp>\n  \u003Cimg alt=\"Anthropic\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAnthropic-141210?style=flat-square&logo=anthropic&logoColor=white\">\n  \u003Cimg alt=\"OpenAI\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenAI-141210?style=flat-square&logo=data:image%2Fsvg%2Bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0yMi4yODE5IDkuODIxMWE1Ljk4NDcgNS45ODQ3IDAgMCAwLS41MTU3LTQuOTEwOCA2LjA0NjIgNi4wNDYyIDAgMCAwLTYuNTA5OC0yLjlBNi4wNjUxIDYuMDY1MSAwIDAgMCA0Ljk4MDcgNC4xODE4YTUuOTg0NyA1Ljk4NDcgMCAwIDAtMy45OTc3IDIuOSA2LjA0NjIgNi4wNDYyIDAgMCAwIC43NDI3IDcuMDk2NiA1Ljk4IDUuOTggMCAwIDAgLjUxMSA0LjkxMDcgNi4wNTEgNi4wNTEgMCAwIDAgNi41MTQ2IDIuOTAwMUE1Ljk4NDcgNS45ODQ3IDAgMCAwIDEzLjI1OTkgMjRhNi4wNTU3IDYuMDU1NyAwIDAgMCA1Ljc3MTgtNC4yMDU4IDUuOTg5NCA1Ljk4OTQgMCAwIDAgMy45OTc3LTIuOTAwMSA2LjA1NTcgNi4wNTU3IDAgMCAwLS43NDc1LTcuMDcyOXptLTkuMDIyIDEyLjYwODFhNC40NzU1IDQuNDc1NSAwIDAgMS0yLjg3NjQtMS4wNDA4bC4xNDE5LS4wODA0IDQuNzc4My0yLjc1ODJhLjc5NDguNzk0OCAwIDAgMCAuMzkyNy0uNjgxM3YtNi43MzY5bDIuMDIgMS4xNjg2YS4wNzEuMDcxIDAgMCAxIC4wMzguMDUydjUuNTgyNmE0LjUwNCA0LjUwNCAwIDAgMS00LjQ5NDUgNC40OTQ0em0tOS42NjA3LTQuMTI1NGE0LjQ3MDggNC40NzA4IDAgMCAxLS41MzQ2LTMuMDEzN2wuMTQyLjA4NTIgNC43ODMgMi43NTgyYS43NzEyLjc3MTIgMCAwIDAgLjc4MDYgMGw1Ljg0MjgtMy4zNjg1djIuMzMyNGEuMDgwNC4wODA0IDAgMCAxLS4wMzMyLjA2MTVMOS43NCAxOS45NTAyYTQuNDk5MiA0LjQ5OTIgMCAwIDEtNi4xNDA4LTEuNjQ2NHpNMi4zNDA4IDcuODk1NmE0LjQ4NSA0LjQ4NSAwIDAgMSAyLjM2NTUtMS45NzI4VjExLjZhLjc2NjQuNzY2NCAwIDAgMCAuMzg3OS42NzY1bDUuODE0NCAzLjM1NDMtMi4wMjAxIDEuMTY4NWEuMDc1Ny4wNzU3IDAgMCAxLS4wNzEgMGwtNC44MzAzLTIuNzg2NUE0LjUwNCA0LjUwNCAwIDAgMSAyLjM0MDggNy44NzJ6bTE2LjU5NjMgMy44NTU4TDEzLjEwMzggOC4zNjQgMTUuMTE5MiA3LjJhLjA3NTcuMDc1NyAwIDAgMSAuMDcxIDBsNC44MzAzIDIuNzkxM2E0LjQ5NDQgNC40OTQ0IDAgMCAxLS42NzY1IDguMTA0MnYtNS42NzcyYS43OS43OSAwIDAgMC0uNDA3LS42Njd6bTIuMDEwNy0zLjAyMzFsLS4xNDItLjA4NTItNC43NzM1LTIuNzgxOGEuNzc1OS43NzU5IDAgMCAwLS43ODU0IDBMOS40MDkgOS4yMjk3VjYuODk3NGEuMDY2Mi4wNjYyIDAgMCAxIC4wMjg0LS4wNjE1bDQuODMwMy0yLjc4NjZhNC40OTkyIDQuNDk5MiAwIDAgMSA2LjY4MDIgNC42NnpNOC4zMDY1IDEyLjg2M2wtMi4wMi0xLjE2MzhhLjA4MDQuMDgwNCAwIDAgMS0uMDM4LS4wNTY3VjYuMDc0MmE0LjQ5OTIgNC40OTkyIDAgMCAxIDcuMzc1Ny0zLjQ1MzdsLS4xNDIuMDgwNUw4LjcwNCA1LjQ1OWEuNzk0OC43OTQ4IDAgMCAwLS4zOTI3LjY4MTN6bTEuMDk3Ni0yLjM2NTRsMi42MDItMS40OTk4IDIuNjA2OSAxLjQ5OTh2Mi45OTk0bC0yLjU5NzQgMS40OTk3LTIuNjA2Ny0xLjQ5OTdaIi8%2BPC9zdmc%2B&logoColor=white\">\n  \u003Cimg alt=\"Google Gemini\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGemini-141210?style=flat-square&logo=googlegemini&logoColor=white\">\n  \u003Cimg alt=\"DeepSeek\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeepSeek-141210?style=flat-square&logo=deepseek&logoColor=white\">\n  \u003Cimg alt=\"Mistral\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMistral-141210?style=flat-square&logo=mistralai&logoColor=white\">\n  \u003Cimg alt=\"Ollama\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOllama-141210?style=flat-square&logo=ollama&logoColor=white\">\n  \u003Cimg alt=\"OpenRouter\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenRouter-141210?style=flat-square&logo=openrouter&logoColor=white\">\n  \u003Cimg alt=\"Meta Llama\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLlama-141210?style=flat-square&logo=meta&logoColor=white\">\n\u003C\u002Fp>\n\n\u003C\u002Fdiv>\n\n```sh\ncurl -fsSL https:\u002F\u002Frelaydeck.ai\u002Finstall.sh | sh\n```\n\nor with pip:\n\n```sh\npip install relaydeck\n```\n\nthen start the daemon (dashboard at `http:\u002F\u002F127.0.0.1:8765`):\n\n```sh\nrelaydeck daemon start\n```\n\n---\n\n## What it is\n\nrelaydeck is a **local-first fleet OS for CLI coding agents**. It wraps the real\nvendor CLIs you already use (Claude Code, Codex, Cursor, OpenCode, pi), runs them\n**unattended in PTYs**, and gives you one place to watch, message, and automate\nthem. Everything runs on your machine; state lives in `~\u002F.relaydeck` and a local\nSQLite db, and secrets stay in a vault on the daemon host.\n\n|  |  |\n|---|---|\n| **Harness-native** | Drives real CLI agents, not a replacement model runtime |\n| **Local-first** | State in `~\u002F.relaydeck` + SQLite; secrets in the on-host vault |\n| **Fleet-aware** | Agents discover peers by `purpose`\u002F`tags`; durable peer messaging with late drain |\n| **Observable** | Live PTY terminals, semantic status, usage metering, SSE; no polling |\n| **CLI = API = UI** | Every operation works from the shell, the HTTP API, and the dashboard |\n| **Plugin-extensible** | Harnesses, providers, messaging, skills, automations: all plugins |\n\n---\n\n## Works with every harness\n\nEach harness maps your agent config (model, autonomy, system prompt) onto the\nvendor CLI. Install at least one on your `$PATH`.\n\n| Harness | CLI | Agent type | Notes |\n|---------|-----|------------|-------|\n| **Claude Code** | `claude` | `claude-code` | Permission modes, hook integrations |\n| **Codex** | `codex` | `codex-cli` | Sandbox + approval translation |\n| **Cursor** | `cursor-agent` | `cursor-cli` | Subscription auth; per-agent config dir |\n| **OpenCode** | `opencode` | `opencode-cli` | Config-file instruction injection |\n| **Antigravity** | `agy` | `antigravity` | Google-account auth; workspace-trust pre-seed |\n| **pi** | `pi` | `pi` | Reference harness; system-prompt append |\n| **relaydeck native** | `pi` | `relaydeck` | Fleet operator: pi plus extension tools (messaging, agents, dashboard) |\n\n---\n\n## Bring any provider\n\nBundled provider plugins for **Anthropic, OpenAI, OpenRouter, and Ollama**, plus\nany **OpenAI-compatible** endpoint (Groq, Together, Fireworks, Cerebras, DeepSeek,\nxAI, Mistral, vLLM, and more). Keys live in the vault, never in agent configs.\n\n---\n\n## The dashboard\n\nThe web dashboard at `http:\u002F\u002F127.0.0.1:8765` is the primary UI: a fleet home with\nlive usage and worker pulse, plus a per-agent lens that shows the live PTY\nterminal, real-time usage and cost tiles, and panels for identity, context,\nevents, config, inbox, and compose. Agents see their peers through an auto\nidentity preamble and message each other durably; incoming messages are pushed\nstraight into the prompt.\n\n---\n\n## Quickstart\n\nRequirements: Python 3.12+ and at least one harness CLI on your `$PATH`.\n\n```sh\n# Register this project as a workspace with messaging enabled.\nrelaydeck init . --plugin messaging\n\n# Start the daemon (dashboard at http:\u002F\u002F127.0.0.1:8765).\nrelaydeck daemon start\n\n# Create two agents with distinct roles.\nrelaydeck agent create planner --type claude-code \\\n  --purpose \"Plan changes; do not implement\"\nrelaydeck agent create coder --type codex-cli \\\n  --purpose \"Implement scoped patches from planner specs\"\nrelaydeck agent start planner coder\n\n# Send work; agents discover peers via the identity preamble.\nrelaydeck workspace message --agent planner \\\n  \"Plan: add --dry-run to relaydeck plugin uninstall. Keep it under 50 LOC.\"\n\n# Observe\nrelaydeck view              # built-in TUI\nopen http:\u002F\u002F127.0.0.1:8765  # web dashboard (primary UI)\n```\n\n`relaydeck --help` documents every command. With the daemon running, the OpenAPI\ndocs live at `http:\u002F\u002F127.0.0.1:8765\u002Fdocs`.\n\n---\n\n## Extend with plugins\n\nEverything beyond the core runtime is a **`RelaydeckPlugin`**: discovered at\nstartup, capability-gated, and removable without forking the engine. A 30-plugin\nbundle ships in the box.\n\n| Plugin | What it adds |\n|--------|--------------|\n| **vault** | Secrets vault with a key-name-only API and CLI management |\n| **github** | Poll `gh` for issues\u002FPRs and route them through rules to agents |\n| **telegram** | Drive an agent from a chat; auto-discover chats into a registry |\n| **messaging** | Durable agent-to-agent inbox plus dashboard surfaces |\n| **prompts** | Agents ask questions with tap-able choices, not blocking stdin |\n| **hitl** | Human-in-the-loop escalation over pluggable channels |\n| **metering** · **usage_limits** | Token\u002Fcost tiles; rolling session and weekly quotas with auto-pause |\n| **skills** · **theme** · **dashboard** | Agent-authored skills, themes, and dashboard layouts |\n| **file_watcher** · **gateway** · **loop** | Workspace file events, webhooks, scheduled and event-driven agents |\n\n```sh\nrelaydeck plugin list\nrelaydeck plugin new my-plugin          # scaffold: harness | provider | skill\nrelaydeck plugin dev .\u002Fmy-plugin        # editable install\nrelaydeck plugin verify .\u002Fmy-plugin     # manifest + skill validation\n```\n\nPlugins register **CLI commands, HTTP routes, dashboard lenses\u002Ftiles, workers,\nskills, and event subscriptions**; capabilities declared in `plugin.toml` gate SDK\naccess at runtime. See **[CONTRIBUTING.md](CONTRIBUTING.md)** for the authoring guide.\n\n---\n\n## Core concepts\n\n| Concept | Description |\n|---------|-------------|\n| **Daemon** | One per machine: PTYs, workers, FastAPI, SSE, WebSocket terminals |\n| **Workspace** | Registered project directory; plugins listed in `agent.toml` |\n| **Agent** | Named harness instance (`~\u002F.relaydeck\u002Fagents\u002F\u003Cid>.yaml` is source of truth) |\n| **Message** | Durable row in SQLite; injected to the PTY when live, drained on start |\n| **Worktree workspace** | Parallel git checkout as a first-class workspace (branch per task) |\n| **Plugin** | CLI + API + UI contributions declared in `plugin.toml` |\n\n```\n                    +---------------------------------------+\n  CLI \u002F scripts     |          relaydeck daemon             |     Web dashboard\n  relaydeck ... --->|  orchestrator . plugins . event bus   |\u003C---- localhost:8765\n       HTTP\u002FSSE     |         |              |              |      (live SSE)\n                    |    harness PTYs    SQLite state       |\n                    |   claude . codex . agents . msgs      |\n                    |   cursor . pi  .   usage . events     |\n                    +---------------------------------------+\n\n  ~\u002F.relaydeck\u002F   agents\u002F*.yaml   workspaces\u002F*\u002Fagent.toml   vault.yaml   runtime\u002Frelaydeck.db\n```\n\nOne install ships `relaydeck\u002F` (engine + host contract) and `plugins\u002F` (every\nofficial plugin). Core imports zero plugins; plugin authors import public facades\nonly: `relaydeck.sdk`, `relaydeck.harness`, `relaydeck.provider`, and so on.\n\n---\n\n## More\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Remote control via Telegram\u003C\u002Fb>\u003C\u002Fsummary>\n\n\u003Cbr>\n\nRoute a Telegram chat to an agent and drive the fleet from your phone. Slash\ncommands act on the routed agent without being forwarded into the harness, so\nthey behave uniformly across every harness type:\n\n| Command | Effect |\n|---------|--------|\n| `\u002Fnew` (`\u002Fclear`, `\u002Ffresh`, `\u002Freset`) | Start a fresh session (drops the harness resume flag) |\n| `\u002Frestart` | Restart the agent's PTY, keeping its history |\n| `\u002Fscreenshot` | Send a snapshot of the agent's live terminal |\n| `\u002Fstop` · `\u002Fstatus` · `\u002Fhelp` | Stop, inspect, or list commands |\n\n```sh\nrelaydeck telegram setup                  # store the bot token in the vault\nrelaydeck telegram routes-add \\           # map a chat to (workspace, agent)\n  --chat \u003Cchat-id> --workspace \u003Cws> --agent \u003Cagent>\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Observe external agent runtimes\u003C\u002Fb>\u003C\u002Fsummary>\n\n\u003Cbr>\n\nrelaydeck observes **Hermes Agent** and **OpenClaw** runtimes alongside the fleet\nit manages: health and risk posture only, with no mutation or secret access.\n\n```sh\nrelaydeck external detect ~\u002F.hermes\nrelaydeck external add ~\u002F.openclaw --probe\nrelaydeck external list\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Development\u003C\u002Fb>\u003C\u002Fsummary>\n\n\u003Cbr>\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Frelaydeck\u002Frelaydeck.git && cd relaydeck\nuv sync --group dev\nuv run pytest -q -m \"not e2e\"     # fast CI-equivalent suite\nuv run relaydeck plugin verify    # all bundled manifests\nuv run ruff check relaydeck tests plugins\n```\n\n| Resource | |\n|----------|---|\n| Contributing | [CONTRIBUTING.md](CONTRIBUTING.md) |\n| Testing | [TESTING.md](TESTING.md) |\n| Architecture notes | [AGENTS.md](AGENTS.md) |\n| Security | [SECURITY.md](SECURITY.md) |\n| Changelog | [CHANGELOG.md](CHANGELOG.md) |\n\n\u003C\u002Fdetails>\n\n---\n\n## Acknowledgements\n\nrelaydeck is **harness-native**: it wraps real CLI coding agents rather than\nshipping its own model runtime. Huge thanks to the\n**[pi](https:\u002F\u002Fgithub.com\u002Fearendil-works\u002Fpi)** coding agent (relaydeck's reference\nharness), and to Claude Code, Codex, Cursor, OpenCode, and Antigravity. We were\nalso inspired by ideas from across the open agent ecosystem, including Nous\nResearch's [Hermes Agent](https:\u002F\u002Fgithub.com\u002FNousResearch\u002Fhermes-agent) and\nOpenClaw, which relaydeck can observe read-only.\n\nThe dashboard builds on Lit, xterm.js, IBM Plex & JetBrains Mono, Heroicons, and\nSimple Icons. Full attributions live in **[CREDITS.md](CREDITS.md)**. Product\nnames, logos, and trademarks belong to their respective owners.\n\n## License\n\n[MIT](LICENSE)\n","relaydeck 是一个用于本地代理的微代理编排器。它通过单一本地守护进程和仪表板管理整个代理集群，支持并行运行CLI编码代理、实时终端、持久点对点消息传递以及自定义模型提供商和插件栈等功能。项目采用Python 3.12+开发，无需云账户或遥测数据收集，适合需要在本地环境中高效管理和扩展多个代理应用的场景。当前处于早期测试阶段，活跃迭代中，欢迎社区贡献与反馈。","2026-06-11 04:10:12","CREATED_QUERY"]