Skip to content
This repository was archived by the owner on Sep 3, 2026. It is now read-only.

v0.9.4

Latest

Choose a tag to compare

@synthorg-repo-bot synthorg-repo-bot released this 01 Sep 13:13
Immutable release. Only release title and notes can be modified.
313b727

Disclaimer, THIS SHOULD NOT BE USED YET

Highlights

AI-generated summary (model: mistral-medium-latest via 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

Maintenance


CLI Installation

Linux / macOS:

curl -sSfL https://synthorg.io/get/install.sh | bash

Windows (PowerShell):

irm https://synthorg.io/get/install.ps1 | iex

Pin to this release: set SYNTHORG_VERSION=v0.9.4 before 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/synthorg
SBOMs (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/synthorg

Software 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