Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
383 commits
Select commit Hold shift + click to select a range
6ccfb4b
feat(providers): add GitHub Copilot community provider (#1505)
danielscholl May 25, 2026
c903c79
feat(providers): add OpenCode community provider with agents support …
cropse May 25, 2026
c571a93
feat(web): improve streaming chat continuity readability (#1617)
knosence May 26, 2026
f83d1f8
fix(server): surface CLI resume command in web approve/reject respons…
blankse May 26, 2026
63b47d9
feat(web): experimental console UI at /console (#1747)
Wirasm May 26, 2026
8491f00
feat(slack): umbrella Slack UX upgrade — buttons, status, reactions, …
Wirasm May 26, 2026
a8b023c
fix(orchestrator): resume interactive workflows on chat platforms (#1…
Wirasm May 26, 2026
ac18034
fix(db): read DEFAULT_AI_ASSISTANT env var in createCodebase (fixes #…
kagura-agent May 26, 2026
50beeec
feat(core): plumb user_id from chat/forge adapters through orchestrat…
Wirasm May 28, 2026
f81b22e
feat(core): swap shared GitHub PAT for GitHub App with multi-installa…
Wirasm May 28, 2026
061180d
Release 0.4.0
Wirasm May 28, 2026
30b78d9
Merge branch 'main' of github.com:coleam00/Archon into dev
Wirasm May 28, 2026
91bafd6
chore: update Homebrew formula for v0.4.0
github-actions[bot] May 28, 2026
765417b
Merge branch 'main' of github.com:coleam00/Archon into dev
Wirasm May 28, 2026
bbf2788
fix(db/sqlite): defer user_id index creation until after column ALTER…
Wirasm May 28, 2026
1cb5666
Release 0.4.1
Wirasm May 28, 2026
f01c655
Merge branch 'main' of github.com:coleam00/Archon into dev
Wirasm May 28, 2026
24cfe14
chore: update Homebrew formula for v0.4.1
github-actions[bot] May 28, 2026
bb2cf57
Merge branch 'main' of github.com:coleam00/Archon into dev
Wirasm May 28, 2026
c839bcc
fix(providers/pi): bump pi-ai to 0.73.1 and pass explicit agentDir
coleam00 May 28, 2026
e30c03e
docs(github-app): document canonical Docker deploy recipe (port→127.0…
Wirasm May 28, 2026
e2fee00
fix(providers/pi): migrate Pi SDK to @earendil-works (0.76.0) (#1800)
Wirasm May 28, 2026
3103d1c
refactor: move user-identity extraction into adapter callbacks (#1801)
the-archon-bot[bot] May 29, 2026
83e18ad
Close parallel-definition drift between interfaces and Zod schemas (#…
the-archon-bot[bot] May 29, 2026
8d35386
feat(workflows/condition-evaluator): support shorthand path and unquo…
lraphael May 29, 2026
9a7bc89
fix(workflows): stop silently dropping workflow-level effort/thinking…
Wirasm May 29, 2026
a1e06c1
telemetry: umbrella trust fixes (CI auto-disable, first-run notice, s…
Wirasm May 29, 2026
2d947af
feat(workflows): persist per-node provider sessions across workflow r…
Wirasm May 29, 2026
07ed3d3
Fix: auto-apply Postgres schema on startup (#1810)
Wirasm May 29, 2026
d979aeb
chore(deps): standardize on zod v4 across the codebase (#1813)
Wirasm May 29, 2026
ab1bee7
fix(workflows): fail dag node on idle-timeout with zero output (#1812)
Wirasm May 29, 2026
367edfd
feat(telemetry): expand anonymous PostHog capture (started/completed …
Wirasm Jun 1, 2026
ab81248
feat: per-user GitHub identity via device flow + interim web auth (PR…
Wirasm Jun 1, 2026
8704bf5
fix(providers/codex): capture thread id from thread.started so sessio…
Wirasm Jun 2, 2026
8d6be1c
fix(core): concurrency-safe workflow resume/cancel (CAS guards) (#1830)
Wirasm Jun 2, 2026
69bf4d0
feat(auth): opt-in web login via Better Auth + user-identity seam (#1…
Wirasm Jun 2, 2026
c92cbef
feat(console): console promotion — pending-input banner, project-scop…
Wirasm Jun 4, 2026
009993f
Fix Codex output_format schemas for OpenAI strict-mode (#1843)
Wirasm Jun 4, 2026
a93c324
Fix symlinked markdown command discovery (#1857)
Wirasm Jun 4, 2026
209564f
Fix: detect Claude session-limit notices in AI node output (#1852)
Wirasm Jun 4, 2026
2d0beff
Fix: Codex provider drops structured output on multi-message turns (#…
Wirasm Jun 4, 2026
3378fdf
docs: add llms.txt plugin and sync workflow catalogs (#1833)
joseph-fajen Jun 4, 2026
ba67d84
feat(docs): marketing landing page above the docs site (#1829)
Wirasm Jun 4, 2026
5122a98
feat(cli): cross-provider run management — get/runs/--json/--detach, …
Wirasm Jun 4, 2026
92a877b
feat(server): live console updates for out-of-process (CLI) workflow …
Wirasm Jun 4, 2026
358171e
docs(manage-run): correct stale 'no live updates' note for detached r…
Wirasm Jun 4, 2026
c732ca9
chore: add AGENTS.md (1:1 copy of CLAUDE.md)
Wirasm Jun 4, 2026
768a407
feat(workflows): model alias resolver core (#1867)
Wirasm Jun 4, 2026
a11dcb7
feat(cli): install bundled skills into Codex .agents/skills/ + enable…
Wirasm Jun 4, 2026
d1b4b89
Fix: unreadable active sidebar link on mobile docs (#1869)
Wirasm Jun 4, 2026
c834c2a
feat(workflows): typed artifacts — output_type + engine-written sidec…
Wirasm Jun 5, 2026
07645a8
fix(web/console): gate /console behind auth + correct run-event norma…
Wirasm Jun 5, 2026
34356aa
Fix: reuse Pi extension loader per process so 2nd+ session doesn't ha…
Wirasm Jun 5, 2026
58fd9dc
feat(web/console): show run provenance — input message + platform ico…
Wirasm Jun 5, 2026
97ef3e0
feat(workflows): wire model-alias resolver into execution + cross-pro…
Wirasm Jun 5, 2026
e41f426
feat(workflows): reliable cross-provider structured output — validate…
Wirasm Jun 5, 2026
95ee6db
feat(web/console): chat workflow-completion card + SSE-lock + jump-to…
Wirasm Jun 5, 2026
69152a9
feat(web/console): settings core — assistant config + system panel (#…
Wirasm Jun 5, 2026
42dfefb
feat(workflows): validate-and-reask loop for best-effort structured o…
Wirasm Jun 5, 2026
02cbe34
Fix: warn on the bash node $node.output double-quote footgun + docs (…
Wirasm Jun 5, 2026
611b48e
feat(web/console): GitHub identity panel (device flow) + fix cache er…
Wirasm Jun 8, 2026
0c95e6f
feat(credentials): per-user AI-provider credentials foundation (#1899)
Wirasm Jun 8, 2026
abb66c4
feat(web/console): chat surface restyle to Direction B (Modern Consol…
leex279 Jun 8, 2026
582103e
feat(web/console): fold node lifecycle into one divider + node filter…
Wirasm Jun 8, 2026
4251c64
feat(web): make /console the default UI, re-root classic UI under /le…
Wirasm Jun 8, 2026
6a5b5f0
feat(web/console): wire chat file uploads + cap tool-call input heigh…
Wirasm Jun 8, 2026
12ed94a
feat(credentials): per-user AI-provider API key connect surface (#1911)
Wirasm Jun 8, 2026
282e9ff
fix(server): exempt /api/auth/providers from the Better Auth catch-al…
Wirasm Jun 8, 2026
a0f418b
Make workspace sync non-destructive (#1864)
Wirasm Jun 8, 2026
0ed4bb7
feat(credentials): subscription (OAuth) auth + Codex/Pi delivery (PR …
Wirasm Jun 8, 2026
ba0cfd5
Fix: treat DEFAULT_AI_ASSISTANT as a fallback default, not a hard ove…
Wirasm Jun 8, 2026
ab4cde6
fix(workflows): interactive loop resume uses fresh session on first i…
Wirasm Jun 8, 2026
67b8fd7
fix(cleanup): read worktree.baseBranch config before git default-bran…
Wirasm Jun 8, 2026
2cc6215
feat: add /setproject command to bind conversation to registered code…
Wirasm Jun 8, 2026
aced56e
fix(core): scoped direct chat runs in repo cwd, not workspaces root (…
Wirasm Jun 8, 2026
8a7c367
feat(settings): AI Settings UI + config tiers editor + CLI parity (PR…
Wirasm Jun 9, 2026
d72c20c
docs: per-user AI credentials + AI Settings on the docs site (PR-4) (…
Wirasm Jun 9, 2026
c037eb6
fix(web/console): replace 📎 emoji with lucide Paperclip icon (#1930)
leex279 Jun 10, 2026
0a74908
feat(workflows): recommended workflows pinned per project (#1929)
leex279 Jun 10, 2026
b3a100c
feat(telemetry): schema v3 — server heartbeat, chat turns, failure ta…
Wirasm Jun 10, 2026
7232562
feat(telemetry): schema v4 — usage totals (tokens/cost), chat model+l…
Wirasm Jun 11, 2026
ad0884b
feat: per-user AI prefs — tiers/aliases/default-provider overrides (P…
Wirasm Jun 11, 2026
02ac90a
feat(web): Archon Studio builder data model + node variants (PR-1) (#…
seanrobertwright Jun 11, 2026
b896bcc
feat(credentials): vendor-canonical credential catalog derived from p…
Wirasm Jun 11, 2026
7dfdf68
feat(console): per-agent credential cards (#1954 PR-2) (#1962)
Wirasm Jun 11, 2026
627461f
fix(oauth-bridge): release the fixed OAuth callback port when a login…
Wirasm Jun 12, 2026
117e91f
feat(credentials): un-gate ChatGPT/Codex subscription login with an A…
Wirasm Jun 12, 2026
438db9e
feat(console): agent-aware model pickers for tiers, aliases, and defa…
Wirasm Jun 12, 2026
c17ac5f
fix(console): surface late-arriving OAuth signals in the subscription…
Wirasm Jun 12, 2026
e250e7a
fix(cli): log workflow discovery root on every run; fail loudly on re…
Wirasm Jun 12, 2026
ece2a68
fix: user-scope console chat and resolve chat credentials from the se…
Wirasm Jun 12, 2026
e77a338
fix(credentials,pi): deliver Claude subscriptions to Pi in direct cha…
Wirasm Jun 15, 2026
6be6e6f
fix(db): create remote_agent_user_ai_prefs in the SQLite schema (#2033)
Wirasm Jun 26, 2026
658f487
fix(server,core): clarify Claude auth posture on per-user installs (#…
Wirasm Jun 26, 2026
5e42c6d
feat(core): surface unpushed work in source/ after chat turns (#1978)
Wirasm Jun 26, 2026
c101fc0
fix(isolation): pass --no-track when creating new-branch worktrees (#…
Wirasm Jun 26, 2026
a1462fe
feat(providers,workflows): surface session-resume outcome (resumed) +…
Wirasm Jun 26, 2026
1dc9e7e
fix(core): persist non-web platform messages to remote_agent_messages…
Wirasm Jun 26, 2026
6117f17
Gate stale workflow resumes (#1935)
Wirasm Jun 26, 2026
0aacffe
feat(web): forward SDK lifecycle events to Web UI (tasks + hooks) (#9…
Wirasm Jun 26, 2026
9e4d108
docs: reframe Archon identity from single-developer coding tool (#2034)
Wirasm Jun 26, 2026
d66d76d
chore(deps): bump @anthropic-ai/claude-agent-sdk 0.3.173 → 0.3.193 (#…
Wirasm Jun 26, 2026
d39d062
chore(cli): drop stale CLAUDECODE=1 nested-session warning (#2039)
Wirasm Jun 26, 2026
699c1ad
chore(archon): experimental/test workflows + direction.md reframe (#2…
Wirasm Jun 26, 2026
6539041
feat(workflows,cli,paths): surface resolved model/tier in CLI node_st…
Wirasm Jun 26, 2026
407f6d1
feat(core,cli,paths): zero-config local encryption key for credential…
Wirasm Jun 26, 2026
137de50
Release 0.5.0
Jun 26, 2026
f2088e5
Merge branch 'main' of github.com:coleam00/Archon into dev
Jun 26, 2026
4d0aec6
chore: update Homebrew formula for v0.5.0
github-actions[bot] Jun 26, 2026
a159e1a
feat(web): Archon Studio visual workflow builder (PR-2) (#2015)
seanrobertwright Jun 27, 2026
59bbd00
fix(workflows): restore interactive-loop cross-gate session continuit…
Wirasm Jun 27, 2026
bb23aa2
fix(marketplace): harden auto-review act node against gh auth 401s
coleam00 Jul 4, 2026
4dcc998
feat(marketplace): add harness-score
seanrobertwright Jul 4, 2026
6045848
feat(marketplace): add pocock-skills-workflow-family
seanrobertwright Jul 9, 2026
dad62d8
feat(codebases): folder projects — non-git workspaces + multi-repo ro…
Wirasm Jul 13, 2026
3b47e4a
fix(providers): mirror CLAUDE_API_KEY to ANTHROPIC_API_KEY for the Cl…
uinstinct Jul 13, 2026
f69919a
fix(reliability): stop Windows mid-run deaths (keep-awake + real --de…
buun-dev Jul 13, 2026
8662c63
feat(workflows): loop_group node — cross-node subgraph looping (#2032)
xbeark Jul 13, 2026
edb34af
feat(workflows): cross-invocation artifact scope + cold-resume pointe…
Wirasm Jul 14, 2026
83b7584
feat(core/cli/console): per-user default chat model (default_model) +…
Wirasm Jul 14, 2026
145e3f9
fix(core): /setproject writes to conversation DB id, not platform id …
aryrabelo Jul 14, 2026
0e70c93
[codex] Fix project-scoped conversation cwd resolution (#1994)
anhle128 Jul 14, 2026
056c4f2
feat(cli): default chat model step in archon setup (#2087)
Wirasm Jul 14, 2026
8a0441d
feat(isolation/executor/cli): base-branch fallback from the codebase …
Wirasm Jul 14, 2026
6494103
fix(cli): enforce requires:[github] gate on the CLI run path (#2089) …
Wirasm Jul 14, 2026
7362274
fix(workflows): re-derive declaredFields on resume for strict $node.o…
Wirasm Jul 14, 2026
ca03c75
fix(workflows): namespace loop_group body lifecycle events (#2090) (#…
Wirasm Jul 14, 2026
fb0af24
fix(workflows): honor retry: on bash/script nodes (#2088) (#2096)
Wirasm Jul 14, 2026
79f8a27
fix(web/console): release per-key version counter on last unsubscribe…
truffle-dev Jul 14, 2026
3391600
docs(skill): sync archon skill with engine reality — loop_group, sess…
Wirasm Jul 14, 2026
80ba9fa
chore(providers): bump claude-agent-sdk 0.3.209, codex-sdk 0.144.4, p…
Wirasm Jul 14, 2026
5109e00
fix(core): manage_run get crash on SQLite string timestamps (#2078) (…
Wirasm Jul 14, 2026
cb75107
fix(core): /update-project distinguishes row-gone from transient DB e…
Wirasm Jul 14, 2026
e162db0
fix(cli): accept short run-id prefixes in workflow run-addressing com…
Wirasm Jul 14, 2026
c0804d7
fix(workflows): warn on unknown allowed_tools/denied_tools names at v…
Wirasm Jul 14, 2026
bf6fe14
fix(providers/pi): extension-registered models resolve on 2nd+ DAG no…
Wirasm Jul 14, 2026
8dab2f6
fix(workflows): gate approve/reject keeps the run paused instead of s…
Wirasm Jul 14, 2026
faac3b4
fix(workflows): resolve Windows bash binary correctly (#1326) — slim,…
atlas-architect Jul 15, 2026
c6743ae
fix(providers/codex): deliver systemPrompt by prepending to the promp…
Wirasm Jul 15, 2026
2476701
ci: free runner disk space before the docker build (#2122)
Wirasm Jul 15, 2026
5941192
fix(workflows): don't thread session ids across provider boundaries i…
Wirasm Jul 15, 2026
d891049
chore: quick-win batch — six small validated fixes (#2119)
Wirasm Jul 15, 2026
51608d9
fix(providers): throw on Claude API errors surfaced as text instead o…
Wirasm Jul 15, 2026
92b9bba
fix(workflows): interactive-loop completion — signal_completes, final…
Wirasm Jul 15, 2026
3962cfa
fix(providers/pi): per-node extension posture — plannotator planning …
Wirasm Jul 16, 2026
69b7493
fix(workflows): wait for live background Agent tasks before completin…
Wirasm Jul 16, 2026
8af7f23
docs: workflow language constitution — YAML coordinates, code compute…
Wirasm Jul 16, 2026
622719a
fix(workflows): loop-node background-task audit trail + live mid-stre…
Wirasm Jul 16, 2026
81de93b
fix(smoke): repoint codex smoke workflows from gpt-5.2 to gpt-5.6-lun…
Wirasm Jul 16, 2026
52626b6
fix(server): allow abandoning failed runs via HTTP API (#2140)
Wirasm Jul 16, 2026
d024d02
fix(cli): resolve covering codebase on resume instead of re-registeri…
Wirasm Jul 16, 2026
113fd39
fix(workflows): fail loudly on unknown-node $id.output.field refs (#2…
Wirasm Jul 16, 2026
5ee754c
feat(workflows/pi): portable per-node extension posture in workflow Y…
Wirasm Jul 16, 2026
2d7bf58
feat(workflows): include: load-time workflow inlining primitive (#212…
Wirasm Jul 16, 2026
eb34c77
feat(isolation): container isolation Phase A — kind-routed backend se…
Wirasm Jul 16, 2026
bd84a51
fix(workflows): close approve/reject double-resolution TOCTOU with a …
Wirasm Jul 16, 2026
646d526
fix(web): resubscribe during an abandoned in-flight console load runs…
Wirasm Jul 16, 2026
030263e
chore: sweep stale GPT model references to the 5.6 lineup (#2149)
Wirasm Jul 16, 2026
15a53c5
fix(paths): route no-remote repos' logs/artifacts under _local/<basen…
Wirasm Jul 16, 2026
1bc48cb
feat(cli): archon doctor — add Codex binary and OpenCode runtime chec…
Wirasm Jul 16, 2026
b143cbd
feat(isolation): container backend for folder projects (Phase B) (#2153)
Wirasm Jul 17, 2026
64a7c68
test(container): bundled e2e container smoke workflow + CI job (#2158)
Wirasm Jul 17, 2026
409eb0f
ci: make AI-credentialed e2e smoke tiers opt-in (#2161)
Wirasm Jul 17, 2026
f13811e
chore(providers): bump @openai/codex-sdk to 0.144.5 for gpt-5.6 suppo…
Wirasm Jul 17, 2026
899b582
feat(isolation): container pause/resume + approval-gated write-back (…
Wirasm Jul 17, 2026
ce9f909
chore(workflows): delete orphaned substituteVariables helper + fix fa…
Wirasm Jul 17, 2026
f54a625
fix(workflows): skip base-branch auto-detection on folder projects (#…
Wirasm Jul 17, 2026
e7234f0
fix(workflows): fail loudly on unknown-node $LOOP_PREV.<id>.output.fi…
Wirasm Jul 17, 2026
d24666d
fix(isolation): normalize isolation_environments.metadata at the stor…
Wirasm Jul 17, 2026
e3839e0
docs: correct stale engine claims in CLAUDE.md, docs-web, and the wor…
Wirasm Jul 17, 2026
bd09632
security(workflows): deliver user-controlled vars to script nodes via…
Wirasm Jul 17, 2026
b2d7f88
fix(providers): coalesce Pi text_delta chunks to stop fragmented outp…
Wirasm Jul 17, 2026
1e5466e
fix(providers): register Pi Bedrock backend so it loads in the compil…
Wirasm Jul 17, 2026
2292b78
dx(providers): generate provider capability matrix from capabilities.…
Wirasm Jul 17, 2026
4fc44fb
fix(workflows): align skill validation with execution resolver search…
FlyingBamboo Jul 20, 2026
9b0f4da
fix(workflows): classify session-limit/quota errors as FATAL (never r…
Wirasm Jul 20, 2026
bb63ed0
fix(providers): retry Claude 400 tool-use-concurrency errors as rate …
bigboy1122 Jul 20, 2026
d946f15
fix(web): stop model picker truncating model names in favor of the hi…
Wirasm Jul 20, 2026
7b9aaa0
fix(workflows): run archon-workflow-builder in the live checkout (#2183)
Wirasm Jul 20, 2026
28832b1
fix(console): show chat-dispatched run messages on the run detail pag…
Wirasm Jul 20, 2026
482dc8d
fix(server): resolve small tier for title generation at server entry …
Wirasm Jul 20, 2026
e89bd7f
fix(web): render console timestamps in the viewer's local timezone (#…
Wirasm Jul 20, 2026
4e8d5ea
fix(cli): stop workflow approve from marking paused runs failed on pr…
Wirasm Jul 20, 2026
2de2c03
fix(docker): eliminate slow recursive chown in image build and contai…
uinstinct Jul 20, 2026
1fac96b
fix(adapters): drop duplicate webhook deliveries at ingest (#1987)
truffle-dev Jul 20, 2026
be38e97
fix(core): respect worktree.enabled: false in dispatchBackgroundWorkf…
Wirasm Jul 20, 2026
5423698
docs(direction): deployment recipes live in docs, not maintained prof…
Wirasm Jul 20, 2026
e267e30
refactor(server): use parseOwnerRepo helper in artifact route for def…
shaun0927 Jul 20, 2026
dd59f43
security(cli): add build-time embedded hash for web-dist tarball inte…
shaun0927 Jul 20, 2026
5ee55c1
fix(marketplace): guard fetch-source against missing sourceUrl/sha (#…
gai095481 Jul 20, 2026
d5f659c
fix(server/workflows): resolve project workflows with .yml extension …
jasonjack-jay Jul 20, 2026
8e322fd
fix(web): URL-encode conversation IDs in PATCH/DELETE requests (#1657)
LLMsolution Jul 20, 2026
3342f4d
fix(core): classify Claude usage-limit errors as rate limits (#1761)
k4n4lm00n Jul 20, 2026
19ac1bc
fix(server): accept namespaced workflow names on HTTP launch and read…
truffle-dev Jul 20, 2026
6aa3794
chore(ci): bump docker/build-push-action to @v6 in publish.yml (#1632)
acton-golden Jul 20, 2026
c14982b
feat(workflows): add loop.command for loading loop prompts from files…
marc0der Jul 20, 2026
6fdb735
Release 0.6.0
Jul 20, 2026
59a694d
Merge main's docs-site marketplace commits back into dev pre-release
Jul 20, 2026
ec3336c
ci(e2e-container): reject the Phase C write-back gate so the smoke as…
Jul 20, 2026
aa40716
Merge main (Release 0.6.0 squash) back into dev
Jul 20, 2026
b339d00
chore: update Homebrew formula for v0.6.0
github-actions[bot] Jul 20, 2026
e056b4a
feat(workflows): workflow: runtime sub-run node (#2121 Phase 2 slice …
Wirasm Jul 21, 2026
a97e24e
feat(git): add forge detection (github/gitea/gitlab) from repo remote…
Wirasm Jul 21, 2026
43264e6
feat(discord): DISCORD_REQUIRE_MENTION to allow responding without @m…
Wirasm Jul 21, 2026
2f2a4e6
feat(workflows): per-node settingSources override for Claude nodes (#…
Wirasm Jul 21, 2026
c25779e
fix(web): add IME composition guard to console composer and approve i…
Wirasm Jul 21, 2026
d86c7e0
fix: add id tie-breaker to message queries so LIMIT windows are deter…
Wirasm Jul 21, 2026
d00f8f7
docs(capabilities): surface per-cell caveats in the generated capabil…
Wirasm Jul 21, 2026
de438fd
fix(core): harden clone against credential prompts and token leaks (#…
Wirasm Jul 21, 2026
ea87ddd
feat(marketplace): add archon-resolve-mr-conflicts (#1687)
lraphael Jul 21, 2026
9dddba4
fix(workflows): pin gh pr create to the origin repo in bundled defaul…
Wirasm Jul 21, 2026
ab0daae
feat(workflows): evidence gate — refuse terminal completed without ev…
Wirasm Jul 21, 2026
0c1062e
feat(docker): opt-in root fallback (ARCHON_ALLOW_ROOT_FALLBACK) for m…
Wirasm Jul 21, 2026
13b1793
fix(web,paths,server): WSL2-aware Open in IDE link (#1504)
blankse Jul 21, 2026
fb54f84
refactor(git,paths): unify owner/repo identity resolution on @archon/…
Wirasm Jul 21, 2026
2ccd9c5
feat(git): support configurable git remote name (#2234)
Wirasm Jul 21, 2026
6814764
fix(orchestrator): parse split workflow invocations (#1542)
guanghuang Jul 21, 2026
b14b3b1
fix(git): reject SSH-URL-shaped codebase names in worktree path resol…
blankse Jul 21, 2026
296fb3e
docs(book): fix nested codeblock fence in first-command step 3 (#1936)
uinstinct Jul 21, 2026
8708c30
fix(bundled-defaults): refuse to embed untracked files in defaults/ (…
Wirasm Jul 21, 2026
eb98751
Fix workflow run IDE path (#2003)
anhle128 Jul 21, 2026
9862325
fix(providers/pi): default system prompt for Anthropic subscription-O…
Wirasm Jul 21, 2026
c67e624
fix(server): bound tool_result payloads at SSE-emit and hydration bou…
Wirasm Jul 21, 2026
fcb6044
fix(core): resolve configured default assistant for new conversations…
Wirasm Jul 21, 2026
2a9dd20
feat(web): Studio Builder PR-3 — connected mode (#2051)
seanrobertwright Jul 21, 2026
99ee83e
docs: improve llms.txt coverage to 95%+ (#2067)
joseph-fajen Jul 21, 2026
ace0a41
docs: add llms.txt link directive to HTML pages (#2066)
joseph-fajen Jul 21, 2026
8c7882e
fix(cli): drop Bun SFE virtual argv[1] from detached re-invoke (#2273)
bigboy1122 Jul 27, 2026
e0ec039
docs: clarify cloud Docker auth setup (#2259)
Wirasm Jul 27, 2026
8157176
fix(workflows): emit node_failed when AI prompt substitution fails (#…
buun-dev Jul 27, 2026
c73cdd2
docs: clarify that the workflow constitution governs the YAML surface…
Wirasm Jul 29, 2026
a9da37f
test(adapters,core): stop unit tests reaching the live network and a …
Wirasm Jul 29, 2026
a70bd56
fix(docs-web): repair the docs build and guard it against silent rot …
Wirasm Jul 29, 2026
f9dd8c8
test(adapters,core): close the module boundary so adapter tests stop …
Wirasm Jul 29, 2026
0872317
Fix Rosetta architecture detection in macOS installer (#2330)
Wirasm Jul 30, 2026
2e21c63
fix(workflows): complete tools on result boundary (#2336)
Wirasm Jul 30, 2026
eeaf1ca
feat(core): record the database schema vintage and state the additive…
Wirasm Jul 30, 2026
161d418
fix(install): repair the curl|bash entry point and sync the PowerShel…
Wirasm Jul 30, 2026
dd9294d
fix(providers): record resolved model metadata (#2337)
Wirasm Jul 30, 2026
1c85873
Run installer tests in CI to prevent mirror drift (#2335)
Wirasm Jul 30, 2026
3044829
test(cli): build the web-dist tarball fixture in-process instead of s…
Wirasm Jul 30, 2026
0392dd2
Clear stale workflow errors on resume (#2348)
Wirasm Jul 31, 2026
513d22c
Fix SQLite/Postgres schema column parity checks (#2346)
Wirasm Jul 31, 2026
9251dac
fix: Persist per-node workflow token usage (#2347)
Wirasm Jul 31, 2026
ab1d7d4
ci: attach provenance and SBOM attestations to the published image (#…
kobihikri Jul 31, 2026
c764946
docs(direction): add §distribution-channels clause (#2285)
Wirasm Jul 31, 2026
ecb6317
fix(core): prefer a paused run over a newer failed one on chat resume…
133Felix Jul 31, 2026
94d5c2e
Fix cumulative tokens for resumed workflow runs (#2353)
Wirasm Aug 1, 2026
9abc9b7
fix(commands): tell archon-fix-issue that a dirty run worktree is exp…
Wirasm Aug 1, 2026
eb5d69d
Release 0.7.0
Wirasm Aug 1, 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
20 changes: 15 additions & 5 deletions .archon/commands/defaults/archon-create-pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,16 @@ Extract the issue number from the current branch name or context (e.g., `fix/iss
```bash
BRANCH=$(git branch --show-current)
ISSUE_NUM=$(echo "$BRANCH" | grep -oE '[0-9]+' | tail -1)
# Pin all gh pr commands to the origin remote — in a fork clone, gh otherwise
# targets the upstream parent repo. Re-run this line in every new shell.
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
```

If an issue number was found, search for open PRs that already reference it:

```bash
gh pr list \
--repo "$ORIGIN_REPO" \
--search "Fixes #${ISSUE_NUM} OR Closes #${ISSUE_NUM}" \
--state open \
--json number,url,headRefName
Expand Down Expand Up @@ -156,7 +160,11 @@ cat > $ARTIFACTS_DIR/pr-body.md <<'EOF'
[body from above]
EOF

# Fork-safe target: without --repo, gh opens the PR against the upstream parent
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')

gh pr create \
--repo "$ORIGIN_REPO" \
--title "[title]" \
--body-file $ARTIFACTS_DIR/pr-body.md \
--base $BASE_BRANCH
Expand All @@ -165,17 +173,18 @@ gh pr create \
Or if the content is simple:

```bash
gh pr create --fill --base $BASE_BRANCH
gh pr create --repo "$ORIGIN_REPO" --fill --base $BASE_BRANCH
```

After creating the PR, capture its identifiers for downstream steps. Only write artifacts if PR creation succeeded — never persist stale data from a pre-existing PR:

```bash
# After creating the PR, capture and persist the PR number for downstream steps
# IMPORTANT: Only write artifacts after confirmed successful PR creation
if gh pr view --json number,url -q '.number,.url' > /dev/null 2>&1; then
PR_NUMBER=$(gh pr view --json number -q '.number')
PR_URL=$(gh pr view --json url -q '.url')
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
if gh pr view --repo "$ORIGIN_REPO" --json number,url -q '.number,.url' > /dev/null 2>&1; then
PR_NUMBER=$(gh pr view --repo "$ORIGIN_REPO" --json number -q '.number')
PR_URL=$(gh pr view --repo "$ORIGIN_REPO" --json url -q '.url')
echo "$PR_NUMBER" > "$ARTIFACTS_DIR/.pr-number"
echo "$PR_URL" > "$ARTIFACTS_DIR/.pr-url"
else
Expand Down Expand Up @@ -219,7 +228,8 @@ Nothing to create a PR for.
### Branch Already Has PR

```bash
gh pr view --web
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
gh pr view --repo "$ORIGIN_REPO" --web
```

Opens the existing PR instead of creating a duplicate.
Expand Down
28 changes: 20 additions & 8 deletions .archon/commands/defaults/archon-finalize-pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,10 @@ Extract:
### 1.3 Check for Existing PR

```bash
gh pr list --head $(git branch --show-current) --json number,url,state
# Pin all gh pr commands to the origin remote — in a fork clone, gh otherwise
# targets the upstream parent repo. Re-run this line in every new shell.
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
gh pr list --repo "$ORIGIN_REPO" --head $(git branch --show-current) --json number,url,state
```

**If PR already exists**: Will update it instead of creating new one.
Expand Down Expand Up @@ -190,7 +193,11 @@ cat > $ARTIFACTS_DIR/pr-body.md <<'EOF'
{prepared-body}
EOF

# Fork-safe target: without --repo, gh opens the PR against the upstream parent
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')

gh pr create \
--repo "$ORIGIN_REPO" \
--title "{plan-title}" \
--body-file $ARTIFACTS_DIR/pr-body.md \
--base $BASE_BRANCH
Expand All @@ -199,30 +206,34 @@ gh pr create \
**If PR already exists**, update it:

```bash
gh pr edit {pr-number} --body-file $ARTIFACTS_DIR/pr-body.md
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
gh pr edit {pr-number} --repo "$ORIGIN_REPO" --body-file $ARTIFACTS_DIR/pr-body.md
```

### 3.3 Ensure Ready for Review

If PR was created as draft, mark ready:

```bash
gh pr ready {pr-number} 2>/dev/null || true
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
gh pr ready {pr-number} --repo "$ORIGIN_REPO" 2>/dev/null || true
```

### 3.4 Capture PR Info

```bash
gh pr view --json number,url,headRefName,baseRefName
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
gh pr view --repo "$ORIGIN_REPO" --json number,url,headRefName,baseRefName
```

### 3.5 Write PR Number Registry

Write PR number for downstream review steps:

```bash
PR_NUMBER=$(gh pr view --json number -q '.number')
PR_URL=$(gh pr view --json url -q '.url')
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
PR_NUMBER=$(gh pr view --repo "$ORIGIN_REPO" --json number -q '.number')
PR_URL=$(gh pr view --repo "$ORIGIN_REPO" --json url -q '.url')
echo "$PR_NUMBER" > $ARTIFACTS_DIR/.pr-number
echo "$PR_URL" > $ARTIFACTS_DIR/.pr-url
```
Expand Down Expand Up @@ -387,8 +398,9 @@ Check:
```
❌ PR not found: #{number}

The draft PR may have been closed or deleted. Create a new one:
`gh pr create --title "..." --body "..."`
The draft PR may have been closed or deleted. Create a new one
(re-run the `ORIGIN_REPO=...` resolve line first — it does not persist across shells):
`gh pr create --repo "$ORIGIN_REPO" --title "..." --body "..."`
```

### Template Parsing
Expand Down
44 changes: 44 additions & 0 deletions .archon/commands/defaults/archon-fix-issue.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,50 @@ argument-hint: <issue-number|artifact-path>

---

## READ FIRST: you are almost certainly in a run worktree

When this command runs inside an Archon workflow, the isolation system has **already**
created a git worktree on the correct branch. In that case:

- **Use the current branch as-is.** Do not switch branches, do not create one, do not
fetch-and-reset. The branch you are on is the branch this work belongs to.
- **A dirty working tree is expected and is NOT a reason to stop.** Archon copies the
operator's `.archon/` directory — workflows, commands, scripts — into every run
worktree, deliberately, so a workflow can be iterated on before it is committed.
Those files are present *before* you start and are not your changes.
- **Modifications under `.archon/` are never yours to commit, stash, or remove.**
Leave them exactly as they are and commit only the files your implementation touched.
Before every commit, confirm with `git diff --cached --name-only` that nothing under
`.archon/` is staged.
- **Dirty paths outside `.archon/` are also not a reason to stop, and also not yours.**
They are either your own work from an earlier attempt at this run (resume reuses the
worktree) or something the operator left behind. Either way: leave them alone, do not
fold them into your commit, and stage your own files by name rather than with
`git add -A`.

The clean-working-tree requirement in the decision tree below applies **only** to the
`ON $BASE_BRANCH` case — manual CLI use outside a worktree, where a stray edit really
could be lost. It does not apply in a worktree. If a skill or sub-workflow you load
imposes a stricter git precondition, **this instruction overrides it.**

Classify the checkout before deciding anything. `git worktree list` does **not** answer
this — it lists every worktree including the primary checkout, so it looks identical
from both. Compare the two git dirs instead:

```bash
if [ "$(git rev-parse --git-dir)" != "$(git rev-parse --git-common-dir)" ]; then
echo "linked worktree — the rules above apply"
else
echo "primary checkout — follow the decision tree below as written"
fi
```

Stopping a run over pre-existing `.archon/` edits wastes the entire pipeline; it has
happened, three times. Applying the worktree exemption in the *primary* checkout is the
opposite error and can lose someone's uncommitted work. Classify first, then decide.

---

## Your Mission

Execute the implementation plan from `/investigate-issue`:
Expand Down
12 changes: 8 additions & 4 deletions .archon/commands/defaults/archon-implement-issue.md
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ EOF

## Phase 8: PR - Create Pull Request

**Before creating a PR**, check if one already exists for this issue or branch using `gh pr list`. If a PR already exists, skip creation and use the existing one.
**Before creating a PR**, check if one already exists for this issue or branch using `gh pr list --repo "$ORIGIN_REPO"` (resolve `ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')` in the same shell — in a fork clone, gh otherwise targets the upstream parent). If a PR already exists, skip creation and use the existing one.

### 8.1 Push to Remote

Expand All @@ -374,16 +374,20 @@ Look for the project's PR template at `.github/pull_request_template.md`, `.gith
Write the prepared body to `$ARTIFACTS_DIR/pr-body.md`, then:

```bash
gh pr create --title "Fix: {title} (#{number})" \
# Fork-safe target: without --repo, gh opens the PR against the upstream parent
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')

gh pr create --repo "$ORIGIN_REPO" --title "Fix: {title} (#{number})" \
--body-file $ARTIFACTS_DIR/pr-body.md \
--base $BASE_BRANCH
```

### 8.3 Get PR Number

```bash
PR_URL=$(gh pr view --json url -q '.url')
PR_NUMBER=$(gh pr view --json number -q '.number')
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
PR_URL=$(gh pr view --repo "$ORIGIN_REPO" --json url -q '.url')
PR_NUMBER=$(gh pr view --repo "$ORIGIN_REPO" --json number -q '.number')
```

**PHASE_8_CHECKPOINT:**
Expand Down
6 changes: 4 additions & 2 deletions .archon/maintainer-standup/direction.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ This file is **committed and shared by all maintainers**. Edit deliberately —
- **Not a replacement for the AI coding agent itself.** Archon orchestrates Claude Code / Codex / Pi — it doesn't reimplement them.
- **Not opinionated about the dev environment.** No mandatory editor integrations, framework lock-in, or Docker requirement beyond what users opt into.
- **Not a deployment-infrastructure product.** Caddy is the single maintained reference reverse proxy (`--profile cloud`). Alternative proxies and infra recipes (Traefik, Nginx, k8s, ...) live in **docs** as community-maintained examples against the documented proxy contract (exposed port, health endpoint, `/internal/*` never proxied — see #2193), not as compose profiles Archon maintains: each maintained proxy config doubles a security-critical surface. Cite as `direction.md §deployment-recipes`.
- **Not a programming language.** The workflow YAML coordinates (gates, joins, retries, sessions, artifacts, reusable structure); `bash:`/`script:` nodes compute; prompts judge. PRs that add computation to the YAML surface conflict — see §workflow-language.
- **Not a package-manager distribution hub.** The maintained install channels are the curl/PowerShell installer, Homebrew, Docker, and the GitHub release binaries. Additional channels (Nix, AUR, Scoop, winget, apt, ...) are welcome as **community-maintained docs recipes**, or as packages upstream in the package manager's own registry (e.g. nixpkgs) where they get that ecosystem's CI and hash-update bots for free — not as in-repo manifests Archon version-bumps. Every hash-pinned channel adds a per-release chore and a surface that rots silently between releases; Homebrew already costs one. Cite as `direction.md §distribution-channels`.
- **Not a programming language.** The workflow YAML coordinates (gates, joins, retries, sessions, artifacts, reusable structure); computation lives inside nodes, not in the YAML. PRs that add computation to the YAML surface conflict — see §workflow-language. This is about the *language*, not about which node type an author picks: a `prompt:` node that computes is a legitimate choice — see §prompt-computation.

## Community providers

Expand Down Expand Up @@ -55,7 +56,8 @@ Triage clauses — cite as `direction.md §<clause>`:

- **§when-grammar** — `when:` never grows incrementally (no parentheses, functions, string ops, arithmetic). Standing answer: compute the decision in a `script:` node, gate on `$node.output.field`. Only sanctioned growth is adopting CEL wholesale in one versioned change — never home-grown operators.
- **§load-time-composition** — composition/reuse features must fully resolve at load time (the executor runs a flat static DAG). Parameterization may carry **data**, never **structure**; dynamic/templated targets are declined. Runtime-resolved structure is a sub-run — a governance object with its own run record (#2121 Phase 2, co-designed with #1764) — not a language feature.
- **§workaround-triage** — repeated YAML structure or deterministic logic embedded in prompts is a signal, triaged into three buckets: missing *coordination* primitive → design it constitutionally; missing *pattern* → document the pattern (e.g. polyglot validate = detect-AI → execute-bash → fix-AI); disguised *computation* → point at script nodes. The workaround corpus decides language shape; the feature-request queue doesn't.
- **§workaround-triage** — repeated YAML structure or *recurring* deterministic logic embedded in prompts is a signal, triaged into three buckets: missing *coordination* primitive → design it constitutionally; missing *pattern* → document the pattern (e.g. polyglot validate = detect-AI → execute-bash → fix-AI); computation that has leaked *into the YAML surface* → point at script nodes. This bucket never produces a rewrite-the-prompt verdict — see §prompt-computation. The workaround corpus decides language shape; the feature-request queue doesn't.
- **§prompt-computation** — the constitution governs the **YAML surface**, not what an agent does inside a node. A `prompt:` node performing computation is a legitimate authoring choice, and the right one when the author doesn't know the rule or expects it to change — forcing an uncertain rule into a script freezes a guess into code. Script vs prompt is ordinary engineering owned by the workflow author. **Never decline or rewrite a prompt on constitutional grounds.** The only sanctioned argument for making a specific check deterministic is *reliability*: no judgment content (one correct answer) plus irreversible external consequences if it doesn't fire — argue that on its merits, not by citing the constitution.
- **§schema-width** — new provider capabilities default into provider config or tier/alias presets, not new node fields; a node field is earned only by genuine per-node variance. Capability mismatches warn loudly, never silently no-op (`capabilities.ts` is the source of truth; docs derive from it — #2116).
- **§implicit-behavior** — a new implicit behavior (auto-anything) must be documented in the canonical behavior list, individually defeatable, and fail-safe — convenience alone never qualifies.

Expand Down
18 changes: 11 additions & 7 deletions .archon/workflows/defaults/archon-architect.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -311,12 +311,14 @@ nodes:

1. Stage all changes and create a single commit (or verify existing commits)
2. Push the branch: `git push -u origin HEAD`
3. Check if a PR already exists: `gh pr list --head $(git branch --show-current)`
4. Create the PR targeting `$BASE_BRANCH` as the base branch:
`gh pr create --base $BASE_BRANCH --title "..." --body "..."`
3. Resolve the origin repo — in a fork clone, gh otherwise targets the upstream parent:
`ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')`
4. Check if a PR already exists: `gh pr list --repo "$ORIGIN_REPO" --head $(git branch --show-current)`
5. Create the PR targeting `$BASE_BRANCH` as the base branch:
`gh pr create --repo "$ORIGIN_REPO" --base $BASE_BRANCH --title "..." --body "..."`
- Title: concise description of what was simplified (under 70 chars)
- Body: use the format below
5. Save the PR URL to `$ARTIFACTS_DIR/.pr-url`
6. Save the PR URL to `$ARTIFACTS_DIR/.pr-url`

## PR Body Format

Expand Down Expand Up @@ -362,17 +364,19 @@ nodes:
- id: verify-pr-base
bash: |
set -euo pipefail
# Pin to the origin remote — in a fork clone, gh otherwise queries the upstream parent
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
HEAD_BRANCH=$(git rev-parse --abbrev-ref HEAD)
PR_NUMBER=$(gh pr list --head "$HEAD_BRANCH" --state open --json number -q '.[0].number')
PR_NUMBER=$(gh pr list --repo "$ORIGIN_REPO" --head "$HEAD_BRANCH" --state open --json number -q '.[0].number')
if [ -z "$PR_NUMBER" ]; then
echo "No open PR found for branch $HEAD_BRANCH" >&2
exit 1
fi
EXPECTED="$BASE_BRANCH"
ACTUAL=$(gh pr view "$PR_NUMBER" --json baseRefName -q '.baseRefName')
ACTUAL=$(gh pr view "$PR_NUMBER" --repo "$ORIGIN_REPO" --json baseRefName -q '.baseRefName')
if [ "$ACTUAL" != "$EXPECTED" ]; then
echo "Base mismatch on PR #$PR_NUMBER: expected=$EXPECTED actual=$ACTUAL — re-targeting" >&2
gh pr edit "$PR_NUMBER" --base "$EXPECTED"
gh pr edit "$PR_NUMBER" --repo "$ORIGIN_REPO" --base "$EXPECTED"
else
echo "PR base verified: $EXPECTED"
fi
Expand Down
8 changes: 5 additions & 3 deletions .archon/workflows/defaults/archon-feature-development.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,19 @@ nodes:
- id: verify-pr-base
bash: |
set -euo pipefail
# Pin to the origin remote — in a fork clone, gh otherwise queries the upstream parent
ORIGIN_REPO=$(git remote get-url origin | sed -E 's#^.*[:/]([^/]+/[^/]+)$#\1#; s#\.git$##')
HEAD_BRANCH=$(git rev-parse --abbrev-ref HEAD)
PR_NUMBER=$(gh pr list --head "$HEAD_BRANCH" --state open --json number -q '.[0].number')
PR_NUMBER=$(gh pr list --repo "$ORIGIN_REPO" --head "$HEAD_BRANCH" --state open --json number -q '.[0].number')
if [ -z "$PR_NUMBER" ]; then
echo "No open PR found for branch $HEAD_BRANCH" >&2
exit 1
fi
EXPECTED="$BASE_BRANCH"
ACTUAL=$(gh pr view "$PR_NUMBER" --json baseRefName -q '.baseRefName')
ACTUAL=$(gh pr view "$PR_NUMBER" --repo "$ORIGIN_REPO" --json baseRefName -q '.baseRefName')
if [ "$ACTUAL" != "$EXPECTED" ]; then
echo "Base mismatch on PR #$PR_NUMBER: expected=$EXPECTED actual=$ACTUAL — re-targeting" >&2
gh pr edit "$PR_NUMBER" --base "$EXPECTED"
gh pr edit "$PR_NUMBER" --repo "$ORIGIN_REPO" --base "$EXPECTED"
else
echo "PR base verified: $EXPECTED"
fi
Expand Down
Loading
Loading