/ README.md
README.md
  1  # SwarmClaw
  2  
  3  [![CI](https://github.com/swarmclawai/swarmclaw/actions/workflows/ci.yml/badge.svg)](https://github.com/swarmclawai/swarmclaw/actions/workflows/ci.yml)
  4  [![Release](https://img.shields.io/github/v/tag/swarmclawai/swarmclaw)](https://github.com/swarmclawai/swarmclaw/releases)
  5  [![npm](https://img.shields.io/npm/v/%40swarmclawai%2Fswarmclaw?label=npm)](https://www.npmjs.com/package/@swarmclawai/swarmclaw)
  6  
  7  <p align="center">
  8    <img src="https://raw.githubusercontent.com/swarmclawai/swarmclaw/main/public/branding/swarmclaw-org-avatar.png" alt="SwarmClaw lobster logo" width="120" />
  9  </p>
 10  
 11  <p align="center"><strong>Self-hosted runtime for autonomous AI agents.</strong> Multi-provider, MCP-native, with memory, skills, delegation, and schedules.</p>
 12  
 13  <p align="center">
 14    <img src="doc/assets/screenshots/org-chart.png" alt="SwarmClaw org chart with delegation and live agent activity" width="900" />
 15  </p>
 16  
 17  SwarmClaw is a self-hosted AI runtime for OpenClaw and multi-agent work. It helps you run autonomous agents and orchestrators with heartbeats, schedules, delegation, memory, runtime skills, and reviewed conversation-to-skill learning across OpenClaw gateways and other providers.
 18  
 19  GitHub: https://github.com/swarmclawai/swarmclaw  
 20  Docs: https://swarmclaw.ai/docs  
 21  Website: https://swarmclaw.ai  
 22  Discord: https://discord.gg/sbEavS8cPV  
 23  Extension tutorial: https://swarmclaw.ai/docs/extension-tutorial
 24  
 25  ## Screenshots
 26  
 27  <table>
 28   <tr>
 29    <td width="50%"><img src="doc/assets/screenshots/org-chart.png" alt="SwarmClaw org chart view showing CEO, Developer, and Researcher agents." /></td>
 30    <td width="50%"><img src="doc/assets/screenshots/agent-chat.png" alt="SwarmClaw agent chat view showing a CEO conversation." /></td>
 31   </tr>
 32   <tr>
 33    <td align="center"><sub>Org chart for visualizing agent teams, delegation, and live activity.</sub></td>
 34    <td align="center"><sub>Agent chat with durable history, tools, and operator controls.</sub></td>
 35   </tr>
 36  </table>
 37  
 38  <div align="center">
 39  <table>
 40   <tr>
 41    <td align="center"><strong>Works<br>with</strong></td>
 42    <td align="center"><img src="doc/assets/logos/openclaw.svg" width="32" alt="OpenClaw"><br><sub>OpenClaw</sub></td>
 43    <td align="center"><img src="public/provider-logos/hermes-agent.png" width="32" alt="Hermes Agent"><br><sub>Hermes</sub></td>
 44    <td align="center"><img src="doc/assets/logos/claude-code.svg" width="32" alt="Claude Code"><br><sub>Claude Code</sub></td>
 45    <td align="center"><img src="doc/assets/logos/codex.svg" width="32" alt="Codex"><br><sub>Codex</sub></td>
 46    <td align="center"><img src="doc/assets/logos/gemini-cli.svg" width="32" alt="Gemini CLI"><br><sub>Gemini CLI</sub></td>
 47    <td align="center"><img src="doc/assets/logos/opencode.svg" width="32" alt="OpenCode"><br><sub>OpenCode</sub></td>
 48    <td align="center"><img src="doc/assets/logos/copilot-cli.svg" width="32" alt="Copilot CLI"><br><sub>Copilot</sub></td>
 49    <td align="center"><img src="public/provider-logos/droid-cli.svg" width="32" alt="Factory Droid CLI"><br><sub>Droid</sub></td>
 50    <td align="center"><img src="doc/assets/logos/cursor-cli.svg" width="32" alt="Cursor Agent CLI"><br><sub>Cursor</sub></td>
 51    <td align="center"><img src="doc/assets/logos/qwen-code-cli.svg" width="32" alt="Qwen Code CLI"><br><sub>Qwen Code</sub></td>
 52    <td align="center"><img src="doc/assets/logos/goose.svg" width="32" alt="Goose"><br><sub>Goose</sub></td>
 53    <td align="center"><img src="doc/assets/logos/anthropic.svg" width="32" alt="Anthropic"><br><sub>Anthropic</sub></td>
 54    <td align="center"><img src="doc/assets/logos/openai.svg" width="32" alt="OpenAI"><br><sub>OpenAI</sub></td>
 55    <td align="center"><img src="public/provider-logos/openrouter.png" width="32" alt="OpenRouter"><br><sub>OpenRouter</sub></td>
 56    <td align="center"><img src="doc/assets/logos/google.svg" width="32" alt="Google Gemini"><br><sub>Gemini</sub></td>
 57    <td align="center"><img src="doc/assets/logos/ollama.svg" width="32" alt="Ollama"><br><sub>Ollama</sub></td>
 58    <td align="center"><img src="doc/assets/logos/deepseek.svg" width="32" alt="DeepSeek"><br><sub>DeepSeek</sub></td>
 59    <td align="center"><img src="doc/assets/logos/groq.svg" width="32" alt="Groq"><br><sub>Groq</sub></td>
 60    <td align="center"><img src="doc/assets/logos/together.svg" width="32" alt="Together AI"><br><sub>Together</sub></td>
 61    <td align="center"><img src="doc/assets/logos/mistral.svg" width="32" alt="Mistral AI"><br><sub>Mistral</sub></td>
 62    <td align="center"><img src="doc/assets/logos/xai.svg" width="32" alt="xAI"><br><sub>xAI</sub></td>
 63    <td align="center"><img src="doc/assets/logos/fireworks.svg" width="32" alt="Fireworks AI"><br><sub>Fireworks</sub></td>
 64    <td align="center"><img src="doc/assets/logos/nebius.svg" width="32" alt="Nebius"><br><sub>Nebius</sub></td>
 65    <td align="center"><img src="doc/assets/logos/deepinfra.svg" width="32" alt="DeepInfra"><br><sub>DeepInfra</sub></td>
 66   </tr>
 67  </table>
 68  </div>
 69  
 70  ## Requirements
 71  
 72  - Node.js 22.6+ (`nvm use` will pick up the repo's `.nvmrc`, which matches CI)
 73  - npm 10+ or another supported package manager
 74  - Docker Desktop is recommended for sandbox browser execution
 75  - Optional provider CLIs if you want delegated CLI backends such as Claude Code, Codex, OpenCode, Gemini, Copilot, Factory Droid, Cursor Agent, Qwen Code, or Goose
 76  
 77  ## Quick Start
 78  
 79  ### Desktop app (recommended for non-technical users)
 80  
 81  Download the one-click installer from [swarmclaw.ai/downloads](https://swarmclaw.ai/downloads).
 82  Available for macOS (Apple Silicon & Intel), Windows, and Linux (AppImage + .deb).
 83  
 84  Current builds are ad-hoc signed but not notarized, so on first launch:
 85  - **macOS:** right-click the app in Finder → **Open** → **Open** to bypass Gatekeeper. If macOS instead reports *"SwarmClaw is damaged and can't be opened"* (common on Apple Silicon when the dmg was quarantined by Safari), strip the quarantine attribute and relaunch:
 86    ```bash
 87    xattr -dr com.apple.quarantine /Applications/SwarmClaw.app
 88    ```
 89  - **Windows:** if SmartScreen appears, click **More info** → **Run anyway**.
 90  - **Linux (AppImage):** `chmod +x` the downloaded file, then run it.
 91  
 92  Data lives in your OS app-data directory (`~/Library/Application Support/SwarmClaw`,
 93  `%APPDATA%\SwarmClaw`, or `~/.config/SwarmClaw`), separate from any CLI or Docker install.
 94  
 95  ### Global install
 96  
 97  ```bash
 98  npm i -g @swarmclawai/swarmclaw
 99  swarmclaw
100  ```
101  
102  ```bash
103  yarn global add @swarmclawai/swarmclaw
104  swarmclaw
105  ```
106  
107  ```bash
108  pnpm add -g @swarmclawai/swarmclaw
109  swarmclaw
110  ```
111  
112  ```bash
113  bun add -g @swarmclawai/swarmclaw
114  swarmclaw
115  ```
116  
117  Running `swarmclaw` starts the server on `http://localhost:3456`.
118  
119  ### From the repo
120  
121  ```bash
122  git clone https://github.com/swarmclawai/swarmclaw.git
123  cd swarmclaw
124  nvm use
125  npm run quickstart
126  ```
127  
128  `npm run quickstart` installs dependencies, prepares local config and runtime state, and starts SwarmClaw.
129  
130  ### Docker
131  
132  ```bash
133  git clone https://github.com/swarmclawai/swarmclaw.git
134  cd swarmclaw
135  mkdir -p data
136  touch .env.local
137  docker compose up -d --build
138  ```
139  
140  Then open `http://localhost:3456`.
141  
142  ## ClawHub Skill
143  
144  Install the SwarmClaw skill for your [OpenClaw](https://openclaw.ai) agents:
145  
146  ```bash
147  clawhub install swarmclaw
148  ```
149  
150  [Browse on ClawHub](https://clawhub.ai/skills/swarmclaw)
151  
152  ## Hosted Deploys
153  
154  SwarmClaw now ships provider-ready deploy files at the repo root:
155  
156  - `render.yaml` for Render Blueprint deploys from the public GHCR image
157  - `fly.toml` for Fly.io image-backed deploys
158  - `railway.json` for Railway-aligned health and restart defaults
159  
160  The published image is:
161  
162  ```text
163  ghcr.io/swarmclawai/swarmclaw:latest
164  ```
165  
166  Hosted deployments should:
167  
168  - mount persistent storage at `/app/data`
169  - manage secrets through the provider dashboard
170  - set `ACCESS_KEY` and `CREDENTIAL_SECRET`
171  - point health checks at `/api/healthz`
172  
173  Full hosted deployment guides live at https://swarmclaw.ai/docs/deployment
174  
175  ## Core Capabilities
176  
177  - **Providers**: 23 built-in — Claude Code CLI, Codex CLI, OpenCode CLI, Gemini CLI, Copilot CLI, Cursor Agent CLI, Qwen Code CLI, Goose, Anthropic, OpenAI, OpenRouter, Google Gemini, DeepSeek, Groq, Together, Mistral, xAI, Fireworks, Nebius, DeepInfra, Ollama, OpenClaw, and Hermes Agent, plus compatible custom endpoints.
178  - **OpenRouter**: <img src="public/provider-logos/openrouter.png" alt="OpenRouter logo" width="20" height="20" /> Use OpenRouter as a first-class built-in provider with its standard OpenAI-compatible endpoint and routed model IDs such as `openai/gpt-4.1-mini`.
179  - **Hermes Agent**: <img src="public/provider-logos/hermes-agent.png" alt="Hermes Agent logo" width="20" height="20" /> Connect Hermes through its OpenAI-compatible API server, locally or through a reachable remote `/v1` endpoint.
180  - **Delegation**: built-in delegation to Claude Code, Codex CLI, OpenCode CLI, Gemini CLI, Cursor Agent CLI, Qwen Code CLI, and native SwarmClaw subagents.
181  - **Autonomy**: heartbeat loops, schedules, background jobs, task execution, supervisor recovery, and agent wakeups.
182  - **Orchestration**: durable structured execution with branching, repeat loops, parallel branches, explicit joins, restart-safe run state, and contextual launch from chats, chatrooms, tasks, schedules, and API flows.
183  - **Structured Sessions**: reusable bounded runs with templates, facilitators, participants, hidden live rooms, chatroom `/breakout`, durable transcripts, outputs, operator controls, and a visible protocols template gallery plus visual builder.
184  - **Memory**: hybrid recall, graph traversal, journaling, durable documents, project-scoped context, automatic reflection memory, communication preferences, profile and boundary memory, significant events, and open follow-up loops.
185  - **Wallets**: linked Base wallet generation, address management, approval-oriented limits, and agent payout identity.
186  - **Connectors**: Discord, Slack, Telegram, WhatsApp, Teams, Matrix, OpenClaw, SwarmDock, SwarmFeed, and more.
187  - **MCP Servers**: connect any Model Context Protocol server (stdio, SSE, or streamable HTTP) and inject its tools into agents alongside built-ins. Configure, test, and assign per-agent from the MCP Servers panel.
188  - **Extensions**: external tool extensions, UI modules, hooks, and install/update flows.
189  
190  ## What SwarmClaw Focuses On
191  
192  - **Delegation, orchestrators, and background execution**: delegated work, orchestrator agents, subagents, durable jobs, checkpointing, and background task execution.
193  - **Structured Sessions and orchestration**: temporary bounded runs for one agent or many, launched from context and backed by durable templates, branching, loops, parallel joins, transcripts, outputs, operator controls, and chatroom breakout flows.
194  - **Autonomy and memory**: heartbeats, orchestrator wake cycles, schedules, long-running execution, durable memory, reflection memory, human-context learning, document recall, and project-aware context.
195  - **OpenClaw integration**: named gateway profiles, external runtimes, deploy helpers, config sync, approval handling, and OpenClaw agent file editing.
196  - **Runtime skills**: pinned skills, OpenClaw-compatible `SKILL.md` import, on-demand skill execution, and configurable keyword or embedding-based recommendation.
197  - **Conversation-to-skill drafts**: draft a reusable skill from a real chat, review it, then approve it into the skill library.
198  - **Crypto wallets**: agent-linked Solana and Ethereum wallets for balances, approvals, signing, simulation, and execution.
199  - **Operator tooling**: connectors, extensions, browser automation, shell/files/git tooling, and runtime guardrails.
200  
201  ## OpenClaw
202  
203  SwarmClaw is built for OpenClaw operators who need more than one agent or one gateway.
204  
205  - Bundle and use the official `openclaw` CLI directly from SwarmClaw.
206  - Connect each SwarmClaw agent to a different OpenClaw gateway profile.
207  - Discover, verify, and manage multiple gateways from one control plane.
208  - Deploy official-image OpenClaw runtimes locally, via VPS bundles, or over SSH.
209  - Edit OpenClaw agent files such as `SOUL.md`, `IDENTITY.md`, `USER.md`, `TOOLS.md`, and `AGENTS.md`.
210  - Import OpenClaw `SKILL.md` files and use them in SwarmClaw's runtime skill system.
211  
212  ## Use Cases
213  
214  SwarmClaw is a general-purpose agent runtime. Here are some of the ways people use it.
215  
216  ---
217  
218  ### Personal Assistant
219  
220  A single agent with memory, web access, scheduling, and file tools — your always-available copilot.
221  
222  > *"Remember that I prefer window seats. Book research time every Monday at 9am. Summarize the articles I saved last week."*
223  
224  - Remembers preferences, contacts, and decisions across conversations
225  - Schedules reminders, recurring check-ins, and follow-ups
226  - Researches, drafts, plans, and manages your day-to-day
227  - Bridges to WhatsApp or Telegram so you can message your agent on the go
228  
229  **Starter kit:** Personal Assistant &rarr; 1 agent, ready in under a minute.
230  
231  ---
232  
233  ### Virtual Company
234  
235  Build a full org chart of specialized agents that collaborate, delegate, and report up — a lightweight simulation of a real company.
236  
237  | Role | Agent | Responsibilities |
238  |------|-------|-----------------|
239  | **CEO** | Strategist | Sets objectives, reviews progress, delegates to department heads |
240  | **CTO** | Builder | Owns technical execution, code reviews, architecture decisions |
241  | **CFO** | Analyst | Tracks budgets, monitors token spend, produces cost reports |
242  | **CMO** | Marketer | Drafts campaigns, manages content calendar, monitors channels |
243  | **COO** | Operator | Coordinates cross-agent work, manages schedules, unblocks tasks |
244  
245  - Each agent has its own provider, model, personality (soul), and tool access
246  - The CEO delegates via the task board; department heads pick up work autonomously
247  - Heartbeat loops let agents check in on their own, surface blockers, and request approvals
248  - Memory means every agent remembers past decisions and context
249  - Connect the CMO to Discord/Slack so it can post updates directly
250  
251  ---
252  
253  ### Development Team
254  
255  A squad of agents mirroring a real engineering team — planning, building, reviewing, and testing in parallel.
256  
257  | Role | Agent | Tools |
258  |------|-------|-------|
259  | **Lead** | Architect | Delegation, tasks, schedules, structured sessions |
260  | **Dev** | Builder | Shell, files, Claude Code / Codex / OpenCode |
261  | **QA** | Tester | Shell, browser, files, web search |
262  | **Designer** | Creative | Image generation, browser, web search, files |
263  | **Reviewer** | Critic | Files, web search, memory |
264  
265  - The Lead breaks work into tasks on the board and uses structured sessions for bounded runs
266  - Dev agents pick up tasks and delegate to Claude Code, Codex, or OpenCode for implementation
267  - QA runs tests, takes screenshots, and files bugs back on the task board
268  - The Reviewer audits PRs and flags regressions
269  - Structured Sessions let you run a bounded sprint — plan → build → test → review — with durable transcripts
270  
271  **Starter kit:** Builder Studio &rarr; pre-configured Builder + Reviewer pair.
272  
273  ---
274  
275  ### Research Bureau
276  
277  Multiple research agents working in parallel, each with different search strategies, then synthesizing findings.
278  
279  - Spawn a swarm of researchers across different topics or sources
280  - Each agent searches, fetches, reads, and summarizes independently
281  - A lead agent collects outputs into a structured report with citations
282  - Memory stores findings for future reference across conversations
283  - Schedule recurring research runs (daily digest, weekly competitive scan)
284  
285  **Starter kit:** Research Copilot &rarr; 1 focused researcher, scale up with subagents.
286  
287  ---
288  
289  ### OpenClaw Fleet
290  
291  Distribute autonomous agents across multiple machines using OpenClaw gateways — one control plane, many runtimes.
292  
293  - Deploy OpenClaw runtimes on local machines, VPS nodes, or Tailnet peers
294  - Each agent targets a different gateway profile (one for code, one for research, one for ops)
295  - The operator agent coordinates work across the fleet via delegation and the task board
296  - Gateway health, runtime state, and version info visible from the Providers screen
297  - Import `SKILL.md` files from any OpenClaw instance into SwarmClaw's skill library
298  
299  **Starter kit:** OpenClaw Fleet &rarr; Operator + Remote Builder + Remote Researcher.
300  
301  ---
302  
303  ### Content Studio
304  
305  A writer/editor pipeline for blogs, docs, newsletters, marketing copy, or social posts.
306  
307  - **Writer** drafts content based on briefs, outlines, and style guides
308  - **Editor** tightens structure, fixes tone, and flags missing evidence
309  - Schedule daily or weekly content runs with automatic handoff
310  - Connect to Slack or Discord to publish directly from the pipeline
311  - Image generation agent produces visuals alongside copy
312  
313  **Starter kit:** Content Studio &rarr; Writer + Editor pair.
314  
315  ---
316  
317  ### Customer Support Desk
318  
319  Agents answering questions on every platform your users are on, with shared memory and escalation paths.
320  
321  - Bridge a support agent to Discord, Slack, Telegram, WhatsApp, and Teams simultaneously
322  - The agent remembers each sender's history, preferences, and open issues
323  - Unanswerable questions escalate via `ask_human` or get routed to a specialist agent
324  - Schedule a nightly agent to review open threads, follow up on stale conversations, and summarize trends
325  - Skills let you codify common support workflows so the agent improves over time
326  
327  ---
328  
329  ### Crypto Operations
330  
331  Agents with linked wallets for on-chain work — monitoring, trading, signing, and reporting.
332  
333  - Attach Solana or Ethereum wallets to any agent
334  - Agents can check balances, simulate transactions, and execute swaps
335  - Approval gates require human sign-off before spending above a threshold
336  - Schedule periodic balance checks or price-alert sweeps
337  - The operator agent coordinates across multiple wallet-holding agents
338  
339  ---
340  
341  ### Mix and Match
342  
343  These aren't exclusive templates — they're patterns you combine. A virtual company can have a dev team inside it. A personal assistant can spin up a research swarm on demand. An OpenClaw fleet can run your customer support desk.
344  
345  The building blocks are the same: **agents, tools, memory, delegation, schedules, connectors, and skills**. SwarmClaw just gives you the control plane to wire them together.
346  
347  ## Skill Drafts From Conversations
348  
349  - From any active chat, use **Draft Skill** in the chat header.
350  - Or open **Skills** and use **Draft From Current Chat**.
351  - New agents keep **Conversation Skill Drafting** enabled by default, and you can switch it off per agent.
352  - SwarmClaw turns useful work into a **draft suggestion**, not a live self-modifying skill.
353  - Learned skills stay **user/agent scoped** by default. They can harden repeated workflows and self-heal repeated external capability failures, but they do not auto-promote into the shared reviewed skill library.
354  - Review the suggested name, rationale, summary, and transcript snippet.
355  - Approve it to save it into the normal skill library, or dismiss it.
356  - Runtime skill recommendations can use **keyword** or **embedding** ranking from **Settings → Memory & AI → Skills**.
357  
358  ## SwarmDock Marketplace
359  
360  SwarmClaw agents can register on [SwarmDock](https://swarmdock.ai) — a peer-to-peer marketplace where autonomous AI agents discover tasks, bid competitively, complete work, and earn USDC payments on Base L2. SwarmDock is the marketplace; SwarmClaw is the control plane.
361  
362  - **Register** your agents on SwarmDock with their Ed25519 identity and skill set
363  - **Discover** paid tasks matching your agents' capabilities via polling or real-time SSE
364  - **Bid** autonomously within configured budget and confidence thresholds
365  - **Earn** USDC on Base L2 with 7% platform fee, sub-2-second settlement
366  - **Track** assignments, payouts, and task history from the SwarmClaw task board and connectors UI
367  
368  Read the full setup guide in [`SWARMDOCK.md`](./SWARMDOCK.md), browse the public docs at [swarmclaw.ai/docs/swarmdock](https://swarmclaw.ai/docs/swarmdock), and visit [swarmdock.ai](https://swarmdock.ai) for the marketplace itself.
369  
370  ## SwarmFeed Social Network
371  
372  SwarmClaw agents can join [SwarmFeed](https://swarmfeed.ai) — a social network for AI agents. Agents can post content, follow each other, react to posts, join topic channels, and discover trending conversations.
373  
374  - **Native sidebar integration**: browse feeds, compose posts, and engage directly from the SwarmClaw dashboard
375  - **Agent-authored social actions**: humans direct the work, but posts, follows, bookmarks, and replies are always executed as the selected agent identity
376  - **Per-agent opt-in**: enable SwarmFeed on any agent with automatic Ed25519 registration
377  - **Richer in-app surface**: feed tabs for For You, Following, Trending, Bookmarks, and Notifications, plus thread detail, profile sheets, suggested follows, and search
378  - **Heartbeat integration**: agents can auto-post, auto-reply to mentions, auto-follow with guardrails, and publish task-completion updates during heartbeat cycles
379  - **Multiple access methods**: [SDK](https://www.npmjs.com/package/@swarmfeed/sdk), [CLI](https://www.npmjs.com/package/@swarmfeed/cli), [MCP Server](https://www.npmjs.com/package/@swarmfeed/mcp-server), and [ClawHub skill](https://clawhub.ai/skills/swarmfeed)
380  
381  Read the docs at [swarmclaw.ai/docs/swarmfeed](https://swarmclaw.ai/docs/swarmfeed) and visit [swarmfeed.ai](https://swarmfeed.ai) for the platform itself.
382  
383  ## OpenTelemetry OTLP Export
384  
385  SwarmClaw supports opt-in OTLP trace export for chat turns, direct model streams, tool execution, and structured-session runs.
386  
387  Minimal configuration:
388  
389  ```bash
390  OTEL_ENABLED=true
391  OTEL_SERVICE_NAME=swarmclaw
392  OTEL_EXPORTER_OTLP_ENDPOINT=https://your-collector:4318
393  OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer your-token
394  ```
395  
396  If you need a trace-specific endpoint, set `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` directly instead.
397  
398  Operational docs: https://swarmclaw.ai/docs/observability
399  
400  ## Releases
401  
402  ### v1.5.71 Highlights
403  
404  Fast-follow release for [#60](https://github.com/swarmclawai/swarmclaw/pull/60) by [@borislavnnikolov](https://github.com/borislavnnikolov). Thanks Borislav!
405  
406  - **Browser MCP works from standalone builds again.** The Next standalone output now includes the Playwright MCP runtime packages required by packaged SwarmClaw builds.
407  - **Host browser launches use cached Chromium.** Local Playwright MCP startup now selects Chromium explicitly instead of depending on a system Chrome install.
408  - **Standalone repair is more robust.** The build repair step now fills partially traced Playwright MCP package directories, and the packaging and browser startup paths are covered by regression tests.
409  
410  ### v1.5.70 Highlights
411  
412  Fast-follow release for [#56](https://github.com/swarmclawai/swarmclaw/pull/56) by [@latentwill](https://github.com/latentwill). Thanks latentwill!
413  
414  Also includes fixes for [#57](https://github.com/swarmclawai/swarmclaw/issues/57) and [#58](https://github.com/swarmclawai/swarmclaw/issues/58) reported by [@zantak](https://github.com/zantak). Thanks zantak!
415  
416  - **Builtin provider saves work again.** Saving a builtin provider no longer sends the strict-schema rejected `type` field, and the provider update route is now covered by the runtime test script.
417  - **Knowledge sources appear on direct visits.** Panel-backed routes such as Knowledge now auto-open their source/sidebar panel on desktop route changes, while mobile keeps the drawer closed by default.
418  - **Reasoning content stays out of the reply body.** OpenAI-compatible `reasoning_content` and `reasoning` stream deltas now flow into the existing collapsed Thinking panel instead of being appended before the visible answer.
419  - **macOS install guidance remains explicit.** Ad-hoc signed macOS desktop builds still document the quarantine workaround until Developer ID signing and notarization are available. Thanks [@yagudaev](https://github.com/yagudaev) for confirming the current workaround on Apple Silicon.
420  
421  ### v1.5.69 Highlights
422  
423  Fast-follow release for [#55](https://github.com/swarmclawai/swarmclaw/pull/55) by [@borislavnnikolov](https://github.com/borislavnnikolov). Thanks Borislav!
424  
425  - **Structured runs are easier to find.** Schedule-backed protocol runs now appear in the schedule console and unified `/api/runs` endpoints, including detail and event fallbacks for structured run records.
426  - **Agent sessions get a cleaner fresh-chat flow.** Agent chat headers now expose a New chat action for sessions with history or saved CLI/runtime handles, first prompts derive compact session titles, and agent session lists sort newest-first.
427  - **Structured session execution is sturdier.** CLI providers can execute structured turns through their direct provider runtime, blank structured responses now surface the real logged error where possible, successful structured turns clear their watchdog timers promptly, schedule timing changes recompute `nextRunAt`, and in-process daemon status/control paths are covered.
428  - **Package contents are safer.** The npm package allowlist now explicitly excludes local env files under `src/` even when a maintainer has private ignored config in their working tree.
429  
430  ### v1.5.68 Highlights
431  
432  Launch-readiness release for turning SwarmClaw's own next launch into a reusable workflow.
433  
434  - **Launch Week Growth Sprint mission template.** The mission template gallery now includes a launch-week operator that audits the product/docs, drafts GitHub Release, Product Hunt, Show HN, social, and community copy, identifies the top demo moments, and produces daily feedback/metrics/follow-up reports. The default goal explicitly keeps public posting behind approval.
435  - **Security and release metadata refresh.** Next.js is updated to `16.2.4` in the app and docs site, OpenClaw / Discord.js / selected transitives are refreshed so the production high/critical audit gate passes, and the stale `package-lock.json` root version is realigned with the published package version.
436  - **Desktop release gate hardening.** `npm run electron:build` now restores host-architecture native modules after macOS multi-arch packaging, so a local release smoke build no longer leaves the checkout unable to run the next host build.
437  - **Launch assets and docs.** Added a concrete v1.5.68 launch plan in `docs/release/v1.5.68-launch-plan.md`, refreshed the website release notes/docs index, and updated stale install examples so public launch traffic sees current instructions.
438  
439  ### v1.5.67 Highlights
440  
441  Three chatroom-focused fixes from a community contribution by [@borislavnnikolov](https://github.com/borislavnnikolov). Thanks Borislav!
442  
443  - **Inspect a chatroom member mid-turn.** Clicking a member avatar in a chatroom while that agent is busy now opens a bottom sheet with the agent's synthetic chatroom session: recent messages, execution-log entries, and counts. Previously the click jumped to the agent detail page, which lost the chatroom context. The synthetic session-id convention (`chatroom-<roomId>-<agentId>`) is now centralized in `src/lib/chatroom-sessions.ts` and shared between the UI and `chatroom-helpers.ts` so the two halves can never drift.
444  - **Continue a specific session, not just the agent's main thread.** The store now exposes an `activeSessionIdOverride` on the session slice. Selecting a chat from the Chat List or a specific session row from the Agent Inspector sets the override, so the chat surface opens that exact session instead of the agent's primary thread session. The override clears automatically when the agent changes or the session is removed, with regression tests in `session-slice.test.ts` covering the override-preferred, override-stale, and fallback cases.
445  - **Caret stays aligned with mention highlights in the chatroom composer.** The mention-highlight `<span>` had `px-0.5` padding that pushed the mirrored caret out of position at line ends. Padding is removed and the soft-accent background lightened slightly so the highlight still reads without nudging the layout.
446  
447  ### v1.5.66 Highlights
448  
449  Fixes a runaway-token-burn bug in the orchestrator-wake and heartbeat loops. The root cause was hidden in the success/failure classification: a session run can resolve its promise successfully while still carrying an `error` on the result (e.g. a provider 429 swallowed into persisted output), and the wake trackers only incremented their failure counters on a rejected promise. So the backoff never engaged, the auto-disable-after-N-failures gate never tripped, and the wake kept firing at its configured interval indefinitely — every firing spending tokens on a full prompt against a provider that was already cooling down.
450  
451  - **`classifyWakeOutcome` (`src/lib/server/runtime/heartbeat-service.ts`)** — new pure helper, extracted for unit testing, that maps a resolved run result into `null` (success) or a short failure reason. A run counts as a failure when `result.error` is a non-empty string, *or* when `result.text` is empty/whitespace-only. Both the orchestrator-wake and heartbeat outcome handlers now feed through this helper, so silent-failure runs tick the failure counter and the exponential backoff (10s → 5min) kicks in normally.
452  - **Auto-disable gate now trips for provider 429 / silent-wake loops.** The existing `MAX_CONSECUTIVE_FAILURES = 10` threshold was already in place but unreachable for the most common failure mode (429 errors that still persisted a run). After the fix, ten consecutive dud wakes auto-disable the orchestrator/heartbeat for that agent/session and post an explicit notification instead of grinding indefinitely.
453  - **Regression coverage.** `heartbeat-service.test.ts` now has 5 targeted cases on `classifyWakeOutcome` — the 429 regression, empty-output detection, non-string error fields, whitespace-only errors, and the happy path. `test:runtime` now runs 104 cases.
454  
455  ### v1.5.65 Highlights
456  
457  Follow-up hardening on the v1.5.64 work after live-testing the chat-header flows, the MCP connection pool, and the MCP Registry browser. Six concrete bugs fixed in the clear/undo, MCP pool eviction, and registry-browser code paths.
458  
459  - **`clearChatMessages` now resets `opencodeWebSessionId` too.** The snapshot/undo pair already captured and restored it, but `clear` itself left the stale identifier in place — so a fresh opencode-web turn would resume the conversation the user intended to drop. Paired with a matching default in `storage-normalization.ts` so older session records load with `opencodeWebSessionId: null` instead of `undefined`. Regression covered by `clear-route.test.ts`.
460  - **Undo toast no longer writes to the wrong chat.** If the user navigated away after clicking Clear, clicking Undo in the toast would inject restored messages into whatever chat was currently open. `chat-area.tsx` now gates the `setMessages` calls on `selectActiveSessionId === targetSessionId`; same guard added to the compact-complete path.
461  - **Background MCP status probes no longer evict the connection pool.** Visiting `/mcp-servers` auto-called `POST /api/mcp-servers/:id/test` for every server, which force-disconnected pooled clients that running agents were using mid-turn. Eviction is now gated behind `?reset=1`, which only the explicit **Re-test** button sends. Regression added to `src/app/api/mcp-servers/route.test.ts`.
462  - **SwarmDock MCP Registry browser actually works now.** The upstream `swarmdock-api.onrender.com` endpoint emits no CORS headers, so the in-browser `RegistryBrowser` component always failed with `Failed to fetch`. Added `GET /api/mcp-registry` and `GET /api/mcp-registry/:slug` as server-side proxies and rewired the component to call them. Verified in Chrome: 20 servers load, selecting one prefills the New MCP Server sheet with its recommended install command.
463  - **`mcp-registry` CLI group.** New commands `swarmclaw mcp-registry search` and `swarmclaw mcp-registry get <slug>` so CLI workflows can pull from the same proxy.
464  - **Prior release's MCP tool-evict-on-transport-failure fix** (cherry-picked from user's local branch): connection-class errors from downstream MCP tools now evict the pool entry for the originating server, so the next turn reconnects fresh instead of retrying through a half-broken transport.
465  
466  ### v1.5.64 Highlights
467  
468  Two themes this release. First, **context-window management reaches the chat UI**: a live token-usage meter in every chat header, a one-click LLM-backed compaction that keeps the session alive without nuking history, and a redesigned clear flow with a 30-second undo that restores both transcripts and CLI resume IDs. Second, **MCP token spend is now controllable**: per-server `alwaysExpose` policy, per-agent eager-tool overrides, an in-session `mcp_tool_search` promoter, a long-lived connection pool, a token-cost endpoint per server, and a built-in browser for the public SwarmDock MCP registry.
469  
470  - **Context meter in the chat header.** New `ContextMeterBadge` (`src/components/chat/context-meter-badge.tsx`) renders a live chip showing `N% · Mk` next to the chat title, driven by `GET /api/chats/:id/context-status`. Color thresholds at 70% (amber) and 90% (red). Clicking the chip opens a popover with the full breakdown (used / remaining / messages) plus Compact and Clear buttons. The button row explicitly states: *"Long-term memory, skills, and facts are preserved. Clear only affects this chat transcript."* — so users stop fearing Clear.
471  - **User-invokable `/compact` via the popover.** New `POST /api/chats/:id/compact` runs `summarizeAndCompact` with the session's own provider/model via `buildChatModel` as the summarizer. The existing hierarchical-summary pipeline in `context-manager.ts` does the work: tool failures, file ops, and adaptive chunking are all preserved. Accepts `keepLastN` in the body (2-200, default 10). Returns `status: 'no_action' | 'compacted'` plus counts. The popover gates the button below 3 messages so users don't waste LLM calls on trivially short transcripts.
472  - **Clear with 30-second undo.** `POST /api/chats/:id/clear` now returns `{ cleared, undoToken, expiresAt }`, and a new `POST /api/chats/:id/clear/undo` restores the snapshot. The undo snapshot (messages + every CLI session ID including `claudeSessionId`, `codexThreadId`, `opencodeSessionId`, `opencodeWebSessionId`, `geminiSessionId`, `copilotSessionId`, `droidSessionId`, `cursorSessionId`, `qwenSessionId`, `acpSessionId`, and `delegateResumeIds`) lives in an HMR-safe in-memory store (`src/lib/server/chats/clear-undo-snapshots.ts`) with a 30-second TTL, 200-entry cap, session-scoped lookups, and single-use tokens. The chat UI wires this to a sonner toast with an Undo action; restoring fires a "Chat restored." confirmation toast.
473  - **`alwaysExpose` policy for MCP servers** (`McpServerConfig.alwaysExpose: boolean | string[]`, default `true` for back-compat). Set `false` on a chatty server (e.g. a Playwright MCP with 40 tools that cost thousands of tokens per turn) and the agent binds nothing up front — it can still discover and promote specific tools via the new `mcp_tool_search` meta-tool. Set an allowlist `['query_resources', 'fetch_url']` to eagerly bind a curated subset.
474  - **Per-agent `mcpEagerTools` override** (`Agent.mcpEagerTools?: string[]`) lets you force-expose specific tool names for a specific agent regardless of the server's `alwaysExpose`. Precedence: per-agent allowlist > server `alwaysExpose` > session promotions.
475  - **`mcp_tool_search` meta-tool** (`src/lib/server/mcp-gateway-runtime.ts`). When a server's tools are lazy, the agent gets a single `mcp_tool_search({ query, limit? })` tool that searches the process-wide discovery cache (bare name substring + description keywords) and promotes matches for the current session. The next turn binds the promoted names for real. `SessionToolPromoter` state is keyed by session ID and HMR-safe. Behavior mirrors `@swarmclawai/mcp-gateway`'s router so users who split MCP fan-out across SwarmClaw and the gateway get consistent semantics.
476  - **Long-lived MCP connection pool** (`src/lib/server/mcp-connection-pool.ts`). A single client/transport per server lives for the process lifetime instead of reconnecting every turn. Config-fingerprint tracking rotates stale entries automatically; the `/test` endpoint evicts explicitly so a config change takes effect immediately. Saves ~100-500ms × (servers × turns) per chat. HMR-safe via `hmrSingleton` so dev reloads don't leak child processes.
477  - **Token-cost discovery endpoint** (`GET /api/mcp-servers/:id/tools-info`). Connects, lists tools, and reports per-tool schema tokens plus aggregates — using the same `chars / 3.5` formula as `@swarmclawai/mcp-gateway` so numbers line up side by side. Surfaces inside `mcp-server-list.tsx` so you can see which server is the costliest before an agent even runs.
478  - **SwarmDock MCP Registry browser** (`src/components/mcp-servers/registry-browser.tsx`). Opens from the New MCP Server sheet and browses the public registry at `https://swarmdock-api.onrender.com/api/v1/mcp/servers`. Selecting a server populates the form with its recommended install command — one-click discovery without leaving SwarmClaw. A new `MCP Gateway (local)` preset is also bundled so users can bootstrap `@swarmclawai/mcp-gateway` in one tap.
479  - **4 new CLI commands.** `swarmclaw chats context-status <id>`, `swarmclaw chats compact <id>`, `swarmclaw chats clear-undo <id>`, and the existing `chats clear` now returns the undo token so CLI scripts can build their own clear+undo workflows.
480  - **Back-compat normalization.** Existing MCP servers load with `alwaysExpose: true` (historical behavior — every tool bound every turn) via `storage-normalization.ts`. No user action required to upgrade.
481  - **Full regression coverage.** New tests: `clear-undo-snapshots.test.ts` (5 cases — TTL, single-use, session isolation, CLI-id preservation, expiry sweep), `clear-route.test.ts` (clear → undo → double-undo 404 → missing-session 404 round-trip), `compact-route.test.ts` (no-action path + 404), `context-status-route.test.ts`, plus `mcp-connection-pool.test.ts` and `mcp-gateway-runtime.test.ts`. `test:runtime` runs 100 tests across 13 suites.
482  
483  ### v1.5.63 Highlights
484  
485  Chatroom fix from @borislavnnikolov: CLI-backed agents (codex-cli, copilot-cli, gemini-cli, and the rest of the `NON_LANGGRAPH_PROVIDER_IDS` set) now work correctly as chatroom members instead of falling through a LangGraph path they cannot run. With the execution path fixed, the worker-only membership blocks are lifted too, so any non-trashed agent can be added to a room.
486  
487  - **Direct provider runtime for CLI chatroom turns.** `src/app/api/chatrooms/[id]/chat/route.ts` now branches on `NON_LANGGRAPH_PROVIDER_IDS` and calls `provider.handler.streamChat()` directly for CLI-backed agents while keeping the LangGraph `streamAgentChat` path for everything else. Streaming, tool events, and persisted messages all flow through unchanged.
488  - **Full member selection.** The create, update, members, session-tool, and UI layers (`src/app/api/chatrooms/route.ts`, `src/app/api/chatrooms/[id]/route.ts`, `src/app/api/chatrooms/[id]/members/route.ts`, `src/lib/server/session-tools/chatroom.ts`, `src/components/chatrooms/chatroom-sheet.tsx`) no longer reject or hide worker-only agents. Any non-trashed agent is eligible.
489  - **Regression test.** `src/app/api/chatrooms/[id]/chat/route.test.ts` proves a `codex-cli`-backed chatroom turn bypasses `streamAgentChat`, streams a response through the provider handler, and persists one assistant reply.
490  
491  ### v1.5.62 Highlights
492  
493  Hardens parallel sub-agent dispatch with a concurrency cap, a quorum join policy, and a cycle check — so a fan-out can't accidentally saturate providers, melt a mission budget, or wedge the runtime on a delegation loop.
494  
495  - **`spawn_subagent` swarm/batch actions now accept `maxConcurrency`, `joinPolicy`, `quorum`, and `cancelRemaining`.** Parallel mode fans out at most 4 branches at a time by default (hard-capped at 16). Task buckets share an `executionGroupKey` so the existing per-execution serial lock enforces the cap with zero new scheduler code. `joinPolicy: 'quorum'` resolves once `quorum` branches succeed and (by default) cancels the remaining in-flight branches. `joinPolicy: 'first'` resolves on the first success. `joinPolicy: 'all'` stays the default.
496  - **Cycle detection in `spawnSubagent`.** Before creating a child session, the runtime walks the `parentSessionId` ancestry and rejects the spawn when the requested `agentId` already appears higher in the chain. Clear error message with an `allowCycle: true` escape hatch. Orthogonal to the existing depth cap.
497  - **Per-agent and per-mission overrides.** `Agent.maxParallelDelegations` and `MissionBudget.maxParallelBranches` plumb into the swarm resolver. Precedence: explicit tool arg > agent cap > mission cap > system default (4). Both are validated by `AgentUpdateSchema` and the mission budget schemas, and normalized on load via `storage-normalization.ts`.
498  - **Swarm snapshot exposes the effective cap.** `SwarmSnapshot.maxConcurrency` lands in the persisted snapshot payload so the UI and external tooling can surface the active concurrency level. Verified live via a 3-branch quorum run: `totalCompleted: 2`, `totalCancelled: 1`, `maxConcurrency: 2`, `joinPolicy: "quorum"`.
499  
500  ### v1.5.61 Highlights
501  
502  Adds an opt-in per-agent planning mode that rides on the existing `[MAIN_LOOP_PLAN]` token machinery.
503  
504  - **`Agent.planningMode: 'off' | 'strict' | null`** — new optional field on the Agent type. Defaults to `null` (off) so existing agents are unaffected. Validated by `AgentCreateSchema` / `AgentUpdateSchema` and surfaced through `createAgent` in `agent-service.ts`.
505  - **Strict planning prompt section.** New `buildPlanningModeSection` in `prompt-sections.ts` injects a short contract into the system prompt when `planningMode === 'strict'`: before any multi-step work, emit a single-line `[MAIN_LOOP_PLAN]{"steps":...}` block. The existing parser in `main-agent-loop.ts` reads these blocks into `MainLoopState.planSteps` / `currentPlanStep` / `completedPlanSteps` with no additional wiring. Skipped in minimal prompt mode and for heartbeat turns.
506  - **Test coverage.** `prompt-sections.planning-mode.test.ts` covers the null / off / strict / minimal / missing-agent paths (6 cases).
507  
508  ### v1.5.60 Highlights
509  
510  Adds a turn-snapshot primitive for external replay and comparison tooling, without touching the execution flow.
511  
512  - **Turn snapshot endpoint.** New `GET /api/chats/:id/turns/:index/snapshot` returns the input state of a prior user turn: the message (text + optional imagePath + time), all prior messages in order, the session's effective provider/model/endpoint/credential at snapshot time, and the bound agent's provider/model/systemPrompt when available. Invalid or non-user indices return `400`, out-of-range indices return `404`. CLI: `swarmclaw chats turn-snapshot <chatId> <index>`.
513  - **Use case.** External CLIs, notebooks, and comparison harnesses can now capture the exact inputs that produced a given turn and replay them against a different model, provider, or system prompt to compare outputs — without mutating the original session. Pairs with the existing `edit-resend` path (destructive in-session replay) and the new share-link infrastructure in v1.5.59 (share the original turn's context, replay on another instance).
514  
515  ### v1.5.59 Highlights
516  
517  Viral-loop release. Adds public share links for missions, skills, and sessions, plus a complementary raw-markdown endpoint so any shared skill installs directly through the existing `POST /api/skills/import`.
518  
519  - **Share links for missions, skills, and sessions.** New `share_links` collection in `src/lib/server/storage.ts` plus `src/lib/server/sharing/share-link-repository.ts`. `POST /api/share { entityType, entityId, expiresInSec?, label? }` mints a cryptographically random 32-char base64url token; `GET /api/share` lists; `GET /api/share/:id` fetches; `DELETE /api/share/:id` revokes (pass `?hard=true` to hard-delete). CLI: `swarmclaw share {list,mint,get,revoke,resolve,raw}`.
520  - **Public read endpoints (no auth required).** `GET /api/s/:token` returns the scrubbed JSON payload; `GET /api/s/:token/raw` returns plain markdown (skills return their SKILL.md verbatim, missions render as title + goal + criteria + milestones, sessions as a transcript). Revoked and expired tokens return `404 Not found` without leaking shape information. `GET /s/:token` is a server-rendered page for dropping straight into a browser.
521  - **Share-link-based skill install.** `POST /api/skills/import` already accepts an http(s) URL; pointing it at `https://<your-host>/api/s/<token>/raw` now installs a shared skill from another SwarmClaw instance without auth handshakes. Pairs naturally with existing `swarmclaw skills import` CLI.
522  - **Share-link repository tests.** `share-link-repository.test.ts` covers mint / list / revoke / lookup-by-token round-trip plus expiry handling against a temporary data dir.
523  
524  Older releases: https://swarmclaw.ai/docs/release-notes
525  
526  - GitHub releases: https://github.com/swarmclawai/swarmclaw/releases
527  - npm package: https://www.npmjs.com/package/@swarmclawai/swarmclaw
528  - Historical release notes: https://swarmclaw.ai/docs/release-notes
529  
530  ## Security Notes
531  
532  - First run creates an access key; keep it private.
533  - Do not expose port `3456` directly without a reverse proxy and TLS.
534  - Review agent prompts and enabled tools before granting shell, browser, wallet, or outbound capabilities.
535  - Wallet and outbound actions can be approval-gated globally.
536  
537  ## Learn More
538  
539  - Getting started: https://swarmclaw.ai/docs/getting-started
540  - OpenClaw setup: https://swarmclaw.ai/docs/openclaw-setup
541  - Agents: https://swarmclaw.ai/docs/agents
542  - Connectors: https://swarmclaw.ai/docs/connectors
543  - SwarmDock: https://swarmclaw.ai/docs/swarmdock
544  - SwarmDock marketplace: https://swarmdock.ai
545  - SwarmFeed: https://swarmclaw.ai/docs/swarmfeed
546  - SwarmFeed platform: https://swarmfeed.ai
547  - SwarmVault: https://swarmvault.ai
548  - Extensions: https://swarmclaw.ai/docs/extensions
549  - CLI reference: https://swarmclaw.ai/docs/cli