nanoclaw — SLICC's multi-agent architecture

SYNOPSIS

NanoClaw is SLICC's multi-agent system: one cone (main agent) orchestrating multiple scoops (isolated sub-agents). The cone delegates work, scoops execute independently, and results flow back through the orchestrator.

ARCHITECTURE

The system follows a hub-and-spoke model. The cone is the hub — it talks to the human, manages scoops, and synthesizes results. Scoops are the spokes — each runs in a sandboxed environment with its own filesystem, shell, and conversation. Scoops never talk to each other directly; all coordination flows through the cone.

User → Cone (orchestrator) → Scoop A (sandboxed)
                            → Scoop B (sandboxed)
                            → Scoop C (sandboxed)
       ← results ←←←←←←←←←←←←←←←←←←←←←←←←←←←←

CONE

The cone is the main agent ("sliccy"). It has full, unrestricted filesystem access and all tools. Its role is orchestration: understanding user intent, breaking work into tasks, delegating to scoops, and synthesizing results. The cone is the only agent the human interacts with directly.

Cone-exclusive capabilities:

SCOOPS

Scoops are isolated sub-agents with sandboxed filesystems, their own shells, and independent conversations. They receive complete, self-contained prompts from the cone — they have no access to the cone's conversation history. Each scoop works independently and in parallel with other scoops.

Scoop capabilities:

Scoops do NOT have: scoop_scoop, feed_scoop, drop_scoop, list_scoops, or update_global_memory. Only the cone manages scoops.

TOOLS

MESSAGE ROUTING

When the cone calls feed_scoop, the orchestrator saves the delegation as a channel message and fires the scoop's agent loop asynchronously. The cone's tool call returns immediately — the scoop works in the background.

When a scoop finishes, its response is buffered by the orchestrator and routed back to the cone's message queue. The cone is notified and can read the scoop's output to synthesize results.

Cone → feed_scoop("research", prompt) → returns immediately
  Orchestrator → queues prompt → Scoop processes in background
  Scoop completes → Orchestrator buffers response → Cone's message queue

FILESYSTEM ISOLATION

Each scoop gets a sandboxed filesystem enforced by RestrictedFS:

Write operations outside allowed paths throw EACCES. Read operations outside allowed paths return "not found". The cone has unrestricted access to the entire VFS.

SHARED DIRECTORY

/shared/ is the primary collaboration point. Both cone and all scoops can read and write here. Common patterns:

SPRINKLE OWNERSHIP AND LICK ROUTING

Sprinkles (persistent UI panels) are created by scoops. When a user interacts with a sprinkle, it generates a lick event. The lick routes through the cone back to the owning scoop. This is why scoops that own sprinkles must stay alive — dropping them breaks lick routing.

Lick messages bypass the normal trigger check (they are explicitly routed to their target scoop).

HOW IT DIFFERS

NanoClaw differs from traditional multi-agent frameworks:

ORCHESTRATOR

The Orchestrator class manages the entire NanoClaw lifecycle: registering and unregistering scoops, creating scoop contexts (filesystem + shell + agent), routing messages between cone and scoops, buffering scoop responses, and managing VFS setup. It ensures scoops are initialized before messages are delivered and handles error recovery for failed scoop tabs.

SEE ALSO

man scoop, man cone, man sprinkle, man lick, man vfs, man memory