v0.11.0
coleam00/Archonv0.11.0Sep 25, 2026by Wirasm
Upgrading?
AI Summary
This release introduces significant workflow enhancements including direct installation of packs from GitHub, event-triggered workflows for schedules and GitHub events, and forge plugins for managing pull requests. It also updates provider SDKs to their latest releases and enforces strict validation on environment variables.
Key Highlights
- Workflow packs can now be installed directly from GitHub
- Workflows can start from native macOS schedules and GitHub webhooks
- Forge plugins allow Archon to manage Pull Requests and read commit statuses
- Provider SDKs updated to latest releases (Claude, Codex, Pi)
- Strict validation prevents `.archon/.env` from setting system environment variables
Breaking Changes
- .archon/.env` can no longer set `ARCHON_HOME`, `HOME`, `USERPROFILE`, `ARCHON_DOCKER`, `WORKSPACE_PATH` or `PATH`
- `assistants.<provider>` config validation now fails on invalid keys like `modelReasoningEffort: extreme`
- `thinking:` is removed; use `effort:` instead
- `abandon` and `cancel` now mean different things (abandon stops, cancel discards)
- `none_failed_min_one_success` now blocks dependencies skipped due to upstream failures
New Features
- `archon plugin install` for GitHub workflow packs
- Event-triggered workflows via `archon trigger fire`
- Forge plugins for PR checks and management
- `archon workflow logs` with follow option
- Script/Bash nodes support `on_timeout: skip`
Full Release Notes
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/.env` can no longer set `ARCHON_HOME`, `HOME`, `USERPROFILE`, `ARCHON_DOCKER`, `WORKSPACE_PATH` or `PATH`. 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`, detached `approve`/`resume` and 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 as `modelReasoningEffort: extreme`, a misspelled key, or a `settingSources` entry other than `project` or `user`, stops the load with a message naming the file, provider, key and accepted values. `archon doctor` reports it as a failed **Config files** check, and the settings API answers `400` naming the refused key. A settings change that fixes an invalid value already in `~/.archon/config.yaml` is still saved. Two OpenCode keys are now refused: `assistants.opencode.agent`, which nothing read, and `assistants.opencode.baseUrl`, which every OpenCode run already rejected. (#2582, #3461)
- `none_failed_min_one_success` now 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 and `on_timeout: skip` skips still count as admissible. (#3156, #3249)
- `thinking:` is removed. `effort:` is the only reasoning-depth setting in workflows, tiers, aliases and config, and any `thinking:` fails validation with a message pointing to `effort:`. The effort ladder gains a `persistent` rung. (#3094)
- Abandon and cancel now mean different things. A `failed` run is stopped and can be resumed; a `cancelled` run is discarded. `archon workflow abandon`, chat `/workflow abandon`, the Slack cancel button, the `manage_run` cancel action and `POST /api/workflows/runs/{id}/abandon` now stop a reachable detached owner before recording the run `cancelled`, 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 (HTTP `409`). 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.field` or `$INPUTS.<name>`, now fails the node with an actionable error instead of comparing JSON text and quietly skipping. (#2995, #3037)
- A plain `loop.until` or `loop_group.until` signal 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 own `output_format`. The child's `returns:` 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`, `remove` and `list` manage installed packs, and `archon plugin copy <id>` makes an editable copy under `.archon/workflows/`. (#2767, #3485)
- Installed packs run from the workflow catalog as `owner/pack:entrypoint` from 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, so `update` or `remove` affects 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 with `ARCHON_SDLC_FORGE=forge` also 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 `skip` or FIFO `queue` when a run already holds it, and queued work survives restarts. The server hosts triggers when `ARCHON_TRIGGER_HOST` is set; the CLI adds `archon trigger fire`, `drain` and `whoami`. 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>: N` in `~/.archon/config.yaml` caps simultaneous attempts per provider across every process sharing the database. There are no default caps; `archon ai capacity release` frees a slot held by an owner on another host. (#3460)
- `archon workflow logs <run-id> [--follow]` prints or follows a run's transcript, and `workflow get` shows its path. The transcript now marks resumes with a `workflow_resume` row and records every gate approve, reject or response as a `gate_decision` row. (#3096, #3482)
- An interrupted run records why it stopped. After Ctrl-C, `workflow get` shows `Stopped: interrupted by the operator (SIGINT)` and the console labels the run `Interrupted`; it stays resumable. (#3502)
- Runs record the checkout they started from (`checkout_baseline` in `workflow get` and 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 get` and the API can read even when reporting nodes never ran. (#3082, #3110, #3254)
- A `bash:` or `script:` node can declare `output_format` and certify its own JSON result, and a result may point at an artifact file with `{ "type": "archon_artifact", "run_id", "path" }`. An `output_format` schema that does not compile is a load error. (#3148, #3158)
- `bash:` and `script:` nodes accept `on_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_lost` when a run's owning process disappears. (#3115, #3172, #3175)
- Packaged Bun and Python scripts can import pack-local `.shared` modules, in source checkouts, global workflows and binary installs. (#3252)
- Script and bash nodes receive `$TYPED_ARTIFACTS_FILE`, a listing of typed artifacts grouped by `output_type` with read errors reported, and `ADOPTED_RUN_DIR` for adopted runs. (#3085, #3418)
- More workflow problems are caught before a run spends money: `output_format` schemas Codex would reject for missing `required` keys, unbound `INPUTS_*` reads in script and bash nodes, and single-quoted `$node.output` references 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> --help` and `archon help <command>` print help for that command only. (#3118)
- Run lists in the CLI, API, console and `manage_run` show the nodes currently running. (#3116)
- Delivery pack: `archon-validate` can compare a change, its base and the composed tree, and report a blocking `interaction` when only the combination fails. Triage judges whether an item is a usable contract and applies area labels when launched with `publish`. Deliver repairs an existing pull request when launched on its branch. Implement reads the repository's `engineering.md` when 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.txt` captures the listing and nothing else. Every command except `archon serve` logs at `warn` by default; pass `--verbose` or set `LOG_LEVEL=debug` for more. `archon serve` still logs at `info` on stdout. (#3444, #3445)
- Workflow definition problems (deprecated or unknown keys, ignored fields, files that fail to load) are no longer logged at `warn` on every discovery. They appear in `archon validate workflows`, `archon workflow list`, the `workflow run` preamble and `/api/workflows`, and are still logged at `debug`. (#3406, #3444)
- `archon workflow status` shows active runs for the current project; pass `--all` for the whole install. `archon workflow list` shows compact descriptions; `workflow list <name> --full` shows 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 doctor` fails on retired or stale Archon skill folders, reports an expired or unreadable Pi credential instead of passing, and labels stored provider credentials `connected (not validated)`. (#3182, #3426, #3500)
- `archon setup` recommends 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 --json` lists only a run's reports in `artifactFiles`, with engine bookkeeping counted in `artifactFilesOmitted`. (#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. (12875f1d2)
- On Windows, stopping a run's owner waits until its whole process tree has exited, and `archon serve` extracts the web UI from any shell. (#3280, #3487)
- The Docker container no longer crash-loops on start when `~/.gitconfig` holds several `credential.https://github.com.helper` values, as `gh auth login` inside the container leaves behind. With `GH_TOKEN` set, 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-project` fix, 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)
- `--supersedes` accepts short run-id prefixes and works on runs that failed before creating an output root. `--adopt` keeps an explicitly chosen workflow source and accepts runs whose isolation environment was created mid-run. Persisted output roots are always resolved inside `ARCHON_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_group` forwards 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/workflows` run 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.output` references 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_run` on Vertex; Pi's model-not-found error names `pi 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 --verbose` are 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 `reset` in 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-ship` ends 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-stabilize` workflow. (#3066)
## Installation
### Quick Install (Recommended)
**macOS / Linux**
```bash
curl -fsSL https://archon.diy/install | bash
```
**Windows (PowerShell)**
```powershell
irm https://archon.diy/install.ps1 | iex
```
**Homebrew (macOS / Linux)**
```bash
brew install coleam00/archon/archon
```
**Docker**
```bash
docker run --rm -v "$PWD:/workspace" ghcr.io/coleam00/archon:latest workflow list
```
### Manual Installation
**macOS (Apple Silicon)**
```bash
curl -fsSL https://github.com/coleam00/Archon/releases/latest/download/archon-darwin-arm64 -o /usr/local/bin/archon
chmod +x /usr/local/bin/archon
```
**macOS (Intel)**
```bash
curl -fsSL https://github.com/coleam00/Archon/releases/latest/download/archon-darwin-x64 -o /usr/local/bin/archon
chmod +x /usr/local/bin/archon
```
**Linux (x64)**
```bash
curl -fsSL https://github.com/coleam00/Archon/releases/latest/download/archon-linux-x64 -o /usr/local/bin/archon
chmod +x /usr/local/bin/archon
```
**Linux (ARM64)**
```bash
curl -fsSL https://github.com/coleam00/Archon/releases/latest/download/archon-linux-arm64 -o /usr/local/bin/archon
chmod +x /usr/local/bin/archon
```
**Windows (Manual)**
Download `archon-windows-x64.exe` from the assets below, rename to `archon.exe`, and add to your PATH.
### Verify installation
```bash
archon version
```
**Full Changelog**: https://github.com/coleam00/Archon/compare/v0.10.1...v0.11.0
Related Repositories
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Reverse engineer anything with agents, from app behavior down to native binaries.
The open source coding agent.
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.