PicoClaw
PicoClaw is an active Spawnfile runtime with a JSON config file and a workspace-first model. It has one of the strongest MCP surfaces among the supported runtimes.
Status: Active
Config Shape
Section titled “Config Shape”PicoClaw uses a JSON configuration file at ~/.picoclaw/config.json. The adapter emits config that maps Spawnfile execution intent to PicoClaw’s native structure.
runtime: name: picoclaw options: restrict_to_workspace: trueRuntime options like restrict_to_workspace are adapter-specific and passed through to the compiled config.
Workspace Layout
Section titled “Workspace Layout”PicoClaw defaults to ~/.picoclaw/workspace as its workspace root. The adapter places docs into this structure:
| Spawnfile Role | PicoClaw File |
|---|---|
identity | IDENTITY.md |
soul | SOUL.md |
system | AGENTS.md |
memory | memory/ directory |
heartbeat | HEARTBEAT.md |
extras.* | Placed by key name |
Skills are placed under the workspace skills/ directory with their SKILL.md files preserved. PicoClaw also supports global skills, builtin skills, and a registry/search/install system.
Model Mapping
Section titled “Model Mapping”PicoClaw uses a model-centric config via vendor/model format. The adapter maps:
execution.model.primaryto the default vendor/model settingexecution.model.fallbackto PicoClaw’s fallback model list (explicitly supported)
Provider-specific auth uses PicoClaw’s native auth system (e.g. picoclaw auth login --provider anthropic).
At the pinned version, the compiled config uses model_list[].api_key with file references like file://secrets/OPENAI_API_KEY. The entrypoint materializes those files from environment variables before startup.
Schedule Handling
Section titled “Schedule Handling”PicoClaw supports Spawnfile schedule.kind: cron through its native cron service.
The adapter emits a workspace/cron/jobs.json store and enables PicoClaw’s
tools.cron config so the gateway can wake the agent. spawnfile up starts
PicoClaw with that job store in place, and each due job delivers the declared
schedule.prompt as an agent turn.
schedule.kind: every is validated but reported as degraded for PicoClaw in
v0.1. schedule.kind: disabled emits no cron job.
MCP Handling
Section titled “MCP Handling”PicoClaw has a first-class MCP config surface, making it one of the best early targets for canonical MCP lowering:
{ "tools": { "mcp": { "enabled": true, "servers": { "web_search": { "enabled": true, "type": "http", "url": "https://search.mcp.example.com/mcp" } } } }}Supported transports:
stdio— viacommand,args,envsse— viaurlhttp— viaurl,headers
Each server can have enabled, command, args, env, env_file, type, url, and headers fields.
Workspace and Sandbox
Section titled “Workspace and Sandbox”PicoClaw has a strong workspace-first model:
restrict_to_workspaceis the main sandbox switch- The same restriction is inherited by subagents and heartbeat tasks
The adapter maps:
workspace.docsandworkspace.resourcesto workspace path configurationexecution.sandbox.modetorestrict_to_workspaceand related settings
PicoClaw has:
- Spawned subagents with optional
agent_id - Heartbeat-driven async spawning
It does not have a strong native team object. The adapter:
- Compiles team members into named agents
- Uses spawn or agent-targeted spawn for delegation
- Reports degradation when native behavior cannot preserve Spawnfile representatives, context artifacts, team networks, team identity, or nesting
Surfaces
Section titled “Surfaces”PicoClaw supports Discord, Telegram, WhatsApp, and Slack with token wiring and user allowlists. Guild, channel, chat, and group allowlists are not lowered in v0.1. Portable HTTP is not part of the v0.1 alpha surface contract.
Discord
Section titled “Discord”Spawnfile lowers Discord into PicoClaw’s channel config:
tokenallow_frommention_only
| Mode | Support |
|---|---|
open | Supported |
allowlist (users) | Supported |
allowlist (guilds/channels) | Not lowered in v0.1 |
pairing | Not supported |
Telegram
Section titled “Telegram”Spawnfile lowers Telegram into PicoClaw’s channel config:
tokenallow_from
| Mode | Support |
|---|---|
open | Supported |
allowlist (users) | Supported |
allowlist (chats) | Not lowered in v0.1 |
pairing | Not supported |
Spawnfile lowers WhatsApp into PicoClaw’s channel config:
enableduse_nativeallow_from
| Mode | Support |
|---|---|
open | Supported |
allowlist (users) | Supported |
allowlist (groups) | Not lowered in v0.1 |
pairing | Not supported |
WhatsApp does not have a portable token secret. QR/session auth is runtime-defined.
Spawnfile lowers Slack into PicoClaw’s channel config:
enabledgroup_trigger.mention_onlyallow_from
| Mode | Support |
|---|---|
open | Supported |
allowlist (users) | Supported |
allowlist (channels) | Not lowered in v0.1 |
pairing | Not supported |
Slack requires both bot_token_secret and app_token_secret. PicoClaw replies to channel messages in a thread and replies to direct messages inline.
What The Adapter Emits
Section titled “What The Adapter Emits”For a single agent:
- A PicoClaw JSON config file
- Workspace markdown files
- Skill directories
- MCP server configuration
- A
workspace/cron/jobs.jsonstore whenschedule.kind: cronis declared
For container compilation:
- Base image metadata and system dependencies
- Config and workspace path templates
- Port configuration (health on
/healthand/ready) - Start command (
picoclaw gateway --allow-empty)
Container Notes
Section titled “Container Notes”- The pinned version needs
workspace/copied intocmd/picoclaw/internal/onboard/workspacebeforego buildin a clean checkout. - Provider auth needs
model_list[].api_keyfile references. The entrypoint materializes secret files from env before startup. - Clean container boot uses
picoclaw gateway --allow-empty. - Cron schedules require
tools.cron.enabledin the compiled config and aworkspace/cron/jobs.jsonstore. - Health endpoints:
/healthand/ready. - For multi-agent compilation, one PicoClaw gateway process runs per compiled target with ports incremented from the adapter base port.
Example
Section titled “Example”From the agent-with-subagents fixture:
spawnfile_version: "0.1"kind: agentname: editor
runtime: name: picoclaw options: restrict_to_workspace: true
execution: model: primary: provider: openai name: gpt-4o-mini sandbox: mode: workspace
workspace: docs: system: AGENTS.md
subagents: - id: researcher ref: ./subagents/researcher - id: critic ref: ./subagents/critic