Skip to content

Project status and release notes

Tobby is released and under active development. Milestones 1–5 are delivered; the current release line is v0.5.x. The table below is rendered from a single data file (status.yaml) and feeds every status badge on this site — including the filtered security view on the security one-pager. If a page and this table ever disagree, this table is right and the page has a bug.

Status as of v0.5.0 (2026-08-28)

FeatureStatusMilestone
1.1 Secure build chain (reproducible, SLSA L3, signed SBOM)Available—
1.2 Operable application foundation (layered config, JSON logs, probes, metrics)Available—
R-09 End-to-end run identifierAvailable—
R-12 Security audit logFoundation, authentication, token and media-override events shipped; scan events at milestone 6.PartialJ6
1.3 Embedded OCI registry with canonical relocation layoutAvailable—
1.4 Recipe / Retriever format specification (Apache-2.0)Public draft, v1alpha1, separate repository.Available—
1.5 Five-level test pyramid and blocking quality gatesAvailable—
1.6 Crucible: disposable replica of the target environmentAvailable—
2.1 Server-rendered web UI, bilingual EN/FR, no NodeAvailable—
2.2 Content browsing (repositories, tags, platforms, digests)Available—
R-03 Actionable error taxonomy (TBY-* codes, bilingual)Available—
R-06 Search and filters with strict UI/API parityAvailable—
2.3 On-demand unit import with platform selectionAvailable—
2.4 Persistent task tracking with logs and resumptionAvailable—
2.5 Versioned REST API /api/v1 with self-served OpenAPIAvailable—
R-01 Secure guided first start (no open UI, tool-computed hashes)Available—
R-34 Interactive first start (tobby quickstart)Available—
R-35 System packages (.deb/.rpm/.apk) as release assetsAvailable—
3.1 Strict recipe and retriever validation (SDK, unknown field = rejection)Available—
3.2 All four ingredient kinds (ContainerImage, HelmChart, OCIArtifact, FileSet)Available—
3.3 Version resolution and per-digest differential syncAvailable—
R-23 FileSet packaging guide (reproducible archives, standard tooling)Available—
3.4 Cosign signature verification at entry (trust roots, scopes, both layouts)Available—
R-26 Store format compatibility guarantee across versionsAvailable—
R-10 recipe lint and cookbook publication guideAvailable—
3.5 Source-to-destination mapping table and zone cascadeAvailable—
3.6 FileSet HTTP serving — OS package repository (/files/)Available—
4.1 Continuous promotion service between connected zonesAvailable—
4.2 Registry allowlist, refused before any transferAvailable—
4.3 Authentication and RBAC, secure by default (basic, tokens, three roles)Available—
R-29 Fine-grained resume of large downloads (HTTP Range)Available—
R-36 Recipe publication from the CLI (tobby recipe push)Available—
R-37 Recipe document visible in the interface (digest, copy, download)Available—
R-40 Recipe import from the interfaceAvailable—
R-39 recipe cook: recipe-authoring toolingIn development in the recipe-spec repository.Upcoming—
4.4 Enterprise network: authenticated proxies, private PKI, server TLSAvailable—
4.5 Reference deployment (hardened Helm chart and raw manifests)Available—
5.1 Mirror synchronization onto a transportable storeAvailable—
R-02 Media screen: guided operator journey with per-step verdictsAvailable—
5.2 Pre-flight checks: deduplicated volume vs media space, filesystem refusalsAvailable—
R-05 Embedded offline documentation and troubleshooting (/help)Available—
R-08 Stable CLI contract (--output json, published exit codes)Available—
R-04 Plan mode: full dry-run without side effectsAvailable—
R-28 Media identity and freshness (stale media refused by default)Available—
R-16 Secrets never travel on the transportable storeAvailable—
5.3 Zone identity guard and media inventoryAvailable—
R-19 Fine-grained blocking on a tampered medium (per-recipe verdicts)Available—
5.4 Destination-side operation (full re-verification, then differential push)Available—
R-41 Pack a directory into a served FileSet (tobby fileset pack)Available—
5.5 OCI image layout export/import and audited store resetAvailable—
R-33 Transit store housekeeping (retriever-aligned cleanup, disk threshold)Available—
5.6 Windows workstation for the mirror journey (winget, Scoop)The mirror journey is validated on a Windows CI runner and the single binary is released for it. Scoop is published — `scoop bucket add tobby https://github.com/tobby-fetch/scoop-bucket`. The winget manifest set is submitted and waiting on review in an index maintained by other people, so `winget install tobby` does not work yet; install with Scoop or from the release archive meanwhile.PartialJ6
6.1 Vulnerability scanning with policy (Trivy, blocking or advisory)UpcomingJ6
R-13 Guaranteed freshness of the vulnerability databaseUpcomingJ6
R-14 Authentication hardening (rate limiting, session and token expiry)Failed-authentication rate limiting shipped in v0.4.2; session and token expiry land with milestone 6.PartialJ6
6.2 Offline vulnerability database, carried by Tobby itselfUpcomingJ6
R-25 Tobby updates through its own channel, across the air gapUpcomingJ6
R-22 Reduced-trust content stays visibly marked everywhereUpcomingJ6
R-20 Continuity when the enterprise directory is downUpcomingJ6
6.3 Enterprise identity: OIDC, then SAML 2.0UpcomingJ6
R-07 Printable transfer report (bilingual, marked as unsigned aid)UpcomingJ6
R-31 On-demand store integrity verification with timestamped reportUpcomingJ6
7.1 UI polish and consumption aids (mapping exports, registries.yaml snippet)UpcomingJ7
7.2 Complete bilingual documentation (EN/FR, CI-checked completeness)UpcomingJ7
R-30 One-step redacted diagnostic bundleUpcomingJ7
R-11 Integration and monitoring kit (signed OpenAPI, metrics reference, alerts)UpcomingJ7
R-32 Clock-sanity detection in isolated zonesUpcomingJ7
R-27 Instance backup and tested rebuild procedureUpcomingJ7
R-15 Scoped, expiring vulnerability exceptions (VEX-convergent)UpcomingJ7
7.3 Hardening proven by tests (fuzzing, CSRF, OCI conformance suite)UpcomingJ7
R-21 Documented emergency path (scoped, visible, organization-signed)Documentation-only feature; no code path.UpcomingJ7
R-17 Per-content provenance and trust class, visible everywhereUpcomingJ7
7.4 Adversarial acceptance and version 1.0 (spec frozen at v1)UpcomingJ7

Each milestone maps to a minor release line: milestone N ships as v0.N.x. Patch releases within a train carry fixes and hardening only, never new features.

Milestone Train Status
1 — Foundations v0.1.x Delivered (v0.1.0, 2026-08-11)
2 — User-experience preview v0.2.x Delivered (v0.2.0, 2026-08-12)
3 — Recipe engine v0.3.x Delivered (v0.3.0, 2026-08-16)
4 — Passthrough v0.4.x Delivered (v0.4.0 → v0.4.2)
5 — Mirror & air-gap v0.5.x Delivered (v0.5.0, 2026-08-27)
6 — Hardened controls & enterprise identity v0.6.x Upcoming
7 — Finishing, documentation & acceptance v0.7.x → 1.0.0 Upcoming

Observed cadence. The first five milestones shipped between 2026-08-11 (v0.1.0) and 2026-08-27 (v0.5.0), with two hardening patches along the way (v0.4.1 on 2026-08-18, v0.4.2 on 2026-08-22). That is the cadence of the initial development phase, not a commitment: each milestone ships when its acceptance scenarios pass on the crucible, not on a date.

Path to 1.0. Two milestones remain: milestone 6 adds vulnerability scanning with policy and enterprise identity (OIDC, then SAML), and milestone 7 closes with finishing work, complete bilingual documentation, and an adversarial acceptance run on the release candidate. Version 1.0.0 freezes the four public surfaces (CLI, API, configuration, storage layout) under SemVer — the release and compatibility policy is the canonical home for what is stable already and what freezes at 1.0.

Each milestone train has a raw acceptance report; they are published under acceptance reports. The full changelog lives in the repository (CHANGELOG.md).

Mirror and air-gap delivered: the second complete use case, from a mirror synchronization onto a transportable store to a verified push inside an isolated zone.

  • The medium and its verification. Every mirror synchronization writes a media manifest — an inventory of every covered file, the recipes fulfilled with their pinned digests, the zone identity, the media identifier and the run. It is deliberately unsigned and nothing rests on it; the destination re-derives authenticity from the recipes’ cosign signatures against its own trust roots and from every file’s own content address (ADR-0016). Blocking is decided per recipe (R-19): a medium carrying two deliveries where one arrived damaged still delivers the intact one.
  • Operation on the isolated side (FR-052): tobby media verify, tobby media import, their /api/v1/media mirrors, and the guided Media screen — Verify, Report, Push, with the Push control absent until a verdict clears a delivery.
  • An unverified medium serves nothing. A destination instance holding a transported store withholds /v2/ and /files/ until verification clears it, answering 403 with TBY-MED-030 and the way out, while staying live and ready so the screen that fixes the condition is reachable.
  • Pre-flight and plan mode (FR-055, R-04): volumes computed per recipe and deduplicated by digest against the target’s free space and filesystem capability, and tobby sync --dry-run producing the full report of a synchronization to come with no side effect and its own exit code.
  • A command line under a stable contract (R-08): --output json everywhere, a published exit-code table generated from the code, --wait, and a guaranteed non-interactive mode.
  • OCI image layout export and import (FR-051), audited store reset (FR-046), retriever-aligned pruning with a store occupancy threshold (R-33), and tobby fileset pack (R-41).
  • The documentation travels inside the binary (R-05): /help serves this whole corpus offline, in both languages, on an instance with no route to anything.
  • Windows is a validated platform, not a compiled one (5.6): the mirror journey runs end to end on a Windows CI runner, against a genuine FAT32 volume. Eight defects that first real run found are fixed. The winget and Scoop manifests are built and attached to each release; neither channel is published yet — see supported platforms.

Hardening release, no new features. A point-in-time quality audit was run between milestones 4 and 5 and this release carries its fixes:

  • Fixed defects: a data race between task persistence and the parallel ingredient sync (B-016), and a garbage collector that could sweep blobs of an in-flight transfer (B-017). Also fixed: a task-runner panic could kill the whole service, CLI usage errors exited with the wrong code, and tobby recipe push surfaced raw transport errors instead of taxonomy blocks.
  • Hardening: task history retention and pagination, rate limiting on failed authentication attempts (before the password hash is computed), security headers with a hash-based Content-Security-Policy, a progress watchdog on stalled downloads, and govulncheck plus a full-history secret scan added to the quality gates.

One fix: an instance serving the generated fallback TLS certificate could not adopt a replacement from the administration screen (FR-082). Adoption is now offered into the state directory, as a deliberate separate step.

Passthrough delivered: the continuous promotion service, the registry allowlist, account lifecycle with RBAC in the UI and API, enterprise network support (authenticated proxies, private CAs, server TLS), fine-grained resume of large downloads, recipe publication from the interface, the reference Helm chart, and a browser-driven UI regression suite.

  • Fixed defects: trust scopes matched differently on the two halves of a promotion (B-014), and Sigstore bundle signatures were left behind by the copy one hop downstream (B-015) — both caught by crucible runs before release, not by users. Also fixed: task screens that never stopped polling (B-012) and file downloads hijacked by boosted navigation (B-013).

The recipe engine: strict validation through the specification SDK, all four ingredient kinds, semver resolution with per-digest differential sync, offline cosign verification in both published layouts, source substitution and the zone cascade, FileSet serving under /files/, tobby quickstart, tobby recipe push, Linux packages (.deb/.rpm/.apk), and five commented example recipes.

  • Fixed defects: content and task filters only reacted to their first control (B-011), plus a batch of UI corrections (copy toasts, theme and language switches under boosted navigation, platform counts shown as present/total).

The first complete journey behind authentication that is on by default: bilingual server-rendered web UI, content browsing, on-demand unit import with platform selection, persistent task tracking, the /api/v1 API with its self-served OpenAPI document, and the TBY-* error taxonomy.

Foundations: the application skeleton (layered configuration, structured logs, probes, metrics, graceful shutdown), the embedded OCI registry with the relocation layout, the audit journal and run identifier, the five-level quality gates, and the groundwork of the SLSA L3 release chain.

Current limitations are documented with their consequences and justifications on limits and out-of-scope; they are tracked per feature in the status table above rather than per release.