Disclaimer, THIS SHOULD NOT BE USED YET
Highlights
AI-generated summary (model:
mistral-medium-latestvia Mistral). Commit-based changelog below.
The pieces now connect: background jobs, web search, memory, and an end-to-end loop
What you'll notice
- Budget ceilings, cost tracking, provider health, and model selection now enforce and report correctly in production
- The general loop executes work end-to-end: plan, execute, verify, integrate, evaluate
- The conversational console and Chief of Staff chat now ground answers in real organisation state with proper timeouts
- Approvals and reviews show readable, evidence-backed payloads with honest risk assessment
- Dashboard metrics and the organisation chart now reflect actual work and operator arrangement
- Security hardening and accessibility: signature verification, CVE triage, prose linting, and screen-reader support now work correctly
- Configuration and lockfiles now pin builds correctly, and the organisation model drops personalities
What's new
- Agents can start long-running background commands and collect their output on later turns
- Agents can search the live web through Brave, Tavily or Exa, and fetch pages as readable markdown
- A durable plan entity with a dedicated review workspace lets you inspect and approve decomposition before dispatch
- First-party source-control tools give agents governed access to repositories and pull requests
- Layered memory (organisation, agent, project) now reaches working sessions and persists across restarts
0.9.4 (2026-08-31)
Features
- add Mammouth provider with fail-loud live model discovery (#2550) (851d5c0)
- background shell commands (#2883) (685cb81)
- build/test/review completion oracle (on by default) (#2581) (a0ca3fa), closes #2576
- canonicalise hostnames to A-labels across both SSRF paths (#2825) (3d9240f)
- commit the contract as code before any unit builds on it (#2879) (3800175)
- extend a workstream's leaf just-in-time when it ran out of turn (#2884) (e8522e5)
- first-class durable Plan entity and Plan Review workspace (#2569) (75a9128)
- give every loop decision a single owner, from intake to the tail (b18ecdf)
- give release notes a tagline and make a failed generation visible (#2889) (b6c1428)
- measure whether gating every merge holds off aggregation collapse as recursion deepens (#2802) (938f482)
- native web search provider and MCP-catalog credential + sandbox hardening (#2597) (5c4268c)
- OpenHands as a selectable 4th inner ExecutionLoop (#2621) (5eb5504), closes #2614
- order the org chart by the operator arrangement and flow wide departments in a column (#2744) (d91360f)
- per-initiative operator-set autonomy mode (#2579) (0d8049a)
- persist the decomposition tree so recursive plans can execute (#2850) (13897eb)
- plan greenlit objectives via an owner-run agent session (#2573) (167e7f5)
- record the recursion-depth sweep and answer whether depth survives (#2848) (a5e0036), closes #2801
- require an explicit (provider, model) at every LLM dispatch (no auto-pick) (#2592) (5095a25)
- serviceability-aware model health, evidence-graded capability, and operator-declared failover (#2769) (db45295)
- two-surface approvals — holistic plan review and structural execution-time decisions (#2584) (2968d10), closes #2583
- wire the memory-consuming tail of the general loop (#2623) (55995c5), closes #2611
Bug Fixes
- a planning session continues past a rejection and books its spend (#2810) (5d1b779)
- bind vendor presets end to end and stop silent credential, index and keydown failures (#2670) (19054e6), closes #2669
- bump apko package pins to newer Wolfi series (#2901) (5384478), closes #2895
- CAS-guard the sprint backlog writes and give the lifecycle tail a level-triggered owner (#2838) (d66f5c6)
- cli: follow attestation bundle_url when GitHub returns a null inline bundle (#2586) (4dcaefb), closes #2585
- cli: retry transient GitHub failures on update-check and fail loud instead of warn-and-continue (#2602) (ab30f70)
- close the collapses round 8 of the general-loop dogfood surfaced (#2798) (f4f7a49)
- confine a rejected provider entry to that entry (#2778) (6ef5fee)
- converge plan repair, ground planning in the project workspace, and close dead-end states (#2800) (7895ef2)
- decide judge independence by model family, not by connection (#2806) (4e5ca0f)
- delete the sentence_transformer meeting embedder and make protocol config reach the protocol (#2751) (aca428c), closes #2738 #2739 #2740 #2741 #2729
- eighteen collapses from a live dogfood of the general loop (#2749) (4b332aa)
- enforce output style where the work is written, and end an initiative that ran out of road (#2799) (4b63ca6)
- give a sweep a stable scratch root so --resume can find its trees (#2808) (4723c7b), closes #2801
- give an agent's binding one owner for how its model is sampled (#2902) (39c373b)
- give every stalled general-loop decision exactly one owner (#2735) (b958671), closes #2728 #2612
- give Highlights generation room past a large digest (f984290)
- ground Chief of Staff answers in real org state (tasks, projects, approvals) (#2562) (99395df), closes #2558
- hold the pre-push gate inside its five-minute budget (#2635) (227f305), closes #2634
- judge delivery on the tree a run produced, not on what it declared (#2867) (9ebe5d5)
- judge provider health on recent calls, and make recovery cascade (#2767) (4b16375)
- let planning_strategy mark a substitution, and arm both decomposition ceilings (#2813) (732ea46)
- LLM timeout for Chief-of-Staff chat, direct approval-card reject, and a cancel affordance (#2582) (645a5c6)
- make the apko lockfiles pin what actually gets built (#2834) (30614b5), closes #2833
- make the docs search and footer usable with a screen reader (#2746) (ca4ef9f)
- make the general loop able to execute work on a stock deployment (#2724) (291072d)
- make the initiative tail reachable end to end (#2765) (6cdc42a)
- make the release-notes Highlights publish step actually run (#2892) (a12ec9e)
- make the vale prose gate fail on a finding (#2736) (fa08a17)
- measure the recursion sweep honestly, and stop offering the planner a judge (#2826) (9df56f7), closes #2824
- meeting config reaches the ceremony and the strategy (#2756) (3e31ccf)
- order the Highlights disclaimer above the tagline and give the model a real scratchpad for the bullet count (#2894) (2177b88)
- org chart geometry, an org panel that answers the question, and no identifiers on operator surfaces (#2790) (fc7de9f)
- pin foreground exec timeouts and add background-job stall nudge (#2885) (44b52ae)
- port embedding fine-tune stage 3 to SentenceTransformerTrainer (#2828) (8645e2d)
- publish the healthy fine-tune variant when its sibling cell is stopped (#2840) (82071a9), closes #2839
- record an attempt's frames before its review, and make the loop's parks, evidence and live state say what happened (#2786) (55cb552)
- record subsystem LLM spend and stop re-probing fresh connections (#2677) (deb396c)
- synthorg update leaves compose.yml and config.json desynced on interrupt, and the fallback patch path is broken for sandbox installs (#2900) (2896548), closes #2898
- wire budget legibility into the loop and size eval sessions honestly (#2893) (92ff584), closes #2887
- wire budget_enforcer into the production AgentEngine (#2899) (cc19381), closes #2891
- wire up dead audit-chain verification, chat-inbound logging, and cost-visibility gaps (#2897) (d9be9b0)
Performance
- fold each MMR selection into a running maximum instead of rescanning (#2877) (917d6ed)
- measure torch.compile on the local embedder and fix the tokenizers pin that blocked it (#2743) (508833f)
Refactoring
- delete the OpenHands loop, the credentialed-MCP gateway and the meeting task type (#2849) (9a42bc3)
- grade models by capability rather than by size (#2766) (f32b850), closes #2758
- remove the meeting, ceremony and conflict-resolution stack (#2830) (18eaee6)
- remove the personality surface (#2837) (9412671)
- retire the HR eval loop and training, give task quality one owner (#2832) (6ecd0d0)
- the two gate roles become roles an agent holds (#2770) (42dc6fe), closes #2764
Documentation
- design the build loop around a contract, mechanical gates and a finding channel (#2874) (eb07cbe)
- regenerate comparison page timestamp (#2580) (9e23459)
CI/CD
- harden image-publish SBOM steps against timeout cancellation (#2628) (e5fe299), closes #2627
- install melange via a retrying, checksum-verified local action (#2632) (a38bb28), closes #2631
- make every gate actually gate, build both arches natively, and name workflows by purpose (#2686) (5db11db)
- retry the syft install, emit the tag inventory before the SBOM, and fail signature verification closed (#2763) (b9dced6)
- retry-wrap uv install so a transient blip cannot fail the job (#2552) (3d34dfd)
- run web CodSpeed benchmarks under simulation instrument only (#2601) (9f4c3d7)
- update apko lockfiles (#2574) (34a370c)
- update apko lockfiles (#2609) (8533465)
- update apko lockfiles (#2665) (2d28275)
- update apko lockfiles (#2675) (909eadf)
- update apko lockfiles (#2709) (ab1d137)
- update apko lockfiles (#2752) (fc7f490)
- update apko lockfiles (#2784) (a01b088)
- update apko lockfiles (#2829) (92486db)
- update apko lockfiles (#2896) (9e706bc)
Maintenance
- Lock file maintenance (#2571) (ed2720b)
- Lock file maintenance (#2598) (d4404fc)
- Lock file maintenance (#2654) (0043b3a)
- Lock file maintenance (#2689) (83347fc)
- Lock file maintenance (#2737) (c22634f)
- Lock file maintenance (#2779) (36c7e73)
- Lock file maintenance (#2811) (6166904)
- Lock file maintenance (#2882) (d32d79a)
- put worktrees under one root and move skill scratch out of C:/tmp (#2878) (36baeb7)
- Update Infrastructure dependencies (#2566) (88d8e5f)
- Update Infrastructure dependencies (#2590) (ad74204)
- Update Infrastructure dependencies (#2640) (482d6a0)
- Update Infrastructure dependencies (#2678) (204e3d9)
- Update Infrastructure dependencies (#2725) (f213af7)
- Update Infrastructure dependencies (#2772) (0e2452f)
- Update Infrastructure dependencies (#2803) (4995c18)
- Update Python dependencies (#2567) (731d20c)
- Update Python dependencies (#2726) (e53023e)
- Update Web dependencies (#2568) (9b6b60f)
- Update Web dependencies (#2591) (02d2535)
- Update Web dependencies (#2680) (8391ddf)
- Update Web dependencies (#2773) (60cdbb2)
- Update Web dependencies (#2804) (9716d7c)
- Update Web dependencies (#2872) (bca0fe6)
CLI Installation
Linux / macOS:
curl -sSfL https://synthorg.io/get/install.sh | bashWindows (PowerShell):
irm https://synthorg.io/get/install.ps1 | iexPin to this release: set
SYNTHORG_VERSION=v0.9.4before running
(bash:export SYNTHORG_VERSION=v0.9.4· PowerShell:$env:SYNTHORG_VERSION='v0.9.4').New to SynthOrg? See the Getting Started guide.
Container Images
All images are signed with cosign (keyless via GitHub OIDC), attested with SLSA Level 3 build provenance, and include CycloneDX SBOMs.
Pull
| Image | Command |
|---|---|
| Backend | docker pull ghcr.io/aureliolo/synthorg-backend:0.9.4 |
| Web | docker pull ghcr.io/aureliolo/synthorg-web:0.9.4 |
| Sandbox | docker pull ghcr.io/aureliolo/synthorg-sandbox:0.9.4 |
| Sidecar | docker pull ghcr.io/aureliolo/synthorg-sidecar:0.9.4 |
| Fine-Tune (GPU) | docker pull ghcr.io/aureliolo/synthorg-fine-tune-gpu:0.9.4 |
| Fine-Tune (CPU) | docker pull ghcr.io/aureliolo/synthorg-fine-tune-cpu:0.9.4 |
Digest Pins
Pin to these digests in production for reproducible deployments:
| Image | Digest |
|---|---|
| Backend | sha256:07918fd7b090d7a647796486221e7bf194d1bf8f0acb50d04d340cdd2a153fb1 |
| Web | sha256:15cf0138e43039552137b2e4015595f345f31a92e91cc4246defbc6ed5d24fe4 |
| Sandbox | sha256:6a4f58c3752a6f7e0a7dbd58379727f60d1af6ad48d499abe5f5e7ed53b0999f |
| Sidecar | sha256:f2ccbb9fb510784b2649d51f761596322e0264f9ab0d2aaf5e3436979cb13490 |
| Fine-Tune (GPU) | sha256:803bef1764bd36b45aba4c50176c4b8aa3dfc4ef94d05e13a0732943f793a70f |
| Fine-Tune (CPU) | sha256:cc1c1b03ce2613d48a29078f866fde2531a3178f8994dabdf907b64977005c8b |
Supply Chain
Verify signatures (cosign)
# Verify any image -- replace IMAGE and DIGEST:
cosign verify ghcr.io/aureliolo/synthorg-IMAGE@DIGEST \
--certificate-identity-regexp='github\.com/Aureliolo/synthorg' \
--certificate-oidc-issuer='https://token.actions.githubusercontent.com'Verify SLSA provenance (gh CLI)
gh attestation verify oci://ghcr.io/aureliolo/synthorg-backend@sha256:07918fd7b090d7a647796486221e7bf194d1bf8f0acb50d04d340cdd2a153fb1 -R Aureliolo/synthorg
gh attestation verify oci://ghcr.io/aureliolo/synthorg-web@sha256:15cf0138e43039552137b2e4015595f345f31a92e91cc4246defbc6ed5d24fe4 -R Aureliolo/synthorg
gh attestation verify oci://ghcr.io/aureliolo/synthorg-sandbox@sha256:6a4f58c3752a6f7e0a7dbd58379727f60d1af6ad48d499abe5f5e7ed53b0999f -R Aureliolo/synthorg
gh attestation verify oci://ghcr.io/aureliolo/synthorg-sidecar@sha256:f2ccbb9fb510784b2649d51f761596322e0264f9ab0d2aaf5e3436979cb13490 -R Aureliolo/synthorg
gh attestation verify oci://ghcr.io/aureliolo/synthorg-fine-tune-gpu@sha256:803bef1764bd36b45aba4c50176c4b8aa3dfc4ef94d05e13a0732943f793a70f -R Aureliolo/synthorg
gh attestation verify oci://ghcr.io/aureliolo/synthorg-fine-tune-cpu@sha256:cc1c1b03ce2613d48a29078f866fde2531a3178f8994dabdf907b64977005c8b -R Aureliolo/synthorgSBOMs (CycloneDX JSON)
Attached to this release as artifacts:
`sbom-backend.cdx.json` | `sbom-web.cdx.json` | `sbom-sandbox.cdx.json` | `sbom-sidecar.cdx.json` | `sbom-fine-tune-gpu.cdx.json` | `sbom-fine-tune-cpu.cdx.json`
Verification
CLI Checksums (SHA-256)
| Archive | SHA-256 |
|---|---|
synthorg_linux_amd64.tar.gz |
cc7445cb5b7264a03c43a9fba9a01d006be5d880b88d429f6cacffb5376835e2 |
synthorg_linux_arm64.tar.gz |
a3373eec2b92c2dbb1345d69472e857962855c97baee84a1933132a4c7fe7288 |
synthorg_darwin_amd64.tar.gz |
6d1aed174e69f27b7b08fe6ca24caa051348c7cbaec5c8be6eabb584f335e46a |
synthorg_darwin_arm64.tar.gz |
f0c082bc19a2fc5e79029fb71c3f392f8303ce89781f244a7a6329191bc7d2f2 |
synthorg_windows_amd64.zip |
79e8c2088627638e7ab55c53c8c44647c58147950795d600c0d243c7c9b1cd48 |
synthorg_windows_arm64.zip |
0e07101606442cf2992455e25d29b9013228b81682a916241a3131d6055e1eed |
CLI Binary Signatures
cosign verify-blob checksums.txt \
--bundle checksums.txt.cosign.bundle \
--certificate-identity-regexp='github\.com/Aureliolo/synthorg' \
--certificate-oidc-issuer='https://token.actions.githubusercontent.com'CLI Provenance Bundle
Verify the Sigstore provenance bundle (.sigstore.json):
cosign verify-blob-attestation checksums.txt \
--bundle checksums.txt.sigstore.json \
--type slsaprovenance1 \
--certificate-identity-regexp='github\.com/Aureliolo/synthorg' \
--certificate-oidc-issuer='https://token.actions.githubusercontent.com'Provenance (SLSA Level 3)
Verify with the GitHub CLI:
gh attestation verify synthorg_linux_amd64.tar.gz -R Aureliolo/synthorgSoftware Bill of Materials
CycloneDX JSON SBOMs are attached to this release as downloadable assets.
Container images: sbom-backend.cdx.json | sbom-fine-tune-cpu.cdx.json | sbom-fine-tune-gpu.cdx.json | sbom-sandbox.cdx.json | sbom-sidecar.cdx.json | sbom-web.cdx.json