Workflow packs install straight from GitHub, workflows can start from schedules and GitHub events, forge plugins carry the delivery pack's pull-request work, and all three provider SDKs move to their latest releases.
Breaking changes: read before upgrading
These change behaviour you may rely on. Check each one against your setup before you upgrade.
- A repository's
.archon/.envcan no longer setARCHON_HOME,HOME,USERPROFILE,ARCHON_DOCKER,WORKSPACE_PATHorPATH. Archon refuses to start and names the file and the key. Move the key to your shell environment or to~/.archon/.env. This keeps one Archon home per process tree, so detached runs,trigger execute, detachedapprove/resumeand CLI calls from workflow scripts read plugins from the same home as their parent. (#3501, #3506) assistants.<provider>in.archon/config.yaml(global and repo) is now validated when the config loads, by the provider's own parser. A value the provider would have silently dropped, such asmodelReasoningEffort: extreme, a misspelled key, or asettingSourcesentry other thanprojectoruser, stops the load with a message naming the file, provider, key and accepted values.archon doctorreports it as a failed Config files check, and the settings API answers400naming the refused key. A settings change that fixes an invalid value already in~/.archon/config.yamlis still saved. Two OpenCode keys are now refused:assistants.opencode.agent, which nothing read, andassistants.opencode.baseUrl, which every OpenCode run already rejected. (#2582, #3461)none_failed_min_one_successnow blocks a dependency that was skipped because something upstream failed, even when another dependency succeeded, including across chains, includes and resumed runs. A join that used to run after a failure now skips and keeps the original failed node as its skip cause. Condition skips andon_timeout: skipskips still count as admissible. (#3156, #3249)thinking:is removed.effort:is the only reasoning-depth setting in workflows, tiers, aliases and config, and anythinking:fails validation with a message pointing toeffort:. The effort ladder gains apersistentrung. (#3094)- Abandon and cancel now mean different things. A
failedrun is stopped and can be resumed; acancelledrun is discarded.archon workflow abandon, chat/workflow abandon, the Slack cancel button, themanage_runcancel action andPOST /api/workflows/runs/{id}/abandonnow stop a reachable detached owner before recording the runcancelled, so its worktree and resource slot are no longer released while the old process is still writing. If no owner answers, abandon still cancels and shows the recorded host, pid and last activity. If an owner answers but cannot be stopped, abandon fails and leaves the run unchanged (HTTP409). A run executing inside a live Archon server is refused; cancel it from that server. (#2325, #3446) - A
when:condition that compares an object or array, from$node.output.fieldor$INPUTS.<name>, now fails the node with an actionable error instead of comparing JSON text and quietly skipping. (#2995, #3037) - A plain
loop.untilorloop_group.untilsignal must now sit alone on the final line of the output. A mention inside prose, such as "not COMPLETE yet", no longer ends the loop. XML-wrapped signals work as before. (#2994) - A
workflow:node can no longer declare its ownoutput_format. The child'sreturns:node owns the result contract, and a caller-side schema is a load error naming that node. (#3148)
Most likely to affect you: if a repository's .archon/.env sets ARCHON_HOME, HOME, USERPROFILE, ARCHON_DOCKER, WORKSPACE_PATH or PATH, Archon will now refuse to start in that repository. Move the key to your shell environment or to ~/.archon/.env. If you use thinking: in workflows or config, switch to effort:.
What's new
Added
archon plugin install owner/repo[/path][@tag]installs a workflow pack from GitHub as one complete tree at one commit.archon plugin update,removeandlistmanage installed packs, andarchon plugin copy <id>makes an editable copy under.archon/workflows/. (#2767, #3485)- Installed packs run from the workflow catalog as
owner/pack:entrypointfrom the CLI, chat, the router, run management and the API. Only a pack's declared entrypoints can be dispatched. A run freezes the pack at the commit it started with, soupdateorremoveaffects only later runs. (#2835, #3486) - Forge plugins: Archon can talk to a code forge through an installable executable plugin. Each release publishes the GitHub plugin, installed with
archon plugin install coleam00/Archon/plugins/forge-github[@tag], including inside Docker. The delivery pack reads pull-request checks, including external commit statuses, through it, and withARCHON_SDLC_FORGE=forgealso creates, edits, comments on and flips pull requests through it, verifying each write by reading it back. (#3417, #3447, #3457) - Event-triggered workflows: trigger bindings start ordinary governed runs from native macOS schedules and verified GitHub issue, pull-request, label, check and status webhooks. A binding names a shared resource and chooses
skipor FIFOqueuewhen a run already holds it, and queued work survives restarts. The server hosts triggers whenARCHON_TRIGGER_HOSTis set; the CLI addsarchon trigger fire,drainandwhoami. See the workflow triggers guide. (#3415) - Provider SDKs updated to latest: Claude Agent SDK 0.3.282, Codex SDK 0.157.0, Pi 0.87.1. Claude cost stays per query after a resume or fork, and Pi usage now includes cache-warming and compaction calls. (#3076, #3504)
concurrency.providers.<provider-id>: Nin~/.archon/config.yamlcaps simultaneous attempts per provider across every process sharing the database. There are no default caps;archon ai capacity releasefrees a slot held by an owner on another host. (#3460)archon workflow logs <run-id> [--follow]prints or follows a run's transcript, andworkflow getshows its path. The transcript now marks resumes with aworkflow_resumerow and records every gate approve, reject or response as agate_decisionrow. (#3096, #3482)- An interrupted run records why it stopped. After Ctrl-C,
workflow getshowsStopped: interrupted by the operator (SIGINT)and the console labels the runInterrupted; it stays resumable. (#3502) - Runs record the checkout they started from (
checkout_baselineinworkflow getand the API), and every node attempt records its starting checkout. (#3443, #3463) - A workflow's authored outcome is shown beside its execution status in the CLI, console, chat, Slack and dry runs. Every terminal run keeps a structured record (status, outcome, node states, skip causes, artifact inventory) that
workflow getand the API can read even when reporting nodes never ran. (#3082, #3110, #3254) - A
bash:orscript:node can declareoutput_formatand certify its own JSON result, and a result may point at an artifact file with{ "type": "archon_artifact", "run_id", "path" }. Anoutput_formatschema that does not compile is a load error. (#3148, #3158) bash:andscript:nodes accepton_timeout: skip, so optional work can time out without failing the run. (#3174)- Workflows can declare an action-required durable wait. Delivery runs pause on inherited or environment CI failures and resume after an operator acts, and a concluded GitHub check wakes the waiting run right away. Waits report
owner_lostwhen a run's owning process disappears. (#3115, #3172, #3175) - Packaged Bun and Python scripts can import pack-local
.sharedmodules, in source checkouts, global workflows and binary installs. (#3252) - Script and bash nodes receive
$TYPED_ARTIFACTS_FILE, a listing of typed artifacts grouped byoutput_typewith read errors reported, andADOPTED_RUN_DIRfor adopted runs. (#3085, #3418) - More workflow problems are caught before a run spends money:
output_formatschemas Codex would reject for missingrequiredkeys, unboundINPUTS_*reads in script and bash nodes, and single-quoted$node.outputreferences in shell. (#2970, #3084, #3310) - Provider capabilities declare cost reporting separately from spend-limit support, plus which token, stop-reason, turn-count and model metrics each provider reports. (#3398, #3412)
archon <command> --helpandarchon help <command>print help for that command only. (#3118)- Run lists in the CLI, API, console and
manage_runshow the nodes currently running. (#3116) - Delivery pack:
archon-validatecan compare a change, its base and the composed tree, and report a blockinginteractionwhen only the combination fails. Triage judges whether an item is a usable contract and applies area labels when launched withpublish. Deliver repairs an existing pull request when launched on its branch. Implement reads the repository'sengineering.mdwhen one exists. A late red CI result routes back into one correction round instead of failing the run. (#3059, #3071, #3220, #3224, #3413)
Changed
- CLI commands write logs to stderr, so stdout carries only the command's output:
archon workflow list --full > out.txtcaptures the listing and nothing else. Every command exceptarchon servelogs atwarnby default; pass--verboseor setLOG_LEVEL=debugfor more.archon servestill logs atinfoon stdout. (#3444, #3445) - Workflow definition problems (deprecated or unknown keys, ignored fields, files that fail to load) are no longer logged at
warnon every discovery. They appear inarchon validate workflows,archon workflow list, theworkflow runpreamble and/api/workflows, and are still logged atdebug. (#3406, #3444) archon workflow statusshows active runs for the current project; pass--allfor the whole install.archon workflow listshows compact descriptions;workflow list <name> --fullshows the whole one. (#3114, #3121)- Command suggestions are spelled for the surface showing them:
/archon-workflow …in Slack,archon workflow …in the CLI,/workflow …elsewhere. (#3489, #3503) archon doctorfails on retired or stale Archon skill folders, reports an expired or unreadable Pi credential instead of passing, and labels stored provider credentialsconnected (not validated). (#3182, #3426, #3500)archon setuprecommends a classic GitHub token, because fine-grained tokens cannot read check runs. (#3425)- A run's frozen workflow source now lives outside its artifacts directory and is re-verified before every read, and container runs mount the run's artifacts directory read-write. Source and binary builds ship the same bundled packs. (#3131, #3132, #3134, #3301)
workflow get --jsonlists only a run's reports inartifactFiles, with engine bookkeeping counted inartifactFilesOmitted. (#3454)- Run transcripts record idle-watchdog renewals once per burst instead of once per streamed chunk, cutting large transcripts by up to 95%. (#3088, #3456)
- Telemetry sends one startup event per process, one start and one final outcome per run whatever path ends it, the install channel, and the shape of custom workflows (never their names). Crashed chat turns are counted. Telemetry no longer delays CLI exit. (#3256, #3483, #3491, #3497)
- Delivery pack: validation runs the project's gate in a script for up to two hours and reports an interrupted gate as "didn't finish" rather than unexplained red. The review checks the change against the contract's acceptance list. Every reasoning node receives the operator's request. The pack's deterministic scripts are TypeScript. (#3030, #3090, #3296, #3465, #3470, #3511)
- Bun is 1.4.2 across development, CI and Docker images. (#3078, #3210)
Fixed
- On Windows, detached runs no longer flash a console window for every git and subprocess call. (12875f1)
- On Windows, stopping a run's owner waits until its whole process tree has exited, and
archon serveextracts the web UI from any shell. (#3280, #3487) - The Docker container no longer crash-loops on start when
~/.gitconfigholds severalcredential.https://github.com.helpervalues, asgh auth logininside the container leaves behind. WithGH_TOKENset, the entrypoint replaces them all with its own helper. (#3401) - Registering a local checkout, including automatic registration on
archon workflow run, no longer repoints a same-named project that Archon cloned into its managed workspace, which silently broke other hosts sharing the database. Registration fails with a conflict naming both paths and the/update-projectfix, and a refused registration leaves nothing behind on disk. (#3403, #3405, #3440, #3442) - Archon decides whether a path is in its managed workspace by comparing it with the configured workspaces root. On Windows no path was recognized, and lookalike paths such as
~/.archon/workspaces-old/...were treated as managed and could be hard-reset. (#3441, #3442) - A worktree whose setup fails (git identity, submodule init or configured file copies) is removed instead of being adopted as ready by a later run. Worktrees are created locked until setup finishes, and a run that finds a locked one refuses it and names the command that clears it. (#3448, #3453)
- Worktree cleanup recognizes squash-merged branches through PR state, judges merges against the remote base branch, and still judges a worktree whose local branch ref is gone. (#3002, #3038, #3476)
- Parallel launches no longer fail on git ref-lock races during workspace sync, repository sync and PR or fork-PR fetches, and concurrent fork-PR launches share one review worktree. (#3087, #3112, #3144, #3159, #3164)
- Resumed runs keep writing to their original conversation, keep the base branch and workflow source they started with across a gate, and show already-completed nodes as completed in Slack and the Web UI. (#3308, #3337, #3458)
--supersedesaccepts short run-id prefixes and works on runs that failed before creating an output root.--adoptkeeps an explicitly chosen workflow source and accepts runs whose isolation environment was created mid-run. Persisted output roots are always resolved insideARCHON_HOME. (#3047, #3070, #3113, #3122, #3221)- A detached or foreground CLI run resumes its own timed or event wait when the deadline passes, without
archon serve. A resume that cannot continue suggests the same-branch relaunch command. (#3165, #3316) - Loop nodes honor their provider, model, tool and timeout settings, and a
loop_groupforwards its model to body nodes. Loop groups in two-level includes run correctly, and sink warnings see include-composed sinks. (#3248, #3284, #3406, #3459) - Workflows in a symlinked scope root such as
~/.archon/workflowsrun instead of reporting "not found", and fixtures in a top-level workflow folder no longer load as broken workflows. (#3233, #3408) - The console builder flags
$node.outputreferences inside Markdown code spans, matching the loader. (#3345) - Providers: OpenCode nodes fail on an unresolved permission request instead of hanging; Pi records usage and cost for every model call, lets its own retries finish inside the node, and works with
manage_runon Vertex; Pi's model-not-found error namespi update --models; Copilot tool failures show their error message; Codex and Claude binary pins give actionable errors, and source installs honor Codex pins. (#3045, #3200, #3299, #3344, #3409, #3414, #3455) - Node durations in
workflow get --verboseare correct across daylight-saving changes. (#3343) - GitHub App auth keeps working through a transient outage of GitHub's installation-lookup endpoints. (#3435)
- Clone credentials for GitHub, GitLab, Gitea and Forgejo stay out of git arguments, persisted remotes, errors and logs. Credentials written to stderr by a successful node are redacted in chat as they are in the transcript. (#3067, #3120)
- The artifact preview API refuses symlinks that escape a run's artifacts directory. (#3163)
- Hashed web assets are served with an immutable cache policy, so a deploy is no longer hidden behind a stale page. (#3424)
- A worktree whose hashed server port is taken starts on the next free port instead of failing to bind. (#3177)
- A bare
resetin Slack works as/reset, and an empty rejection reason over REST records the default "Rejected". (#3181, #3300) - Delivery pack: a PR merged while its run is still delivering counts as delivered; a delivery that dies after opening its PR is never reported delivered; a failed gate or unreadable check state blocks the ready flip; resuming at the validation gate re-runs validation;
archon-shipends cleanly when the work was already delivered. (#3000, #3095, #3100, #3145, #3368, #3473)
Removed
- The legacy Web UI. The console is the only Web UI, and old URLs and run bookmarks redirect into it. (#3402)
- The experimental
archon-stabilizeworkflow. (#3066)
Installation
Quick Install (Recommended)
macOS / Linux
curl -fsSL https://archon.diy/install | bashWindows (PowerShell)
irm https://archon.diy/install.ps1 | iexHomebrew (macOS / Linux)
brew install coleam00/archon/archonDocker
docker run --rm -v "$PWD:/workspace" ghcr.io/coleam00/archon:latest workflow listManual Installation
macOS (Apple Silicon)
curl -fsSL https://github.com/coleam00/Archon/releases/latest/download/archon-darwin-arm64 -o /usr/local/bin/archon
chmod +x /usr/local/bin/archonmacOS (Intel)
curl -fsSL https://github.com/coleam00/Archon/releases/latest/download/archon-darwin-x64 -o /usr/local/bin/archon
chmod +x /usr/local/bin/archonLinux (x64)
curl -fsSL https://github.com/coleam00/Archon/releases/latest/download/archon-linux-x64 -o /usr/local/bin/archon
chmod +x /usr/local/bin/archonLinux (ARM64)
curl -fsSL https://github.com/coleam00/Archon/releases/latest/download/archon-linux-arm64 -o /usr/local/bin/archon
chmod +x /usr/local/bin/archonWindows (Manual)
Download archon-windows-x64.exe from the assets below, rename to archon.exe, and add to your PATH.
Verify installation
archon versionFull Changelog: v0.10.1...v0.11.0