Workspace Templates
Workspace templates let you export your full SwarmClaw setup — agents, skills, schedules, connectors, chatrooms, MCP servers, projects, and goals — into a single JSON bundle that you can import into a fresh install. Useful for:
- onboarding a new install with your existing setup in one click
- backing up your configuration before risky changes
- sharing a working setup with someone else (credentials are scrubbed)
What's Exported
The bundle is portable JSON, schema version 2. v1 bundles produced by older versions still import.
| Category | Notes |
|---|---|
| Agents | All non-trashed, non-disabled agents. Credential IDs, gateway IDs, runtime spend fields, and thread-session IDs are stripped. |
| Skills | All skills with full content. |
| Schedules | All non-archived schedules. Re-imported as paused so you can review before they fire. |
| Connectors | All connectors. Tokens/keys/passwords/credentials are scrubbed (any field whose key matches `/(token |
| Chatrooms | Non-archived, non-temporary rooms with their routing rules and member agent IDs (remapped on import). |
| MCP Servers | Transport, command, args, URL preserved. Env and header keys preserved with empty values; you fill them after import. |
| Projects | All projects with their objectives, audiences, priorities, and metrics. |
| Goals | Full goal hierarchy. Parent-goal references and project/agent references are remapped to the new IDs on import. |
| Extensions | Manifest reference only (name, source, version). Extension code is not bundled — re-install from the extension marketplace or source URL. |
What's Not Exported
- Credential values, OAuth tokens, API keys (anything that looks like a secret)
- Trashed agents
- Sessions, messages, usage records, mission runs, activity log
- Generated avatars, thread sessions, runtime caches
Export
GET /api/portability/export
Returns the full manifest as JSON.
Import
POST /api/portability/import
Content-Type: application/json
{ "manifest": { ... } }
Returns a summary listing what was created, skipped, and which records need credentials added before they can be enabled:
{
"agents": { "created": 8, "skipped": 0, "names": [...] },
"skills": { "created": 12, "skipped": 0, "names": [...] },
"schedules": { "created": 3, "skipped": 0, "names": [...] },
"connectors": { "created": 4, "skipped": 0, "names": [...], "needsCredentials": ["Discord (Main)", "Slack (Ops)", ...] },
"chatrooms": { "created": 2, "skipped": 0, "names": [...] },
"mcpServers": { "created": 5, "skipped": 0, "names": [...], "needsCredentials": ["GitHub MCP"] },
"projects": { "created": 3, "skipped": 0, "names": [...] },
"goals": { "created": 7, "skipped": 0, "titles": [...] },
"idMap": { "<originalId>": "<newId>", ... }
}
Names that conflict with existing records get a (2), (3), … suffix automatically.
CLI
swarmclaw portability export > my-workspace.json
swarmclaw portability import --json @my-workspace.json
Limits
- Extensions are referenced by manifest, not bundled. Re-install them on the target machine.
- Connectors and MCP servers re-import disabled with credentials cleared. Add credentials in the UI, then enable.
- The default workspace assumption: imports add to the active workspace. Multi-workspace data isolation is on the roadmap.