@swarmclawai/swarmclaw 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,169 +8,52 @@
8
8
  <img src="https://raw.githubusercontent.com/swarmclawai/swarmclaw/main/public/branding/swarmclaw-org-avatar.png" alt="SwarmClaw lobster logo" width="120" />
9
9
  </p>
10
10
 
11
- The orchestration dashboard for OpenClaw. Manage a swarm of OpenClaws + 14 other AI providers, orchestrate LangGraph workflows, schedule tasks, and bridge agents to 10+ chat platforms all from one self-hosted UI.
11
+ SwarmClaw is a self-hosted AI orchestration runtime for OpenClaw and multi-agent work. It helps you run autonomous agents with heartbeats, schedules, delegation, memory, runtime skills, and reviewed conversation-to-skill learning across OpenClaw gateways and other providers.
12
12
 
13
- Inspired by [OpenClaw](https://github.com/openclaw).
13
+ GitHub: https://github.com/swarmclawai/swarmclaw
14
+ Docs: https://swarmclaw.ai/docs
15
+ Website: https://swarmclaw.ai
16
+ Plugin tutorial: https://swarmclaw.ai/docs/plugin-tutorial
14
17
 
15
- **[Documentation](https://swarmclaw.ai/docs)** | **[Plugin Tutorial](https://swarmclaw.ai/docs/plugin-tutorial)** | **[Website](https://swarmclaw.ai)**
18
+ ## What SwarmClaw Focuses On
16
19
 
17
- ## Documentation Map
20
+ - **AI orchestration**: LangGraph-backed orchestration, delegated work, subagents, durable jobs, checkpointing, and background task execution.
21
+ - **Autonomy and memory**: heartbeats, schedules, long-running execution, durable memory, working memory, document recall, and project-aware context.
22
+ - **OpenClaw integration**: named gateway profiles, external runtimes, deploy helpers, config sync, approval handling, and OpenClaw agent file editing.
23
+ - **Runtime skills**: pinned skills, OpenClaw-compatible `SKILL.md` import, on-demand skill execution, and configurable keyword or embedding-based recommendation.
24
+ - **Conversation-to-skill drafts**: draft a reusable skill from a real chat, review it, then approve it into the skill library.
25
+ - **Crypto wallets**: agent-linked Solana and Ethereum wallets for balances, approvals, signing, simulation, and execution.
26
+ - **Operator tooling**: connectors, plugins, browser automation, shell/files/git tooling, and runtime guardrails.
18
27
 
19
- - [Getting Started](https://swarmclaw.ai/docs/getting-started) - install and first-run setup
20
- - [Providers](https://swarmclaw.ai/docs/providers) - provider setup and failover options
21
- - [OpenClaw Setup](https://swarmclaw.ai/docs/openclaw-setup) - local, VPS, and hosted OpenClaw deployment paths
22
- - [Agents](https://swarmclaw.ai/docs/agents) - agent configuration, tools, and platform capabilities
23
- - [Tools](https://swarmclaw.ai/docs/tools) - built-in tool reference and guardrails
24
- - [Orchestration](https://swarmclaw.ai/docs/orchestration) - multi-agent flows, checkpoints, and restore
25
- - [Chatrooms](https://swarmclaw.ai/docs/chatrooms) - multi-agent rooms and routing
26
- - [Connectors](https://swarmclaw.ai/docs/connectors) - Discord/Slack/Telegram/WhatsApp and more
27
- - [Plugins](https://swarmclaw.ai/docs/plugins) - plugin architecture and extension points
28
- - [CLI Reference](https://swarmclaw.ai/docs/cli) - complete command reference
29
- - [Deployment](https://swarmclaw.ai/docs/deployment) - VPS, Docker, and production setup
28
+ ## OpenClaw
30
29
 
31
- ![Dashboard](public/screenshots/dashboard.png)
32
- ![Agent Builder](public/screenshots/agents.png)
33
- ![Task Board](public/screenshots/tasks.png)
30
+ SwarmClaw is built for OpenClaw operators who need more than one agent or one gateway.
34
31
 
35
- ## OpenClaw Integration
36
-
37
- SwarmClaw was built for OpenClaw users who outgrew a single agent. Connect each SwarmClaw agent to a different OpenClaw gateway (one local, several remote) and manage the whole swarm from one UI.
38
-
39
- SwarmClaw includes the `openclaw` CLI as a bundled dependency, so there is no separate OpenClaw CLI install step.
40
-
41
- The Providers screen now supports named OpenClaw gateway profiles with discovery, health checks, default-gateway selection, and an External Agent Runtimes view for remote workers that register/heartbeat into SwarmClaw.
42
-
43
- SwarmClaw now also includes **Smart Deploy** for OpenClaw in three places:
44
-
45
- - **Onboarding** - non-technical users can launch a local OpenClaw runtime or generate a remote bundle before they finish first-run setup
46
- - **Providers -> OpenClaw Gateways** - operators can deploy or prepare more gateways later without leaving the main app
47
- - **Gateway editor** - every gateway profile includes the same deploy panel for local restarts, VPS bundles, and hosted repo-backed deployments
48
-
49
- The deployment flow stays **in-house and official-only**:
50
-
51
- - local deploys run the bundled official `openclaw` CLI directly from SwarmClaw
52
- - VPS deploys use the official OpenClaw Docker image with prefilled `.env`, `docker-compose.yml`, `bootstrap.sh`, and `cloud-init.yaml`
53
- - hosted templates target the official OpenClaw repo for Render, Fly.io, and Railway
54
-
55
- Supported VPS presets currently include Hetzner, DigitalOcean, Vultr, Linode, Lightsail, Google Cloud, Azure, OCI, and a generic Ubuntu host path. Smart defaults prefill the gateway token, endpoint, storage paths, and copy-paste commands so the resulting gateway can be saved into SwarmClaw with minimal manual editing.
56
-
57
- For existing hosts, SwarmClaw can also push the same official-image bundle **over SSH** and then keep remote lifecycle controls attached to that saved gateway profile: start, stop, restart, upgrade, backup, restore, and token rotation.
58
-
59
- The OpenClaw Control Plane in SwarmClaw adds:
60
- - Reload mode switching (`hot`, `hybrid`, `full`)
61
- - Config issue detection and guided repair
62
- - Remote history sync
63
- - Live execution approval handling
64
- - Gateway import/export JSON, clone flows, and richer external runtime fleet visibility
65
- - Agent and route-target preferences for steering work toward OpenClaw gateways by tags or use case (`local-dev`, `single-vps`, `private-tailnet`, `browser-heavy`, `team-control`)
66
-
67
- The Agent Inspector Panel lets you edit OpenClaw files (`SOUL.md`, `IDENTITY.md`, `USER.md`), tune personality/system behavior, and manage OpenClaw-compatible skills. Skills are now discoverable by default, pinned skills stay always-on for an agent, and executable `SKILL.md` metadata can drive on-demand runtime skill selection. SwarmClaw also supports importing OpenClaw `SKILL.md` files from URL.
68
-
69
- To connect an agent to an OpenClaw gateway:
70
-
71
- 1. Optional: create a named gateway profile in **Providers** and mark a default
72
- 2. Create or edit an agent
73
- 3. Toggle **OpenClaw Gateway** ON
74
- 4. Select a saved gateway profile or enter a direct gateway URL/token override
75
- 5. Click **Connect** — approve the device in your gateway's dashboard if prompted, then **Retry Connection**
76
-
77
- Each agent can point to a **different** OpenClaw gateway profile or direct endpoint — one local, several remote. This is how you manage a **swarm of OpenClaws** from a single dashboard.
78
-
79
- URLs without a protocol are auto-prefixed with `http://`. For remote gateways with TLS, use `https://` explicitly.
80
-
81
- CLI operators can use the same deploy surface without opening the UI:
82
-
83
- ```bash
84
- swarmclaw openclaw deploy-status
85
- swarmclaw openclaw deploy-local-start --data '{"port":18789}'
86
- swarmclaw openclaw deploy-local-restart --data '{"port":18789}'
87
- swarmclaw openclaw deploy-bundle --data '{"template":"docker","provider":"hetzner","target":"openclaw.example.com"}'
88
- swarmclaw openclaw deploy-ssh --data '{"target":"openclaw.example.com","provider":"hetzner","ssh":{"host":"your-vps-ip"}}'
89
- swarmclaw openclaw remote-backup --data '{"ssh":{"host":"your-vps-ip"}}'
90
- swarmclaw openclaw remote-restore --data '{"backupPath":"/opt/openclaw/backups/openclaw-backup-123.tgz","ssh":{"host":"your-vps-ip"}}'
91
- swarmclaw openclaw deploy-verify --data '{"endpoint":"https://openclaw.example.com/v1"}'
92
- ```
93
-
94
- ## SwarmClaw ClawHub Skill
95
-
96
- Use the `swarmclaw` ClawHub skill when you want an OpenClaw agent to operate your SwarmClaw control plane directly from chat: list agents, dispatch tasks, check chats, run diagnostics, and coordinate multi-agent work.
97
-
98
- Install it from ClawHub:
99
-
100
- ```bash
101
- clawhub install swarmclaw
102
- ```
103
-
104
- Skill source and runbook: [`swarmclaw/SKILL.md`](swarmclaw/SKILL.md).
105
-
106
- - Always use the access key authentication (generated on first run)
107
- - Never expose port 3456 without a reverse proxy + TLS
108
- - Review agent system prompts before giving them shell or browser tools
109
- - Repeated failed access key attempts are rate-limited to slow brute-force attacks
110
-
111
- ## Requirements
112
-
113
- - **Node.js** 22.6+
114
- - One of: **npm** 10+, **pnpm**, **Yarn**, or **Bun**
115
- - **Claude Code CLI** (optional, for `claude-cli` provider) — [Install](https://docs.anthropic.com/en/docs/claude-code/overview)
116
- - **OpenAI Codex CLI** (optional, for `codex-cli` provider) — [Install](https://github.com/openai/codex)
117
- - **OpenCode CLI** (optional, for `opencode-cli` provider) — [Install](https://github.com/opencode-ai/opencode)
118
- - **Gemini CLI** (optional, for `delegate` backend `gemini`) — install and authenticate `gemini` on your host
119
- - **Docker Desktop** (optional, recommended) — enables container sandboxes for shell, browser, and `sandbox_exec`; without Docker, SwarmClaw falls back to host execution
32
+ - Bundle and use the official `openclaw` CLI directly from SwarmClaw.
33
+ - Connect each SwarmClaw agent to a different OpenClaw gateway profile.
34
+ - Discover, verify, and manage multiple gateways from one control plane.
35
+ - Deploy official-image OpenClaw runtimes locally, via VPS bundles, or over SSH.
36
+ - Edit OpenClaw agent files such as `SOUL.md`, `IDENTITY.md`, `USER.md`, `TOOLS.md`, and `AGENTS.md`.
37
+ - Import OpenClaw `SKILL.md` files and use them in SwarmClaw’s runtime skill system.
120
38
 
121
39
  ## Quick Start
122
40
 
123
- SwarmClaw is published to the npm registry once and can be installed with `npm`, `pnpm`, `yarn`, or `bun`. There is no separate package-manager signup for end users.
124
-
125
41
  ### Global install
126
42
 
127
43
  ```bash
128
44
  npm i -g @swarmclawai/swarmclaw
129
- pnpm add -g @swarmclawai/swarmclaw
130
- yarn global add @swarmclawai/swarmclaw
131
- bun add -g @swarmclawai/swarmclaw
132
45
  swarmclaw
133
46
  ```
134
47
 
135
- Running `swarmclaw` with no arguments starts the server on `http://localhost:3456`. You can also use `swarmclaw server` explicitly, or pass a subcommand (e.g. `swarmclaw agents list`) to use the CLI.
136
- Global install runs `postinstall`, which rebuilds `better-sqlite3` and prepares the sandbox browser image when Docker is available.
137
- If Docker is not installed yet, SwarmClaw keeps running and falls back to host execution for shell, browser, and `sandbox_exec`.
138
- No Deno install is required for the local `sandbox_exec` path.
139
- Runtime state defaults to `~/.swarmclaw` unless you set `SWARMCLAW_HOME`.
140
- If the standalone server bundle is missing, the first launch builds it under `<swarmclaw-home>/builds/package-<version>` before starting.
141
-
142
- ### Local project install
143
-
144
- ```bash
145
- npm i @swarmclawai/swarmclaw
146
- npx swarmclaw
147
- ```
148
-
149
- Local installs keep runtime state in `<project>/.swarmclaw` by default. The same project-local install works with `pnpm`, `yarn`, or `bun`; use that package manager's exec command to launch the local binary, or run `./node_modules/.bin/swarmclaw` directly.
48
+ Running `swarmclaw` starts the server on `http://localhost:3456`.
150
49
 
151
50
  ### One-off run
152
51
 
153
52
  ```bash
154
53
  npx @swarmclawai/swarmclaw
155
- pnpm dlx @swarmclawai/swarmclaw
156
- yarn dlx @swarmclawai/swarmclaw
157
- bunx @swarmclawai/swarmclaw
158
54
  ```
159
55
 
160
- One-off runs use the published package without keeping a project-local install. Runtime state defaults to `~/.swarmclaw` unless you set `SWARMCLAW_HOME`.
161
-
162
- ### Install script
163
-
164
- ```bash
165
- curl -fsSL https://raw.githubusercontent.com/swarmclawai/swarmclaw/main/install.sh | bash
166
- ```
167
-
168
- The installer resolves the latest stable release tag and installs that version by default.
169
- It also builds the production bundle so `npm run start` is ready immediately after install.
170
- No Deno install is required; local sandbox execution is Docker-first with automatic host Node fallback.
171
- To pin a version: `SWARMCLAW_VERSION=v1.0.3 curl ... | bash`
172
-
173
- Or run locally from the repo (friendly for non-technical users):
56
+ ### From the repo
174
57
 
175
58
  ```bash
176
59
  git clone https://github.com/swarmclawai/swarmclaw.git
@@ -178,624 +61,48 @@ cd swarmclaw
178
61
  npm run quickstart
179
62
  ```
180
63
 
181
- `npm run quickstart` will:
182
- - Check Node/npm versions
183
- - Install dependencies
184
- - Prepare the Docker sandbox/browser runtime when Docker is available
185
- - Prepare `.env.local` and `data/`
186
- - Start the app at `http://localhost:3456`
187
-
188
- For the packaged production server, use:
189
-
190
- ```bash
191
- npm run quickstart:prod
192
- ```
193
-
194
- If you prefer another package manager for local development:
195
-
196
- ```bash
197
- pnpm install && pnpm dev
198
- yarn install && yarn dev
199
- bun install && bun run dev
200
- ```
201
-
202
- `postinstall` rebuilds `better-sqlite3` natively and prepares the sandbox browser image when Docker is available.
203
- If Docker is missing, SwarmClaw falls back to host execution until Docker is installed.
204
- If you install with `--ignore-scripts`, run `npm rebuild better-sqlite3` manually and then `node ./scripts/ensure-sandbox-browser-image.mjs`.
205
-
206
- On first launch, SwarmClaw will:
207
- 1. Generate an **access key** and display it in the terminal
208
- 2. Save it to `.env.local`
209
- 3. Show a first-time setup screen in the browser with the key to copy
210
-
211
- Open `http://localhost:3456` (or your machine's IP for mobile access). Enter the access key, set your name, and you're in.
212
-
213
- ### Command-Line Setup (No UI Required)
214
-
215
- You can complete first-time setup from terminal:
216
-
217
- ```bash
218
- # Start the app (if not already running)
219
- npm run dev
220
-
221
- # In another terminal, run interactive setup (walks you through provider selection)
222
- node ./bin/swarmclaw.js setup init
223
-
224
- # Or pass flags directly for non-interactive setup
225
- node ./bin/swarmclaw.js setup init --provider openai --api-key "$OPENAI_API_KEY"
226
- ```
227
-
228
- Notes:
229
- - When run with no flags in a TTY, `setup init` enters interactive mode — pick providers, enter keys, name agents, and add multiple providers in one session.
230
- - Use `--no-interactive` to force flag-only mode.
231
- - On a fresh instance, `setup init` can auto-discover and claim the first-run access key from `/api/auth`.
232
- - For existing installs, pass `--key <ACCESS_KEY>` or set `SWARMCLAW_ACCESS_KEY` / `SWARMCLAW_API_KEY`.
233
- - `setup init` performs provider validation, stores credentials, creates a starter agent, and marks setup complete.
234
- - Use `--skip-check` to bypass connection validation.
235
-
236
- ### 2-Minute Setup Wizard
237
-
238
- After login, SwarmClaw opens a guided wizard designed for non-technical users:
239
-
240
- 1. **Choose a provider** — Pick from all 11 supported providers (OpenAI, Anthropic, Google Gemini, DeepSeek, Groq, Together AI, Mistral, xAI, Fireworks, OpenClaw, Ollama)
241
- 2. **Connect provider** — Enter only required fields (API key and/or endpoint), then click **Check Connection** for live validation
242
- 3. **Create your agent** — Each provider gets a unique default name (e.g. Atlas for OpenAI, Claude for Anthropic, Bolt for Groq). Choose **Create & Add Another** to set up multiple providers, or **Create & Finish** to continue
243
- 4. **Summary** — Review all created agents and discover connectors (Discord, Slack, Telegram, WhatsApp)
244
-
245
- Notes:
246
- - You can add multiple providers in a single wizard session — configured providers are dimmed and shown as chips.
247
- - Ollama checks can auto-suggest a model from the connected endpoint.
248
- - You can skip setup at any step and configure everything later in the sidebar.
249
-
250
- ## Features
251
-
252
- - **15 providers out of the box** - CLI providers + major hosted APIs + OpenAI-compatible custom endpoints
253
- - **OpenClaw-native control plane** - named gateway profiles, external runtimes, reload modes, sync, and approval flows
254
- - **Agent builder + inspector** - personality/system tuning, skill management, and OpenClaw file editing
255
- - **Rich toolset** - shell, files, browser, git, sandbox execution, memory, MCP, and delegation
256
- - **Platform automation** - agents can manage tasks, schedules, chats, connectors, secrets, and more
257
- - **LangGraph orchestration** - routing to sub-agents with checkpoint timeline and restore
258
- - **Task board + daemon + scheduler** - long-running autonomous workflows with heartbeat safety
259
- - **Chat UX** - edit/resend, fork, bookmarks, previews, telemetry, notifications, and search palette
260
- - **Multi-agent chatrooms** - room routing with mentions, reactions, and persistent context compaction
261
- - **Connector bridge** - Discord, Slack, Telegram, WhatsApp, Teams, Matrix, OpenClaw, and others
262
- - **Memory + knowledge** - hybrid search, memory graph, shared knowledge store, and auto-journaling
263
- - **Operational guardrails** - capability policy, cost tracking, provider health, and credential failover
264
- - **Extensibility** - plugin hooks/tools/UI extensions plus reusable skills with discovery-by-default runtime selection
265
-
266
- For the full feature matrix and per-capability details, see:
267
- - https://swarmclaw.ai/docs
268
- - https://swarmclaw.ai/docs/release-notes
269
-
270
- ## Configuration
271
-
272
- All config lives in `.env.local` (auto-generated):
273
-
274
- ```
275
- ACCESS_KEY=<your-access-key> # Auth key for the dashboard
276
- CREDENTIAL_SECRET=<auto-generated> # AES-256 encryption key for stored credentials
277
- SWARMCLAW_PLUGIN_FAILURE_THRESHOLD=3 # Consecutive failures before auto-disabling a plugin
278
- ```
279
-
280
- Data is stored in `data/swarmclaw.db` (SQLite with WAL mode), `data/memory.db` (agent memory with FTS5 + vector embeddings), `data/logs.db` (execution audit trail), and `data/langgraph-checkpoints.db` (orchestrator checkpoints). Back the `data/` directory up if you care about your chats, agents, and credentials. Existing JSON file data is auto-migrated to SQLite on first run.
281
- Agent wallet private keys are stored encrypted (AES-256 via `CREDENTIAL_SECRET`) in `data/swarmclaw.db` and are never returned by wallet API responses; keep `data/` out of version control.
282
-
283
- The app listens on two ports: `PORT` (default 3456) for the HTTP/SSE API, and `PORT + 1` (default 3457) for WebSocket push notifications. The WS port can be customized with `--ws-port`.
284
-
285
- ## Architecture
286
-
287
- ```
288
- src/
289
- ├── app/
290
- │ ├── api/ # Next.js API routes (REST + SSE streaming)
291
- │ └── page.tsx # Auth flow → UserPicker → AppLayout
292
- ├── components/
293
- │ ├── agents/ # Agent builder UI
294
- │ ├── auth/ # Access key gate + user picker
295
- │ ├── chat/ # Message rendering, streaming, code blocks
296
- │ ├── chatrooms/ # Multi-agent chatroom UI
297
- │ ├── connectors/ # Discord/Slack/Telegram/WhatsApp config
298
- │ ├── layout/ # App shell, sidebar, mobile header
299
- │ ├── memory/ # Memory browser and maintenance UI
300
- │ ├── providers/ # Provider management
301
- │ ├── schedules/ # Cron scheduler
302
- │ ├── skills/ # Skills manager
303
- │ ├── tasks/ # Task board
304
- │ └── shared/ # Reusable UI (BottomSheet, IconButton, etc.)
305
- ├── lib/
306
- │ ├── providers/ # LLM provider implementations
307
- │ └── server/ # Storage, orchestrator, connectors, tools
308
- ├── stores/ # Zustand state (app store, chat store, chatroom store)
309
- └── types/ # TypeScript interfaces
310
- ```
311
-
312
- **Stack:** Next.js 16, React 19, Tailwind v4, shadcn/ui, Zustand, LangGraph, TypeScript
313
-
314
- ## Providers
315
-
316
- ### CLI Providers
317
-
318
- | Provider | Binary | Notes |
319
- |-|-|-|
320
- | Claude Code CLI | `claude` | Spawns with `--print --output-format stream-json`. Includes auth preflight and clearer timeout/exit diagnostics. |
321
- | OpenAI Codex CLI | `codex` | Spawns with `--full-auto --skip-git-repo-check`. Includes login preflight and streamed CLI error events. |
322
- | OpenCode CLI | `opencode` | Spawns with `run --format json` and tracks session resume IDs. Multi-model support. |
323
-
324
- ### API Providers
325
-
326
- | Provider | Endpoint | Models |
327
- |-|-|-|
328
- | Anthropic | api.anthropic.com | Claude Sonnet 4.6, Opus 4.6, Haiku 4.5 |
329
- | OpenAI | api.openai.com | GPT-4o, GPT-4.1, o3, o4-mini |
330
- | Google Gemini | generativelanguage.googleapis.com | Gemini 2.5 Pro, Flash, Flash Lite |
331
- | DeepSeek | api.deepseek.com | DeepSeek Chat, Reasoner |
332
- | Groq | api.groq.com | Llama 3.3 70B, DeepSeek R1, Qwen QWQ |
333
- | Together AI | api.together.xyz | Llama 4 Maverick, DeepSeek R1, Qwen 2.5 |
334
- | Mistral AI | api.mistral.ai | Mistral Large, Small, Magistral, Devstral |
335
- | xAI (Grok) | api.x.ai | Grok 3, Grok 3 Fast, Grok 3 Mini |
336
- | Fireworks AI | api.fireworks.ai | DeepSeek R1, Llama 3.3 70B, Qwen 3 |
337
-
338
- If a provider is configured, SwarmClaw can populate the model dropdown from that provider’s advertised model list. For OpenAI this means the selector can auto-fill current OpenAI models, while still allowing users to type a newer or custom model manually if it is not in the fetched list yet.
339
-
340
- ### Local & Remote
341
-
342
- | Provider | Type | Notes |
343
- |-|-|-|
344
- | Ollama | Local/Cloud | Connects to `localhost:11434`. No API key needed. 50+ models. |
345
- | OpenClaw | Per-Agent Gateway | Toggle in agent editor connects to any OpenClaw gateway via the bundled CLI. |
346
- | Custom | API | Any OpenAI-compatible endpoint. Add via Providers sidebar. |
347
-
348
- ## Chat Connectors
349
-
350
- Bridge any agent to a chat platform:
351
-
352
- | Platform | Library | Setup |
353
- |-|-|-|
354
- | Discord | discord.js | Bot token + channel IDs |
355
- | Slack | @slack/bolt | Bot token + app token (Socket Mode) |
356
- | Telegram | grammy | Bot token from @BotFather |
357
- | WhatsApp | baileys | QR code pairing (shown in browser) |
358
- | BlueBubbles | Custom webhook bridge | Server URL + password/webhook secret |
359
- | Signal | signal-cli | `signal-cli` binary + linked phone |
360
- | Microsoft Teams | botbuilder | Bot Framework credentials + webhook ingress |
361
- | Google Chat | googleapis | Service account + webhook ingress |
362
- | Matrix | matrix-bot-sdk | Homeserver URL + access token |
363
- | OpenClaw | gateway protocol | OpenClaw connector credentials |
364
-
365
- Connector chats preserve attachment visibility in chat context:
366
- - WhatsApp media is decoded and persisted to `/api/uploads/...` when possible
367
- - Telegram and Slack attachments are downloaded to uploads when possible
368
- - Discord attachments are captured as media metadata/URLs
369
-
370
- Agents automatically suppress replies to simple acknowledgments ("ok", "thanks", thumbs-up, etc.) via a `NO_MESSAGE` response — conversations feel natural without a forced reply to every message. This is handled at the connector layer, so agents can return `NO_MESSAGE` as their response content and the platform won't deliver anything to the channel.
371
-
372
- For proactive outreach, `connector_message_tool` supports text plus optional `imageUrl` / `fileUrl` / `mediaPath` (local file path) payloads. WhatsApp, Discord, Slack, and Telegram support local file sending via `mediaPath` with auto-detected MIME types.
373
-
374
- Connector ingress now also supports optional pairing/allowlist policy:
375
- - `dmPolicy: allowlist` blocks unknown senders until approved
376
- - `/pair` flow lets approved admins generate and approve pairing codes
377
- - `/think` command can set connector thread thinking level (`low`, `medium`, `high`)
378
- - Session overrides also support per-thread `/reply`, `/scope`, `/thread`, `/provider`, `/model`, `/idle`, `/maxage`, and `/reset` controls
379
-
380
- Direct connector sessions are now the only source of routable connector state. Main agent threads no longer inherit outbound connector targets from mirrored history, and tool-only heartbeats stay out of visible main-thread history.
381
-
382
- ## Agent Tools
383
-
384
- Agents can use the following tools when enabled:
385
-
386
- | Tool | Description |
387
- |-|-|
388
- | Shell | Execute commands in the chat working directory |
389
- | Process | Control long-running shell commands (`process_tool`) |
390
- | Files | Read, write, list, and send files |
391
- | Copy/Move/Delete File | Optional file ops (`copy_file`, `move_file`, `delete_file`) configurable per agent/chat (`delete_file` is off by default) |
392
- | Edit File | Search-and-replace editing (exact match required) |
393
- | Web Search | Search the web via DuckDuckGo HTML scraping |
394
- | Web Fetch | Fetch and extract text content from URLs (uses cheerio) |
395
- | CLI Delegation | Delegate complex tasks to Claude Code, Codex CLI, OpenCode CLI, or Gemini CLI, either inline or as a background job handle |
396
- | Spawn Subagent | Delegate a sub-task to another agent with `status` / `list` / `wait` / `cancel` handles and inherited browser state when needed |
397
- | Browser | Playwright-powered web browsing via MCP with persistent profiles, structured page reads, form helpers, verification actions, and resumable state |
398
- | Canvas | Present/hide/snapshot live HTML content in a chat canvas panel |
399
- | HTTP Request | Make direct API calls with method, headers, body, redirect control, and timeout |
400
- | Git | Run structured git subcommands (`status`, `diff`, `log`, `add`, `commit`, `push`, etc.) with repo safety checks |
401
- | Memory | Store and retrieve long-term memories with FTS5 + vector search, file references, image attachments, and linked memory graph traversal |
402
- | Monitor | Inspect system state and create durable watches over files, endpoints, tasks, webhooks, and page/content changes (`monitor_tool`) |
403
- | Wallet | Manage an agent-linked Solana wallet (`wallet_tool`) to check balance/address, send SOL (limits + approval), and review transaction history |
404
- | Image Generation | Generate images from prompts (`generate_image`) via OpenAI, Stability, Replicate, fal.ai, Together, Fireworks, BFL, or custom endpoints; saved to uploads |
405
- | Email | Send outbound email via SMTP (`email`) with `send`/`status` actions |
406
- | Calendar | Manage Google/Outlook events (`calendar`) with list/create/update/delete/status actions |
407
- | Sandbox | Run JS/TS in a Docker-preferred Node.js sandbox when custom code is necessary. New and existing agents default to sandbox-enabled configs. If Docker is unavailable, SwarmClaw falls back to host execution; for simple API calls, prefer HTTP Request. |
408
- | MCP Servers | Connect to external Model Context Protocol servers. Tools from MCP servers are injected as first-class agent tools |
409
-
410
- ### Platform Tools
411
-
412
- Agents with platform tools enabled can manage the SwarmClaw instance:
413
-
414
- | Tool | Description |
415
- |-|-|
416
- | Manage Agents | List, create, update, delete agents |
417
- | Manage Tasks | Create and manage task board items with agent assignment |
418
- | Manage Schedules | Create cron, interval, or one-time scheduled jobs |
419
- | Reminders | Schedule a durable conversational wake event in the current chat (`schedule_wake`) |
420
- | Manage Skills | List, create, update reusable skill definitions |
421
- | Manage Documents | Upload/search/get/delete indexed docs for lightweight RAG workflows |
422
- | Manage Webhooks | Register external webhook endpoints that trigger agent chats |
423
- | Manage Connectors | Manage chat platform bridges |
424
- | Manage Chatrooms | Create/list/update chatrooms, manage members, and post room messages for multi-agent collaboration |
425
- | Manage Chats | Enable `sessions_tool` for list/history/status/send/spawn/stop across chats, plus `context_status` and `context_summarize` for context window management |
426
- | Manage Secrets | Store and retrieve encrypted reusable secrets |
427
-
428
- Enable tools per-chat or per-agent in the UI. CLI providers (Claude Code, Codex, OpenCode) handle tools natively through their own CLI.
429
- OpenClaw provider capabilities are also managed remotely in OpenClaw itself, so local Tools/Platform toggles are hidden for OpenClaw agents.
430
-
431
- ## Starter Skills (URL Import)
432
-
433
- Import these directly in **Skills → Import via URL**:
434
-
435
- - `https://swarmclaw.ai/skills/openclaw-swarmclaw-bridge/SKILL.md`
436
- - `https://swarmclaw.ai/skills/swarmclaw-bootstrap/SKILL.md`
437
-
438
- ## Cost Tracking
439
-
440
- Token usage and estimated costs are tracked per message for API-based providers (Anthropic, OpenAI). After each response, a badge in the chat header shows token count and estimated cost.
441
-
442
- - **API endpoint:** `GET /api/usage` — returns usage summary by agent/provider plus plugin-level token rollups (`byPlugin`)
443
- - **Data:** Stored in `data/swarmclaw.db` (usage table)
444
- - Cost estimates use published model pricing (updated manually in `src/lib/server/cost.ts`)
445
-
446
- ## Task Metrics
447
-
448
- Task analytics are available via API for dashboarding and release-readiness checks:
449
-
450
- - **API endpoint:** `GET /api/tasks/metrics?range=24h|7d|30d`
451
- - **Returns:** status totals, WIP count, completion velocity buckets, avg/p50/p90 cycle time, completion/failure by agent, and priority counts
452
-
453
- ## Background Daemon
454
-
455
- The daemon auto-processes queued tasks from the scheduler on a 30-second interval. It also runs recurring health checks that detect stale heartbeat chats and can send proactive WhatsApp alerts when issues are detected. Toggle the daemon from the sidebar indicator or via API.
64
+ `npm run quickstart` installs dependencies, prepares local config and runtime state, and starts SwarmClaw.
456
65
 
457
- Daemon runtime also triggers memory consolidation (daily summary generation plus recurring dedupe/prune maintenance).
66
+ ## Skill Drafts From Conversations
458
67
 
459
- - **API:** `GET /api/daemon` (status), `POST /api/daemon` with `{"action": "start"}` or `{"action": "stop"}`
460
- - Auto-starts on first authenticated runtime traffic (`/api/auth` or `/api/daemon`) unless `SWARMCLAW_DAEMON_AUTOSTART=0`
68
+ - From any active chat, use **Draft Skill** in the chat header.
69
+ - Or open **Skills** and use **Draft From Current Chat**.
70
+ - New agents keep **Conversation Skill Drafting** enabled by default, and you can switch it off per agent.
71
+ - SwarmClaw turns useful work into a **draft suggestion**, not a live self-modifying skill.
72
+ - Review the suggested name, rationale, summary, and transcript snippet.
73
+ - Approve it to save it into the normal skill library, or dismiss it.
74
+ - Runtime skill recommendations can use **keyword** or **embedding** ranking from **Settings → Memory & AI → Skills**.
461
75
 
462
- ## Loop Modes
76
+ ## Core Capabilities
463
77
 
464
- Configure loop behavior in **Settings Runtime & Loop Controls**:
78
+ - **Providers**: OpenClaw, OpenAI, Anthropic, Ollama, Google, DeepSeek, Groq, Together, Mistral, xAI, Fireworks, plus compatible custom endpoints.
79
+ - **Delegation**: built-in delegation to Claude Code, Codex CLI, OpenCode CLI, Gemini CLI, and native SwarmClaw subagents.
80
+ - **Autonomy**: heartbeat loops, schedules, background jobs, task execution, and agent wakeups.
81
+ - **Memory**: hybrid recall, graph traversal, journaling, durable documents, and project-scoped context.
82
+ - **Wallets**: balances, transfers, signatures, EVM call/quote/swap flows, and approval-gated execution.
83
+ - **Connectors**: Discord, Slack, Telegram, WhatsApp, Teams, Matrix, OpenClaw, and more.
84
+ - **Plugins**: tool plugins, UI extensions, hooks, install/update flows, and runtime policy controls.
465
85
 
466
- - **Bounded**: fixed max steps for agent and orchestrator loops (default behavior)
467
- - **Ongoing**: loops keep iterating until they hit your safety cap and optional runtime limit
468
-
469
- You can also tune shell timeout, Claude Code delegation timeout, and CLI provider process timeout from the same settings panel.
470
-
471
- ## Capability Policy
472
-
473
- Configure this in **Settings → Capability Policy** to centrally govern tool access:
474
-
475
- - **Mode:** `permissive`, `balanced`, or `strict`
476
- - **Blocked categories:** e.g. `execution`, `filesystem`, `platform`, `outbound`
477
- - **Blocked tools:** specific tool families or concrete tool names
478
- - **Allowed tools:** explicit overrides when running stricter modes
479
-
480
- Policy is enforced in both chat tool construction and direct forced tool invocations, so auto-routing and explicit tool requests use the same guardrails.
481
-
482
- ## CLI Troubleshooting
483
-
484
- - **Claude delegate returns no output or fails quickly:** verify Claude auth on the host with:
485
- - `claude auth status`
486
- - If not logged in: `claude auth login` (or `claude setup-token`)
487
- - **Claude delegate times out:** increase **Claude Code Timeout (sec)** in Settings.
488
- - **Codex fails outside a git repo:** SwarmClaw now uses `--skip-git-repo-check`, but if login is missing run:
489
- - `codex login`
490
- - `codex login status`
491
- - **CLI provider errors are now surfaced in chat:** non-zero exits and streamed error events are emitted as chat errors instead of failing silently.
492
-
493
- ## Voice & Heartbeat
494
-
495
- Configure these in **Settings**:
496
-
497
- - **Voice** — set `ElevenLabs API Key`, `ElevenLabs Voice ID`, and `Speech Recognition Language`. Outbound voice-note sends retry with the built-in fallback ElevenLabs voice when a saved default voice is rejected as paid-only.
498
- - **Heartbeat** — set `Heartbeat Interval (Seconds)` and `Heartbeat Prompt` for ongoing chat pings
499
- - **Global heartbeat safety** — use `Stop All Heartbeats` to disable heartbeat across all chats and cancel in-flight heartbeat runs.
500
-
501
- Heartbeat pings are internal checks for ongoing chats. If there's no new status, the assistant returns `HEARTBEAT_OK`; otherwise it returns a concise progress update and next step. In chat UI, heartbeat entries render as compact expandable cards and consecutive heartbeat streaks are collapsed to the latest item.
502
- The daemon health monitor also auto-disables heartbeat on chats that remain stale for an extended period.
503
-
504
- ## Embeddings & Hybrid Memory Search
505
-
506
- Enable semantic search for agent memory by configuring an embedding provider in Settings:
507
-
508
- - **Local (Free)** — runs `all-MiniLM-L6-v2` directly in Node.js via HuggingFace Transformers. No API key, no cost, works offline. Model downloads once (~23MB).
509
- - **OpenAI** — uses `text-embedding-3-small` (requires API key)
510
- - **Ollama** — uses local models like `nomic-embed-text`
511
-
512
- When enabled, new memories get vector embeddings. Search uses both FTS5 keyword matching and cosine similarity, merging results for better recall.
513
-
514
- ## Model Failover
515
-
516
- Agents and chats can have **fallback credentials**. If the primary API key gets a 401, 429, or 500 error, SwarmClaw automatically retries with the next credential. Configure fallback keys in the agent builder UI.
517
-
518
- ## Plugin System
519
-
520
- SwarmClaw features a modular plugin system for agent capabilities, UI extensions, provider/connectors, and post-turn automation. It supports the native SwarmClaw hook/tool format and the **OpenClaw** register/activate formats.
521
-
522
- Plugins can be managed in **Settings → Plugins** and installed via the Marketplace, HTTPS URL, or by dropping `.js` / `.mjs` files into `data/plugins/`.
523
-
524
- Docs:
525
- - Full docs: https://swarmclaw.ai/docs
526
- - Plugin tutorial: https://swarmclaw.ai/docs/plugin-tutorial
527
-
528
- ### Extension Points
529
-
530
- Unlike standard tool systems, SwarmClaw plugins can modify the application itself:
531
-
532
- - **Agent Tools**: Define custom tools that agents can autonomously discover and use.
533
- - **Lifecycle Hooks**: Intercept events like `beforeAgentStart`, `beforeToolExec`, `afterToolExec`, `afterChatTurn`, and `onMessage`.
534
- - **UI Extensions**:
535
- - `sidebarItems`: Inject new navigation links into the main sidebar.
536
- - `headerWidgets`: Add status badges or indicators to the chat header (e.g., Wallet Balance).
537
- - `chatInputActions`: Add custom action buttons next to the chat input (e.g., "Quick Scan").
538
- - `plugin-ui` Messages: Render rich, interactive React cards in the chat stream.
539
- - **Deep Chat Hooks**:
540
- - `transformInboundMessage`: Modify user messages before they reach the agent runtime.
541
- - `transformOutboundMessage`: Modify agent responses before they are persisted or displayed.
542
- - `beforeToolExec`: Can rewrite tool input before the selected tool executes.
543
- - **Custom Providers**: Add new LLM backends (e.g., a specialized local model or a new API).
544
- - **Custom Connectors**: Build new chat platform bridges (e.g., a proprietary internal messenger).
545
- - **Per-plugin Settings**: Declare `ui.settingsFields` and read/write them via `/api/plugins/settings`. Fields marked `type: 'secret'` are encrypted at rest.
546
-
547
- ### Canonical Plugin IDs
548
-
549
- Built-in capabilities now resolve to a single canonical plugin family ID across agent configs, policy rules, approvals, and the Plugins UI. Legacy aliases still work, but the canonical IDs are what you should document and store going forward.
550
-
551
- - `manage_sessions` instead of `session_info`
552
- - `manage_connectors` instead of `connectors`
553
- - `http_request` instead of `http`
554
- - `spawn_subagent` instead of `subagent`
555
- - `manage_chatrooms` instead of `chatroom`
556
- - `schedule_wake` instead of `schedule`
557
-
558
- ### Autonomous Capability Discovery
559
-
560
- Agents in SwarmClaw are "aware" of the plugin system. If an agent lacks a tool needed for a task, it can:
561
- 1. **Discover**: Scan the system for all installed plugins.
562
- 2. **Search Marketplace**: Autonomously search **ClawHub** and the **SwarmForge-backed first-party marketplace** for new capabilities.
563
- 3. **Request Access**: Prompt the user in-chat to enable a specific installed plugin.
564
- 4. **Install Request**: Suggest installing a new plugin from a marketplace URL to fill a capability gap (requires user approval).
565
-
566
- ### Example Plugin (SwarmClaw Format)
567
-
568
- ```js
569
- module.exports = {
570
- name: 'my-custom-extension',
571
- ui: {
572
- sidebarItems: [{ id: 'dashboard', label: 'My View', href: '/custom-view' }],
573
- headerWidgets: [{ id: 'status', label: '🟢 Active' }]
574
- },
575
- tools: [{
576
- name: 'custom_action',
577
- description: 'Perform a specialized task',
578
- parameters: { type: 'object', properties: { input: { type: 'string' } } },
579
- execute: async (args) => {
580
- // Logic here
581
- return { kind: 'plugin-ui', text: 'Rich result card content' };
582
- }
583
- }]
584
- };
585
- ```
586
-
587
- Hook signatures of note:
588
-
589
- - `beforeToolExec({ toolName, input })` may return a replacement input object.
590
- - `afterToolExec({ session, toolName, input, output })` observes completed tool executions.
591
- - `transformInboundMessage({ session, text })` and `transformOutboundMessage({ session, text })` run sequentially across enabled plugins.
592
-
593
- ### Building Plugins
594
-
595
- The shortest reliable workflow for a new plugin:
596
-
597
- 1. Create a focused `.js` or `.mjs` file under `data/plugins/`.
598
- 2. Export `name`, `description`, any `hooks`, and optional `tools` / `ui.settingsFields`.
599
- 3. Keep tool outputs structured when the agent needs to chain them into later steps.
600
- 4. Use `settingsFields` for secrets or environment-specific values instead of hardcoding them.
601
- 5. If the plugin needs third-party npm packages, attach a `package.json` manifest so SwarmClaw can manage it in a per-plugin workspace.
602
- 6. Enable the plugin in **Settings → Plugins** and test both the tool path and any hook behavior.
603
- 7. If you host it remotely, install from a stable HTTPS URL so SwarmClaw can record source metadata and update it later.
604
-
605
- A fuller step-by-step walkthrough lives at https://swarmclaw.ai/docs/plugin-tutorial.
606
-
607
- ### Lifecycle Management
608
-
609
- - **Versioning**: All plugins support semantic versioning (e.g., `v1.2.3`).
610
- - **Updates**: External plugins installed from a recorded source URL can be updated individually or in bulk via the Plugins manager. Built-ins update with the app release.
611
- - **Hot Reload**: Changes inside `data/plugins/` invalidate the plugin registry automatically, and installs/updates trigger an immediate reload.
612
- - **Plugin Workspaces**: Plugins with a manifest are managed under `data/plugins/.workspaces/<plugin>/`, and dependency installs can be triggered from the plugin detail sheet or `POST /api/plugins/dependencies`.
613
- - **Stability Guardrails**: Consecutive plugin failures are tracked in `data/plugin-failures.json`; failing external plugins are auto-disabled, a warning notification is emitted in-app, and users can re-enable manually from the Plugins manager.
614
- - **Source Metadata**: Marketplace/URL installs record the normalized source URL and source hash in `data/plugins.json`.
615
- - **Settings Safety**: Plugin settings are validated against declared `settingsFields`; unknown keys are ignored and `secret` values are stored encrypted.
616
-
617
- ### Browser, Watch, and Delegation Upgrades
618
-
619
- - **Persistent Browser Profiles**: The built-in `browser` plugin now keeps a reusable profile per chat/session, and subagents inherit the parent profile by default. Profiles live under `<swarmclaw-home>/browser-profiles` by default (`~/.swarmclaw/browser-profiles` for global installs, `<project>/.swarmclaw/browser-profiles` for local installs) unless you override `BROWSER_PROFILES_DIR`, so cookies, storage, and authenticated state survive longer-running work without polluting the project tree. Browser state is exposed at `GET /api/chats/[id]/browser`.
620
- - **Higher-Level Browser Actions**: In addition to raw Playwright-style actions, `browser` supports workflow-oriented actions such as `read_page`, `extract_links`, `extract_form_fields`, `extract_table`, `fill_form`, `submit_form`, `scroll_until`, `download_file`, `complete_web_task`, `verify_text`, `verify_element`, `verify_list`, `verify_value`, `profile`, and `reset_profile`.
621
- - **Structured Browser State**: Browser sessions persist recent observations, tabs, artifacts (screenshots / PDFs / downloads), current URL, and last errors in `browser_sessions`, which makes autonomous browser tasks easier to resume, inspect, and hand off across turns.
622
- - **Durable Watches**: `schedule_wake` now uses persisted watch jobs instead of an in-memory timer, and `monitor_tool` supports `create_watch`, `list_watches`, `get_watch`, and `cancel_watch` across `time`, `http`, `file`, `task`, `webhook`, and `page` conditions. The same watch system also powers the new `mailbox`, session-mailbox, and approval waits used by human-loop flows. Watches support common checks like status/status sets, regex or text matches, content changes, existence checks, inbound mailbox correlation IDs, and webhook event filters.
623
- - **Long-Running Delegation Handles**: `delegate` and `spawn_subagent` support handle-based flows instead of only synchronous final text. Use `background=true` or `waitForCompletion=false` to launch long-running work, then inspect or stop it with `action=status|list|wait|cancel`.
624
- - **Delegation Job Persistence**: Delegate and subagent runs are recorded in `delegation_jobs` with checkpoints, backend/session metadata, resume IDs, child session IDs, and terminal-status recovery after daemon restarts. Late completions no longer overwrite cancelled jobs.
625
-
626
- ### New Primitive Plugins
627
-
628
- - **Mailbox / Inbox Automation**: The built-in `mailbox` plugin adds IMAP/SMTP inbox access with `status`, `list_messages`, `list_threads`, `search_messages`, `read_message`, `download_attachment`, `reply`, and `wait_for_email`. It supports durable inbound-email waits and reuses plugin settings / connector config where possible. Configure it in **Settings → Plugins** with `imapHost`, `smtpHost`, `user`, `password`, and optional reply defaults.
629
- - **Human-in-the-Loop Requests**: The built-in `ask_human` plugin provides `request_input`, `request_approval`, `wait_for_reply`, `wait_for_approval`, `list_mailbox`, `ack_mailbox`, and `status`. It is backed by session mailbox envelopes plus approval records so agents can pause and resume on real human responses instead of polling ad hoc state.
630
- - **Document Parsing / OCR**: The built-in `document` plugin adds `read`, `metadata`, `ocr`, `extract_tables`, `store`, `list`, `search`, `get`, and `delete`. It uses the shared document extraction helpers for PDFs, Office docs, OCR-able images, HTML, CSV/TSV/XLSX, ZIP inspection, and plain text files.
631
- - **Schema-Driven Extraction**: The built-in `extract` plugin adds `extract_structured` and `summarize`, using the current session model/provider to turn raw text or local files into validated JSON objects. This is the primitive to combine with browser / document / crawl output when an agent needs structured records instead of prose.
632
- - **Tabular Data Operations**: The built-in `table` plugin adds `read`, `load_csv`, `load_xlsx`, `summarize`, `filter`, `sort`, `group`, `pivot`, `dedupe`, `join`, and `write`. It operates on CSV, TSV, JSON array-of-objects, or XLSX inputs without forcing agents to drop into shell or Python for basic spreadsheet work, and transformed tables can be persisted with `outputPath` / `saveTo`.
633
- - **Multi-Page Crawling**: The built-in `crawl` plugin adds `crawl_site`, `follow_pagination`, `extract_sitemap`, `dedupe_pages`, and `batch_extract`. It handles BFS-style same-origin site traversal, accepts either a fresh start URL or an explicit page list, and can hand the aggregate page set directly into structured extraction for research-heavy autonomous tasks.
634
-
635
- ## Deploy to a VPS
636
-
637
- ### Direct (pm2 + Caddy)
638
-
639
- ```bash
640
- # On your VPS
641
- git clone https://github.com/swarmclawai/swarmclaw.git
642
- cd swarmclaw
643
- npm install
644
- npm run build
645
-
646
- # Run with pm2
647
- sudo npm install -g pm2
648
- pm2 start npm --name swarmclaw -- start
649
- pm2 save && pm2 startup
650
- ```
651
-
652
- Point a reverse proxy (Caddy or nginx) at `localhost:3456` for TLS. See the [full deployment guide](https://swarmclaw.ai/docs/deployment).
653
-
654
- ### Docker
655
-
656
- ```bash
657
- git clone https://github.com/swarmclawai/swarmclaw.git
658
- cd swarmclaw
659
- docker compose up -d
660
- ```
661
-
662
- Data is persisted in `data/` and `.env.local` via volume mounts. Updates: `git pull && docker compose up -d --build`.
663
- In Docker deployments, local shell, browser, and `sandbox_exec` execution fall back to host execution inside the app container unless you separately provide Docker access to that container.
664
-
665
- For prebuilt images (recommended for non-technical users after releases):
666
-
667
- ```bash
668
- docker pull ghcr.io/swarmclawai/swarmclaw:latest
669
- docker run -d \
670
- --name swarmclaw \
671
- -p 3456:3456 \
672
- -v "$(pwd)/data:/app/data" \
673
- -v "$(pwd)/.env.local:/app/.env.local" \
674
- ghcr.io/swarmclawai/swarmclaw:latest
675
- ```
676
-
677
- ### Updating
678
-
679
- SwarmClaw has a built-in update checker — a banner appears in the sidebar when new commits are available, with a one-click update button. Your data in `data/` and `.env.local` is never touched by updates.
680
-
681
- For terminal users, run:
682
-
683
- ```bash
684
- npm run update:easy
685
- ```
686
-
687
- This command updates to the latest stable release tag when available (fallback: `origin/main`), installs dependencies when needed, and runs a production build check before restart.
688
-
689
- ## Development
690
-
691
- ```bash
692
- npm run dev # Dev server on 0.0.0.0:3456
693
- npm run dev:webpack # Fallback to webpack dev server (if Turbopack crashes)
694
- npm run dev:clean # Clear .next cache then restart dev server
695
- npm run build # Production build
696
- npm run build:ci # CI build (skips ESLint; lint baseline runs separately)
697
- npm run start # Start the standalone production server after build
698
- npm run start:standalone # Alias for the standalone production server
699
- npm run lint # ESLint
700
- npm run lint:baseline # Fail only on net-new lint issues vs .eslint-baseline.json
701
- npm run lint:baseline:update # Refresh lint baseline intentionally
702
- ```
703
-
704
- The dev server binds to `0.0.0.0` so you can access it from your phone on the same network.
705
-
706
- ### Turbopack Panic Recovery
707
-
708
- If you see a Turbopack panic like `Failed to lookup task type` or missing `.sst/.meta` files:
709
-
710
- ```bash
711
- rm -rf .next
712
- npm run dev:clean
713
- ```
714
-
715
- If it still reproduces, use webpack mode:
716
-
717
- ```bash
718
- npm run dev:webpack
719
- ```
720
-
721
- ### First-Run Helpers
722
-
723
- ```bash
724
- npm run setup:easy # setup only (prepares sandbox/browser runtime when Docker is available; does not start server)
725
- npm run quickstart # setup + start dev server
726
- npm run quickstart:prod # setup + build + start production server
727
- npm run update:easy # safe update helper for local installs
728
- ```
729
-
730
- ### Release Process (Maintainers)
731
-
732
- SwarmClaw uses tag-based releases (`vX.Y.Z`) as the stable channel.
733
-
734
- ```bash
735
- # example release
736
- npm version patch
737
- git push origin main --follow-tags
738
- ```
739
-
740
- On `v*` tags, GitHub Actions will:
741
- 1. Run release gates (`npm run test:cli`, `npm run test:openclaw`, `npm run build:ci`)
742
- 2. Create a GitHub Release
743
- 3. Build and publish Docker images to `ghcr.io/swarmclawai/swarmclaw` (`:vX.Y.Z`, `:latest`, `:sha-*`)
744
-
745
- #### v0.9.6 Release Readiness Notes
746
-
747
- Before shipping `v0.9.6`, confirm the following user-facing changes are reflected in docs:
748
-
749
- 1. Wallet docs explain the new global wallet approval override in Settings/Wallets, and note that per-wallet approval toggles remain stored but are ignored when the global switch is off.
750
- 2. Runtime/autonomy docs mention the continuation hardening for long-running tasks: intent-only kickoff replies now get one bounded followthrough, and chat-originated progress runs can schedule a bounded main-loop continuation without waiting for another user ping.
751
- 3. Skills/runtime docs still explain that local skills are discoverable by default, pinned skills stay always-on, and `use_skill` is the runtime path for selection/loading/dispatch.
752
- 4. Site and README install/version strings are updated to `v0.9.6`, including release notes index text and any pinned install snippets.
753
- 5. The release tag, npm package version, and generated GitHub release install snippet all agree on the non-prefixed npm version (`0.9.6`) versus the git tag (`v0.9.6`).
754
-
755
- ## CLI
756
-
757
- SwarmClaw ships a built-in CLI for setup and day-to-day operations.
758
-
759
- ```bash
760
- # show command help
761
- npm run cli -- --help
762
-
763
- # or run the executable directly
764
- node ./bin/swarmclaw.js --help
765
- ```
766
-
767
- Primary groups:
768
- - `chats` (canonical)
769
- - `tasks`
770
- - `schedules`
771
- - `chatrooms`
772
- - `connectors`
773
- - `memory`
774
- - `setup`
775
-
776
- Legacy note: some compatibility paths still accept `sessions`, but `chats` is the canonical command group.
777
-
778
- Quick examples:
779
-
780
- ```bash
781
- # list agents
782
- swarmclaw agents list
783
-
784
- # create and inspect a chat
785
- swarmclaw chats create --name "Main Ops" --agent-id <agentId>
786
- swarmclaw chats list
787
-
788
- # run setup diagnostics
789
- swarmclaw setup doctor
790
- ```
86
+ ## Requirements
791
87
 
792
- Full reference (groups, commands, and options):
793
- - https://swarmclaw.ai/docs/cli
88
+ - Node.js 22.6+
89
+ - npm 10+ or another supported package manager
90
+ - Docker Desktop is recommended for sandbox/browser execution
91
+ - Optional provider CLIs if you want delegated CLI backends such as Claude Code, Codex, OpenCode, or Gemini
794
92
 
795
- ## Credits
93
+ ## Security Notes
796
94
 
797
- - Inspired by [OpenClaw](https://github.com/openclaw)
95
+ - First run creates an access key; keep it private.
96
+ - Do not expose port `3456` directly without a reverse proxy and TLS.
97
+ - Review agent prompts and enabled tools before granting shell, browser, wallet, or outbound capabilities.
98
+ - Wallet and outbound actions can be approval-gated globally.
798
99
 
799
- ## License
100
+ ## Learn More
800
101
 
801
- [MIT](./LICENSE)
102
+ - Getting started: https://swarmclaw.ai/docs/getting-started
103
+ - OpenClaw setup: https://swarmclaw.ai/docs/openclaw-setup
104
+ - Agents: https://swarmclaw.ai/docs/agents
105
+ - Orchestration: https://swarmclaw.ai/docs/orchestration
106
+ - Connectors: https://swarmclaw.ai/docs/connectors
107
+ - Plugins: https://swarmclaw.ai/docs/plugins
108
+ - CLI reference: https://swarmclaw.ai/docs/cli