Skip to content
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
6be5c61
chore(homebrew): update formula to v0.3.6
Wirasm Apr 12, 2026
9546ea7
feat(providers): add GitHub Copilot community provider
popemkt Apr 21, 2026
f412b83
feat(providers/copilot): wire tool restrictions
popemkt Apr 21, 2026
94b7f47
feat(providers/copilot): wire MCP servers
popemkt Apr 21, 2026
a198290
feat(providers/copilot): wire skills
popemkt Apr 21, 2026
d7719bb
feat(providers/copilot): wire best-effort structured output
popemkt Apr 21, 2026
8a3504d
fix(providers/copilot): address PR review findings
popemkt Apr 21, 2026
31d94d4
feat(providers/copilot): wire sub-agents
popemkt Apr 21, 2026
bc25dee
fix: detect completion signal in any XML tag, not just <promise> (#11…
Wirasm Apr 22, 2026
d7f36b2
fix(web): allow deleting nodes from Workflow Builder (#971) (#1113)
medevs Apr 22, 2026
817186d
fix(workflows): make archon-adversarial-dev sed replacement macOS-saf…
LaplaceYoung Apr 22, 2026
6fea392
fix(workflows): filter user-plugin MCP noise out of workflow warnings…
Wirasm Apr 22, 2026
e0b57a8
fix(providers/copilot): make vendor-path binary-resolver test hermetic
Apr 22, 2026
ae2d936
fix(deps): override transitive axios to ^1.15.0 for CVE-2025-62718 (#…
Wirasm Apr 22, 2026
056707d
fix(cli): surface stale-workspace registration error instead of fake …
Wirasm Apr 22, 2026
d5c1cd9
fix(server,web,workflows): web approval gates auto-resume + reject-wi…
Wirasm Apr 22, 2026
7000f9b
Release 0.3.7
Wirasm Apr 22, 2026
48c81d3
Merge pull request #1352 from coleam00/dev
Wirasm Apr 22, 2026
0de826c
fix(build): drop --bytecode from compiled-binary build (#1354)
Wirasm Apr 22, 2026
4397ed1
chore(release-skill): add pre-flight binary smoke + deterministic-CI-…
Wirasm Apr 22, 2026
5294fcd
fix(providers/pi): lazy-load Pi SDK to unbreak compiled archon binary…
Wirasm Apr 22, 2026
e646cd4
Release 0.3.8
Wirasm Apr 22, 2026
8697508
Merge pull request #1356 from coleam00/dev
Wirasm Apr 22, 2026
876abb1
fix(ci): --no-worktree on release-smoke archon-assist invocations (#1…
Wirasm Apr 22, 2026
889ffc2
Release 0.3.9
Wirasm Apr 22, 2026
7fc4761
Merge pull request #1358 from coleam00/dev
Wirasm Apr 22, 2026
4115ea5
chore: update Homebrew formula for v0.3.9
github-actions[bot] Apr 22, 2026
359b6d3
chore(release-skill): use --help (not version) for Step 1.5 smoke pro…
Wirasm Apr 22, 2026
6f86402
chore(test-release-skill): preserve archon-stable across test cycles
Wirasm Apr 22, 2026
e50e649
Merge upstream/dev into emdash/add-copilot-2er
Apr 22, 2026
efd838e
fix(merge): remove stray <<<<<<< HEAD marker left in package.json
Apr 22, 2026
0e9f1c8
fix(providers/pi): install PI_PACKAGE_DIR shim so Pi workflows run in…
Wirasm Apr 22, 2026
b99cee4
feat(providers): autodetect canonical binary install paths for Claude…
Wirasm Apr 22, 2026
f9f8775
fix(providers/test): use os.homedir() instead of $HOME in claude bina…
coleam00 Apr 23, 2026
5957c6e
fix(server): contain Discord login failure so it doesn't kill the ser…
coleam00 Apr 23, 2026
46874ca
docs(script-nodes): dedicated guide + teach the archon skill (#1362)
Wirasm Apr 24, 2026
2c15439
docs/skill: general hardening — fix inaccuracies, fill workflow/CLI/e…
Wirasm Apr 24, 2026
ad13d83
chore(workflows): switch default Opus pin to opus[1m] alias (#1395)
Wirasm Apr 24, 2026
f094f2a
fix(workflow): migrate piv-loop plan handoff to $ARTIFACTS_DIR (#1398)
coleam00 Apr 24, 2026
a57d628
test(workflows): add anyFailed status derivation coverage for DAG exe…
coleam00 Apr 24, 2026
9122673
docs/skill: add parameter-matrix.md quick-lookup reference
coleam00 Apr 24, 2026
b286ad9
docs: point contributors at PR template and Closes #N convention
Wirasm Apr 27, 2026
d35b193
feat(workflows): add maintainer-standup workflow for daily PR/issue t…
Wirasm Apr 27, 2026
3868f89
feat(workflows): support explicit tags in workflow YAML (#1190)
lraphael Apr 27, 2026
bf8734b
fix(copilot): address CodeRabbit review on PR #1351
popemkt Apr 27, 2026
6c94355
feat(workflows): add maintainer-review-pr and group maintainer workfl…
Wirasm Apr 27, 2026
686bec6
feat(pi): use ModelRegistry to support custom models and skip auth fo…
matt2000 Apr 27, 2026
4929c54
chore(workflows): group smoke-test workflows under test-workflows/ + …
Wirasm Apr 27, 2026
ef950ff
fix(maintainer-review): address CodeRabbit findings on #1430 (#1432)
Wirasm Apr 27, 2026
e2a4427
fix(workflows): approval gate bypass after reject-with-redraft on res…
Wirasm Apr 27, 2026
8cfd598
feat(workflows): add mutates_checkout to allow concurrent runs on liv…
Wirasm Apr 27, 2026
eec09ff
docs: replace String.raw with direct assignment in script node exampl…
Wirasm Apr 27, 2026
06c3f9e
Merge upstream/dev into emdash/add-copilot-2er
popemkt Apr 27, 2026
454dbcb
test(copilot): cover MCP, skills, agents in e2e-copilot-all-features
popemkt Apr 27, 2026
a1d6209
chore(workflows): group experimental workflows under .archon/workflow…
Wirasm Apr 27, 2026
f9bad03
test(copilot): harden skill + agent assertions with unguessable tokens
popemkt Apr 27, 2026
ef16bac
docs(copilot): clarify single-auth-model + drop redundant outer quote…
popemkt Apr 27, 2026
e71c496
fix(workflows): export ARTIFACTS_DIR, LOG_DIR, BASE_BRANCH to bash no…
avro198 Apr 27, 2026
dcfb9d1
fix(workflow): substitute $nodeId.output refs in approval messages (#…
atlas-architect Apr 27, 2026
287bb35
feat(workflows): expose $LOOP_PREV_OUTPUT in loop node prompts (#1286…
voidborne-d Apr 27, 2026
6cf9883
feat(maintainer-standup): surface contributor replies since last run …
Wirasm Apr 28, 2026
2220ffe
feat(maintainer-workflows): cross-workflow review memory (#1458)
Wirasm Apr 28, 2026
0afbeb3
chore(deps): bump claude-agent-sdk to 0.2.121, codex-sdk to 0.125.0 (…
Wirasm Apr 28, 2026
ff90111
fix(claude): stop passing --no-env-file to native binary in dev mode …
Wirasm Apr 28, 2026
784444a
Merge remote-tracking branch 'upstream/dev' into emdash/add-copilot-2er
popemkt Apr 28, 2026
bf1f471
refactor(workflows): trust the SDK for model validation (#1463)
Wirasm Apr 28, 2026
7d06773
fix(cli): lazy-import bundled skill files so non-setup commands don't…
Wirasm Apr 28, 2026
d256c71
fix(docker): register safe.directory for all repos on bind-mount rest…
kagura-agent Apr 29, 2026
ff924e8
feat(maintainer): Pi/Minimax variant of maintainer-standup + dual-for…
Wirasm Apr 29, 2026
a0d4884
fix(providers/pi): tolerate prose preamble in structured-output respo…
Wirasm Apr 29, 2026
fccfe42
fix(workflows): concise failure messages for bash/script nodes (#1389…
Wirasm Apr 29, 2026
cbcca8c
fix(orchestrator): clear stale session ID on error_during_execution t…
kagura-agent Apr 29, 2026
4885ee6
fix(claude): honor CLAUDE_BIN_PATH in dev mode for libc-mismatch host…
Wirasm Apr 29, 2026
7e4ea40
fix(workflows): skip markdown code blocks in $nodeId.output validatio…
truffle-dev Apr 29, 2026
d3fc706
Merge remote-tracking branch 'upstream/dev' into emdash/add-copilot-2er
popemkt Apr 29, 2026
4f666c7
refactor(providers/copilot): drop isModelCompatible per #1463
popemkt Apr 29, 2026
2c65569
fix(providers/copilot): lazy-load @github/copilot-sdk to protect comp…
popemkt Apr 29, 2026
8ebacbf
fix(providers/copilot): explicit useLoggedInUser config wins over env…
popemkt Apr 29, 2026
5d0a90d
fix: ensure all PR-creating workflows target $BASE_BRANCH (#1479)
ericsoriano Apr 29, 2026
25531df
chore(deps): remove stale package-lock.json to clear Dependabot alert…
Wirasm Apr 29, 2026
db1c005
Release '0.3.10'
Wirasm Apr 29, 2026
f51600a
fix(ci): expand $HOME for CLAUDE_BIN_PATH in e2e-smoke jobs
Wirasm Apr 29, 2026
58d4886
Release 0.3.10 (#1488)
Wirasm Apr 29, 2026
fd6d75e
chore(homebrew): update formula to v0.3.10
Wirasm Apr 29, 2026
398afe0
Merge main into dev (restore pre-squash-merge history for open PRs)
Wirasm Apr 29, 2026
8847da8
fix(release-workflow): use regular merge for dev/main sync after squa…
Wirasm Apr 29, 2026
2945f2e
fix(homebrew): restore v0.3.10 formula on dev (#1491)
Wirasm Apr 29, 2026
8295ece
fix(workflows): stop sweeping scratch artifacts from every git add -A…
Wirasm Apr 30, 2026
1820a35
docs(release-skill): warn against --ff-only and reset --hard for dev/…
Wirasm May 1, 2026
4631b8e
feat(cli): add archon skill install command (#1445)
leex279 May 1, 2026
69b2c89
fix(docker): resolve Claude binary to glibc variant on Debian image (…
leex279 May 1, 2026
34302e0
Merge upstream/dev into emdash/add-copilot-2er
popemkt May 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .archon/workflows/e2e-copilot-smoke.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# E2E smoke test — GitHub Copilot community provider
# Verifies: provider registration, SDK session start, simple prompt response.
# Auth: run `copilot login`, or provide COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN.
name: e2e-copilot-smoke
description: 'Smoke test for the GitHub Copilot community provider.'
provider: copilot
model: gpt-5-mini

nodes:
- id: simple
prompt: 'Reply with exactly COPILOT_OK'
idle_timeout: 30000

- id: assert
bash: |
output="$simple.output"
if [ -z "$output" ]; then
echo "FAIL: simple node returned empty output"
exit 1
fi
echo "$output" | rg -q "COPILOT_OK" || {
echo "FAIL: expected COPILOT_OK, got: $output"
exit 1
}
echo "PASS: simple=$output"
depends_on: [simple]
21 changes: 21 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions packages/core/src/config/config-loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ const SAFE_ASSISTANT_FIELDS: Record<string, readonly string[]> = {
codex: ['model', 'modelReasoningEffort', 'webSearchMode'],
// community providers — list each field we're confident is safe to
// show in the web UI. Unknown providers fall through with no fields.
copilot: ['model'],
pi: ['model'],
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: AI Assistants
description: Configure Claude Code, Codex, and Pi as AI assistants for Archon.
description: Configure Claude Code, Codex, GitHub Copilot, and Pi as AI assistants for Archon.
category: getting-started
area: clients
audience: [user]
Expand All @@ -9,7 +9,7 @@ sidebar:
order: 4
---

You must configure **at least one** AI assistant. All three can be configured and mixed within workflows.
You must configure **at least one** AI assistant. All four can be configured and mixed within workflows.

## Claude Code

Expand Down Expand Up @@ -227,6 +227,80 @@ If you want Codex to be the default AI assistant for new conversations without c
DEFAULT_AI_ASSISTANT=codex
```

## GitHub Copilot (Community Provider)

**SDK-backed community provider.** Archon's Copilot adapter uses `@github/copilot-sdk`, which drives the Copilot CLI over GitHub's supported JSON-RPC bridge instead of screen-scraping the interactive TUI.

Copilot is registered as `builtIn: false` — like Pi, it is a bundled community provider rather than a core built-in.

### Install

For source installs, `bun install` pulls in the SDK and its bundled CLI dependency automatically.

For compiled Archon binaries, install the Copilot CLI yourself and point Archon at it if needed:

```bash
# Any platform
npm install -g @github/copilot
```

Optional override paths:

```ini
COPILOT_CLI_PATH=/absolute/path/to/copilot
```

```yaml
assistants:
copilot:
copilotCliPath: /absolute/path/to/copilot
```

### Authenticate

Copilot authentication is delegated to the Copilot CLI / SDK.

Use one of:

- `copilot login`
- `COPILOT_GITHUB_TOKEN`
- `GH_TOKEN`
- `GITHUB_TOKEN`

Request-scoped env vars still win, so codebase env overrides work the same way they do for the other providers.

### Configuration Options

```yaml
assistants:
copilot:
model: gpt-5-mini
# Optional: explicit Copilot CLI path
# copilotCliPath: /absolute/path/to/copilot
# Optional: override Copilot config dir
# configDir: /absolute/path/to/copilot-config
# Optional: allow Copilot to auto-discover repo MCP/skills
# enableConfigDiscovery: false
```

> **⚠️ Trust boundary.** `enableConfigDiscovery: true` lets the Copilot CLI/SDK load repo-level config (e.g. `.mcp.json`, `.vscode/mcp.json`, skill directories) directly, bypassing Archon's workflow validation surface. Only enable it for repositories you trust. Archon's default (`false`) keeps MCP/skills under explicit workflow control via `nodeConfig.mcp` and `nodeConfig.skills`.

### Supported Archon Features

| Feature | Support | Notes |
|---|---|---|
| Session resume | ✅ | Returns `sessionId` and reuses it on resume |
| Reasoning control | ✅ | `effort:` / string `thinking:` map to Copilot `reasoningEffort` |
| System prompt override | ✅ | `systemPrompt:` |
| Codebase env vars (`envInjection`) | ✅ | merged into the spawned Copilot CLI environment |
| Tool restrictions | ✅ | `allowed_tools` → `availableTools`, `denied_tools` → `excludedTools` (SDK enforces `availableTools` precedence when both are set) |
| MCP servers | ✅ | `mcp: path/to/servers.json` → `SessionConfig.mcpServers` (env vars `$FOO` expanded; missing vars warned) |
| Skills | ✅ | `skills: [name]` resolved from `.agents/skills/`, `.claude/skills/` (project or home) → `SessionConfig.skillDirectories` |
| Structured output | ✅ | best-effort: schema instruction appended to the prompt, assistant transcript parsed as JSON on completion (models that reliably follow instruction succeed; unparseable output degrades to the dag-executor's missing-output warning) |
| Sub-agents (`agents:`) | ✅ | `name`/`description`/`prompt`/`tools` (allowlist) map 1:1 to `SessionConfig.customAgents`; Claude-specific fields (`model`, `disallowedTools`, `skills`, `maxTurns`) warn per agent and are ignored |
| Fallback model | ❌ | not wired |
| Sandbox | ❌ | Copilot permissions are separate from Archon's sandbox surface |

## Pi (Community Provider)

**One adapter, ~20 LLM backends.** Pi (`@mariozechner/pi-coding-agent`) is a community-maintained coding-agent harness that Archon integrates as the first community provider. It unlocks Anthropic, OpenAI, Google (Gemini + Vertex), Groq, Mistral, Cerebras, xAI, OpenRouter, Hugging Face, and more under a single `provider: pi` entry.
Expand Down
4 changes: 3 additions & 1 deletion packages/providers/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,19 @@
"./codex/provider": "./src/codex/provider.ts",
"./codex/config": "./src/codex/config.ts",
"./codex/binary-resolver": "./src/codex/binary-resolver.ts",
"./community/copilot": "./src/community/copilot/index.ts",
"./community/pi": "./src/community/pi/index.ts",
"./errors": "./src/errors.ts",
"./registry": "./src/registry.ts"
},
"scripts": {
"test": "bun test src/claude/provider.test.ts && bun test src/codex/provider.test.ts && bun test src/registry.test.ts && bun test src/codex/binary-guard.test.ts && bun test src/codex/binary-resolver.test.ts && bun test src/codex/binary-resolver-dev.test.ts && bun test src/claude/binary-resolver.test.ts && bun test src/claude/binary-resolver-dev.test.ts && bun test src/community/pi/model-ref.test.ts && bun test src/community/pi/config.test.ts && bun test src/community/pi/event-bridge.test.ts && bun test src/community/pi/options-translator.test.ts && bun test src/community/pi/session-resolver.test.ts && bun test src/community/pi/provider.test.ts",
"test": "bun test src/claude/provider.test.ts && bun test src/codex/provider.test.ts && bun test src/registry.test.ts && bun test src/codex/binary-guard.test.ts && bun test src/codex/binary-resolver.test.ts && bun test src/codex/binary-resolver-dev.test.ts && bun test src/claude/binary-resolver.test.ts && bun test src/claude/binary-resolver-dev.test.ts && bun test src/community/pi/model-ref.test.ts && bun test src/community/pi/config.test.ts && bun test src/community/pi/event-bridge.test.ts && bun test src/community/pi/options-translator.test.ts && bun test src/community/pi/session-resolver.test.ts && bun test src/community/pi/provider.test.ts && bun test src/community/copilot/config.test.ts && bun test src/community/copilot/binary-resolver.test.ts && bun test src/community/copilot/provider.test.ts && bun test src/community/copilot/tool-restrictions.test.ts && bun test src/community/copilot/mcp-translation.test.ts && bun test src/community/copilot/skills-translation.test.ts && bun test src/community/copilot/structured-output.test.ts && bun test src/community/copilot/provider-hardening.test.ts && bun test src/community/copilot/agents-translation.test.ts",
"type-check": "bun x tsc --noEmit"
},
"dependencies": {
"@anthropic-ai/claude-agent-sdk": "^0.2.89",
"@archon/paths": "workspace:*",
"@github/copilot-sdk": "^0.2.2",
"@mariozechner/pi-ai": "^0.67.5",
"@mariozechner/pi-coding-agent": "^0.67.5",
"@openai/codex-sdk": "^0.116.0",
Expand Down
Loading