Skip to content

Commit 370d10c

Browse files
Copilotpelikhan
andauthored
docs: gh-proxy and cli-proxy always enabled for engine: aw (Pi SDK no native MCP)
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/01e7b2ba-9d7a-4706-a21a-f8b576ecb523 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
1 parent a26591a commit 370d10c

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

specs/aw-harness.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ The harness is **built on top of the Pi agent ecosystem** (`@mariozechner/pi-cod
1212
- A Pi SDK application with gh-aw-specific Pi extensions
1313
- Optimized for execution inside the gh-aw Action container (firewall, api-proxy, MCP gateway)
1414
- TypeScript compiled for Node.js 24, bundled as a single `.cjs` in `actions/setup/js/`
15+
- **`gh-proxy` and `cli-proxy` are always enabled** — Pi SDK does not support MCP natively; these are mandatory for the MCP bridge to work and cannot be turned off
1516

1617
### What this is NOT
1718

@@ -153,6 +154,7 @@ export default function safeOutputsExtension(pi: ExtensionAPI) {
153154
2. **Extensions-first** — Every gh-aw feature is a proper Pi extension using `ExtensionAPI`. Extensions use `pi.registerTool()` for tools, `pi.on()` for events, `pi.registerProvider()` for model routing. This makes them reusable outside gh-aw.
154155
3. **api-proxy for model resolution** — Pi's `pi-ai` talks to the api-proxy as an OpenAI-compatible provider. Model names (aliases or explicit) pass through — the proxy resolves.
155156
4. **Optimized for gh-aw container** — Assumes firewall, api-proxy, MCP gateway are running. No redundant auth, no direct LLM API calls, no network configuration.
157+
5. **`gh-proxy` and `cli-proxy` always on** — The Pi SDK does not support MCP natively. GitHub and other MCP server tools are bridged into Pi via the `mcp-bridge` extension, which requires `gh-proxy` (pre-authenticated `gh` CLI in bash) and `cli-proxy` (MCP servers mounted as CLI tools on `PATH`) to be active. These features are **always enabled** when `engine: aw` is selected and **cannot be disabled**.
156158
5. **TypeScript → Node 24** — Source is TypeScript, compiled to ES2024, bundled via esbuild to a single `.cjs`. Leverages Node 24 features (native fetch, structuredClone, AbortSignal.any).
157159
6. **Output in `actions/setup/js/`** — The bundled `aw_harness.cjs` lives alongside `copilot_harness.cjs` and `claude_harness.cjs`. Same deployment mechanism, same runtime contract.
158160
7. **New opt-in engine**`engine: aw` is a new choice. Existing engines are untouched.
@@ -187,6 +189,8 @@ This means:
187189

188190
Uses the **existing gh-aw frontmatter** with `engine: aw` and a new optional `harness:` block.
189191

192+
> **Constraint:** `gh-proxy` and `cli-proxy` are always enabled for `engine: aw` (Pi SDK does not support MCP natively). They are shown explicitly below but are enforced by the compiler regardless of whether the author includes them.
193+
190194
```markdown
191195
---
192196
on:
@@ -203,8 +207,14 @@ permissions:
203207
issues: read
204208
pull-requests: read
205209

210+
# gh-proxy and cli-proxy are ALWAYS enabled for engine: aw.
211+
# Pi SDK does not support MCP natively; the mcp-bridge extension
212+
# requires both features to bridge gateway tools into Pi AgentTools.
213+
cli-proxy: true
214+
206215
tools:
207216
github:
217+
mode: gh-proxy # Always gh-proxy for engine: aw
208218
toolsets: [issues, pull_requests, code_search]
209219
bash: [grep, find, wc, git, jq]
210220

@@ -342,6 +352,8 @@ export default async function(pi: ExtensionAPI) {
342352

343353
Bridges gh-aw's MCP gateway tools into Pi's tool system as `AgentTool` instances.
344354

355+
> **Note:** The Pi SDK does not support MCP natively. `gh-proxy` (pre-authenticated `gh` CLI in bash) and `cli-proxy` (MCP servers mounted as CLI tools on `PATH`) are **always enabled** when `engine: aw` is selected and **cannot be disabled**. These are mandatory prerequisites for the MCP bridge to function.
356+
345357
```typescript
346358
export default function(pi: ExtensionAPI) {
347359
const gatewayConfig = loadMCPGatewayConfig();
@@ -591,6 +603,8 @@ async function main() {
591603
| `engine: aw` with `harness:` block | Multi-step orchestration mode |
592604
| `engine: aw` with `harness.steps` | Explicit DAG (parallel, depends, agent assignment) |
593605
| `engine: aw` without `harness.agents` | All steps use `engine.model` |
606+
| `engine: aw` + `cli-proxy: false` | **Ignored**`cli-proxy` is always on for `engine: aw` |
607+
| `engine: aw` + `tools.github.mode: remote` | **Overridden to `gh-proxy`** — Pi SDK requires `gh-proxy`; `remote` mode is not supported |
594608

595609
## Build & Deployment
596610

0 commit comments

Comments
 (0)