Skip to main content
Agents are project resources. In a local project, .polpo/agents.json stores an array of wrappers containing an agent config and its teamName:
Only name is required by AgentConfig; role and model are optional. A model identifier uses provider/model. Available identifiers depend on the configured LLM gateway, so query the model catalog instead of assuming an identifier is enabled.

Common fields

Media and provider-specific selection can be configured with image_model, video_model, vision_model, transcribe_model, tts_model, and search_provider. See Tools, Identity, and Skills for their complete behavior.

Prompt assembly

For each run, Polpo builds the system context from:
  1. the base agent prompt, including name and role;
  2. identity, responsibilities, communication style, and reportsTo;
  3. systemPrompt;
  4. shared and private memory;
  5. assigned skill context (progressive skill tools in Cloud, full assigned bodies in the OSS prompt builder);
  6. runtime context such as workspace, caller instructions, task, or loop context.
Chat mode adjusts the base instructions for interactive conversation. systemPrompt extends the base prompt; it does not replace it.

Complete example

Agentic Loops

Loop definitions are project resources under .polpo/loops/; agents only store loop names in assignedLoops. A chat request can select an assigned loop with its loop field. Legacy inline loops and pipeline fields are accepted for compatibility but should not be used for new configurations. See the Loops API for the current graph, permissions, policies, hooks, and execution contracts.

API shape

The local file uses the wrapper shown above. The Agent API uses a flat agent object: POST /v1/agents?team=engineering accepts AgentConfig, while GET /v1/agents returns agent configurations. Do not send the local { agent, teamName } wrapper to the REST endpoint. For a field-by-field reference, see Agents reference.