Skip to main content

What is a Pool?

An Agent Pool groups profiles that need to collaborate through shared state. Pools add two things to each member profile:
  • A role-aware filesystem policy under /pools/{pool}/...
  • Pool tools: pool_info, pool_post, and pool_inbox
Pool membership does not replace the profile sandbox. Every profile still keeps its implicit home at /agents/{self}/**; pool access is layered on top.

Pool Schema

Roles default to member when omitted or unknown.

Creating a Pool

The conductor broadcasts pools to all runners, just like profiles.

Built-in Path Layout

Every pool uses the same directory conventions: pool_info returns the concrete paths for the active session.

Role Permissions

Custom fs.read, fs.write, fs.delete, and fs.deny entries are additive. deny always wins.

Pool Tools

@pool is part of @default, so normal profiles can inspect pool membership immediately. Tools that read or write posts use the runner’s VirtualFS dispatcher; with no VFS_* environment they still work in that runner’s in-memory storage, but posts are not shared with vfs serve or other runner processes. Typical agent workflow:
  1. Call pool_info to discover memberships and paths.
  2. Call pool_inbox to catch up on recent public posts.
  3. Use read_file / write_file for shared documents.
  4. Call pool_post for updates other members should see.

Effective Filesystem Policy

The runner compiles a session policy in this order:
  1. Implicit home grant: /agents/{self}/**
  2. Profile fs grants and denies
  3. Built-in pool grants for each membership role
  4. Pool custom fs grants and denies
Tokens are substituted before matching: Relative paths in read_file, write_file, and delete_file resolve under /agents/{self}/. Use absolute paths for pool files.