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.

CategoryNotes
AgentsAll non-trashed, non-disabled agents. Credential IDs, gateway IDs, runtime spend fields, and thread-session IDs are stripped.
SkillsAll skills with full content.
SchedulesAll non-archived schedules. Re-imported as paused so you can review before they fire.
ConnectorsAll connectors. Tokens/keys/passwords/credentials are scrubbed (any field whose key matches `/(token
ChatroomsNon-archived, non-temporary rooms with their routing rules and member agent IDs (remapped on import).
MCP ServersTransport, command, args, URL preserved. Env and header keys preserved with empty values; you fill them after import.
ProjectsAll projects with their objectives, audiences, priorities, and metrics.
GoalsFull goal hierarchy. Parent-goal references and project/agent references are remapped to the new IDs on import.
ExtensionsManifest 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.