-
Notifications
You must be signed in to change notification settings - Fork 92
feat(pi): Agent tool for sub-agents on the pi runtime #6756
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
4eb663a
2c621af
07aba0b
28cb68b
9200e94
8b3f49b
ca12f63
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,7 +4,7 @@ sidebar_label: Choose a Runtime | |
|
|
||
| # Choose an agent runtime | ||
|
|
||
| > **Claude Code is the stable default.** The fleet agents have run on Claude Code in production for a long time; it is what a new installation gets unless you ask for something else. **pi is in its enablement (experimental) phase** — it works end to end for `triage`, `prioritize`, `code` and `fix`, has no sub-agent tool yet (`review`/`retro` run in a single context), and its fleet pilot is still in progress. Unless you are taking part in that pilot, keep the default. | ||
| > **Claude Code is the stable default.** The fleet agents have run on Claude Code in production for a long time; it is what a new installation gets unless you ask for something else. **pi is in its enablement (experimental) phase** — it works end to end for `triage`, `prioritize`, `code` and `fix`, and `review`/`retro` now dispatch their real sub-agent roster through a fullsend-supplied `Agent`/`Task` tool, but its fleet pilot is still in progress. Unless you are taking part in that pilot, keep the default. | ||
|
|
||
| This page explains what the choice means and where it is made. **You do not select anything on this page** — the selection happens in the next step, [Configuring GitHub](configuring-github.md), when `fullsend github setup` prompts for the runtime (press Enter for `claude`) or when you pass `--runtime`. | ||
|
|
||
|
|
@@ -15,7 +15,7 @@ Fullsend supports multiple agent runtimes. A runtime is the program that runs in | |
| | Runtime | Status | Description | When to use | | ||
| |---------|--------|-------------|-------------| | ||
| | `claude` | **Stable (default)** | Claude Code on Vertex AI | Every production deployment — mature, full sub-agent support for `review`/`retro` | | ||
| | `pi` | Experimental (enablement phase) | [Pi](https://github.com/earendil-works/pi) — Claude on Vertex by default; any provider pi supports by model name (e.g. Gemini on Vertex with the same credentials) | Opt-in pilots only; no sub-agent tool yet, so `review`/`retro` run single-context; see [Runtimes](../../runtimes.md) for known constraints | | ||
| | `pi` | Experimental (enablement phase) | [Pi](https://github.com/earendil-works/pi) — Claude on Vertex by default; any provider pi supports by model name (e.g. Gemini on Vertex with the same credentials) | Opt-in pilots only; `Agent`/`Task` sub-agents come from a fullsend extension (children are `pi` processes) rather than from pi itself; see [Runtimes](../../runtimes.md) for known constraints | | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Too much detail somewhere it does not belong, probably you are already documenting this somewhere else. Remove this detail. |
||
|
|
||
| ## When and how the runtime is selected | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -7,7 +7,7 @@ sandbox, the credentials, and the verdict. | |||||
| | Runtime | Use it for | Status | | ||||||
| |---|---|---| | ||||||
| | **[`claude`](runtimes/claude.md)** | Production agent runs (Claude Code) | Default | | ||||||
| | **[`pi`](runtimes/pi.md)** | Second runtime, opt-in per repo — Claude, Grok and Gemini on Vertex; GPT via OpenAI WIF (wired, not yet exercised live) | Supported for `triage`, `prioritize`, `code`, `fix` | | ||||||
| | **[`pi`](runtimes/pi.md)** | Second runtime, opt-in per repo — Claude, Grok and Gemini on Vertex; GPT via OpenAI WIF (wired, not yet exercised live) | Supported for all roles | | ||||||
| | `dummy` | Behaviour tests — scripted ops, no inference | Internal | | ||||||
| | `opencode` | Not yet functional | Stub | | ||||||
|
|
||||||
|
|
@@ -50,15 +50,15 @@ sequenceDiagram | |||||
| | | Claude Code | pi | | ||||||
| |---|---|---| | ||||||
| | Models | Anthropic on Vertex | Claude, **Grok** and **Gemini** on Vertex; **GPT** via OpenAI WIF (opt-in, [not yet exercised live](runtimes/pi.md#models-and-providers)) | | ||||||
| | Sub-agents | Native (`Agent` tool) | Not wired — agents execute sub-agent definitions inline ([#6527](https://github.com/fullsend-ai/fullsend/issues/6527)) | | ||||||
| | Sub-agents | Native (`Agent` tool) | `Agent`/`Task` via a fullsend extension — children are `pi` processes with the same hooks, providers and tool allowlist ([pi runtime § Sub-agents](runtimes/pi.md#sub-agents)) | | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Details where they are not needed.
Suggested change
|
||||||
| | Fallback model chain | `FULLSEND_FALLBACK_MODELS`, tried in order | Ignored with a warning | | ||||||
| | Roles | All | `review`/`retro` stay on Claude Code — they rely on sub-agent rosters | | ||||||
| | Roles | All | All; `review`/`retro` run their real sub-agent roster, at `--thinking medium` by default | | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
| | Effort | `--effort low..max` | `--thinking`, same levels (`high` when unset) | | ||||||
| | Security controls | Full matrix | Full matrix; stricter on failed-call sanitizing | | ||||||
|
|
||||||
| Both run unattended in the same sandbox, on the same WIF credentials, behind the same egress | ||||||
| allowlist. Choose `pi` when you want a non-Anthropic model; stay on `claude` when you need | ||||||
| sub-agents or a fallback chain. | ||||||
| allowlist. Choose `pi` when you want a non-Anthropic model; stay on `claude` when you need a | ||||||
| fallback chain. | ||||||
|
|
||||||
| ## Selecting a runtime and model | ||||||
|
|
||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -28,7 +28,7 @@ unsupported and ignores it. | |||||
|
|
||||||
| | | | | ||||||
| |---|---| | ||||||
| | Roles | All, including `review` and `retro` — they need sub-agents | | ||||||
| | Roles | All, including `review` and `retro` — they need sub-agents (pi covers these too, through a fullsend extension: [pi § Sub-agents](pi.md#sub-agents)) | | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, too much detail where it does not belong. |
||||||
| | Credentials | WIF `external_account` + a refreshed OIDC token; `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_BASE_URL` and `ANTHROPIC_VERTEX_BASE_URL` are unset so a stray key cannot redirect traffic | | ||||||
| | Unattended | `--dangerously-skip-permissions`; hooks wired from the harness, never from agent-writable files | | ||||||
| | Artifacts | `output.jsonl`, transcripts, `metrics.json` with `runtime: claude`, and `claude-debug.log` with `--debug` | | ||||||
|
|
@@ -41,8 +41,7 @@ These are the places Claude Code differs from pi — useful when comparing a run | |||||
| - **The agent definition *replaces* the system prompt.** `--agent` makes the agent `.md` body the | ||||||
| system prompt outright. pi appends it to its own default instead, so an agent that relies on | ||||||
| Claude Code's exact framing can read differently there. | ||||||
| - **Native sub-agents** via the `Agent` tool, which is why `review` and `retro` are Claude-only | ||||||
| today. | ||||||
| - **Native sub-agents** via the `Agent` tool. This is no longer Claude-only: pi serves the same `Agent`/`Task` contract from a runner-owned extension that runs each child as its own `pi` process ([pi § Sub-agents](pi.md#sub-agents)). What stays Claude-specific is that the sub-agents are *native* — no child process, no separate session dir, no per-child provider hygiene. | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, comenting
Suggested change
|
||||||
| - **A `CLAUDE.md` bridge is injected** when the repo has `AGENTS.md` but no `CLAUDE.md`, because | ||||||
| Claude Code auto-loads only the former. pi reads `AGENTS.md` natively and needs no bridge. | ||||||
| - **`tools:` is enforced unreliably** (≥ 2.1.119); pi enforces its `--tools` allowlist strictly. In | ||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove the specific phrase: