Pi Forge docs
Building agents

Build an agent

/faur is a design conversation, not an interview. It uses what you’ve already said and asks only what changes the design.

Start with the outcome#

From any Pi session outside a Forge project:

/faur a desk that reads new papers on agents every Monday and writes me a one-page brief

Forge recommends the simplest system that fits: often a single agent, or a lead with one or two specialists. When you say “build it”, it runs forge discover (models, your skills, MCP servers, CLIs on this machine), writes .pi/system.yaml, previews the generated files, and applies them only after you confirm.

Models, chosen per agent#

Nothing is hardcoded. Every agent (the orchestrator and each specialist) names its own model from your Pi line-up (pi --list-models), with an optional thinking level. Agents may share a model or each use a different one, and any of them can be changed later.

Skills, suggested from skills.sh#

Forge ships no skills of its own. For each agent’s role it searches the open skills.sh registry and suggests a few candidates, with source, install count and page, and shows each skill’s actual SKILL.md before you decide. Your picks are pinned to a commit, installed into the project’s own .agents/skills/ (never globally) and recorded in skills-lock.json.

A skill can also be written inline, come from a pinned package, or be vendored from a folder you point at.

Documents in formats you agree on#

For each document an agent writes, Forge proposes a structure (purpose, sections in order, a word limit, a few rules) and you change it before it is recorded. The agreed format goes into that agent’s instructions, so every run produces the same shape. A document can be delivered anywhere an MCP tool reaches: Google Drive, Notion, Slack.

MCP, through Pi#

Generated systems use Pi’s built-in MCP; there is nothing extra to install. Declare each server under integrations.mcp and choose per agent which tools it gets: mcp:<server> or mcp:<server>/<tool> for a specialist, mcp for the orchestrator.

Command-line tools, with permissions#

Agents can run tools you already use (gh, wrangler, your own scripts) through declared commands instead of a full shell. Each one is a fixed shape where the agent fills in only the {placeholders}:

integrations:
  cli:
    - name: create-issue
      command: gh
      args: [issue, create, --repo, you/your-app, --title, "{title}", --body-file, "{body:file}"]
      approve: true   # the default: you approve each run

Give it to an agent with cli:create-issue in its tools. Commands run without a shell, with your own CLI logins. When the orchestrator needs a command it has no tool for, it asks with request_permission: allow once, always (saved to system.yaml), or deny.

Memory and prompts#