On this page
Changelog
All notable changes to the Robot Vault distribution are documented here. Versions follow SemVer; 1.0.0 will be the first production release.
[0.9.7] - 2026-09-05
Corrective alpha release for robot enrollment from the published release.
Fixed
- Verify the robot manifest signature using the published key-ID and base64 envelope, so robot enrollment accepts authentic release metadata.
- Stream versioned release artifacts through the delivery service for installers that do not follow redirects.
Image digests (0.9.7)
@@IMAGE_DIGESTS_PENDING@@[0.9.6] - 2026-09-05
Corrective alpha release following the unpublished 0.9.5 candidate. Retains durable partial upload resume and recording status improvements described below.
Fixed
-
Prepare the empty mountpoints required by query's read-only secret and TLS binds before startup, and recreate them before Docker starts after a reboot.
-
Accept distribution-packaged Compose versions such as
2.40.3+ds1-0ubuntu1~22.04.1while retaining the Compose 2.20 minimum. -
Use the ingest binary's built-in readiness probe in release Compose. The previous health check required
curl, which is absent from the ingest image, and incorrectly kept a healthy service from becoming ready. -
Create the reserved
ingotron-secretssystem group at GID10001before enabling the configuration manager socket. Conflicting groups, explicit members, and host accounts with primary GID10001are refused; existing accounts are not reassigned. Container identity stays10001:10001. -
Align clean-host acceptance with a real systemd manager and the installer's documented refusal messages.
Image digests (0.9.6)
ghcr.io/ingotron-vault/robot-vault-ingest@sha256:3aafd53acac6b3e180a6a0dccd29d8bf1f334749ba86dff4453ae4c900355196
ghcr.io/ingotron-vault/robot-vault-processor@sha256:52dbdb58f37c80bc4ff2ff98635f4efe99d343dff9b797ddc6c8679a284c15a0
ghcr.io/ingotron-vault/robot-vault-query@sha256:3e7def5e57f0aff5be8fcf58e2227ac86d1949a943c2a0f64f570984a71af95a
ghcr.io/ingotron-vault/robot-vault-toolkit@sha256:c0b5631aeaf19384cbc786c42ad15d4ab65afff54e0e00a3efdd6f25fd93375a
quay.io/keycloak/keycloak@sha256:f1f1f01e472c8a78df40d8f2a49a925274eda4d3d80d5f6edbb5c880ee3c01c6<!-- The release gate replaces this marker with the captured 0.9.6 digests. A marker remaining in a staged bundle is a release refusal. -->
[0.9.5] - 2026-09-05 (tagged, never published)
This candidate failed clean-host acceptance: the configuration manager socket could not resolve its required host group. It was never published. It carries the 0.9.4 customer path plus bounded stage-1 transport, atomic robot completion markers, the Admin robot-count metric, VM-only real-systemd acceptance tooling, and scoped Docker cleanup.
Added
- Durable partial upload resume after connection loss and robot or server restart. Only missing chunks are resent, and the complete file must pass SHA-256 verification before completion.
- Recording status separates upload receipt, integrity, and processing. The robot UI shows server-confirmed saved bytes separately from each attempt.
- Migration 026 records multipart sessions and accepted chunks. Inactive sessions expire after seven days; generic cleanup preserves registered parts.
- Ingest object-store permissions allow raw-object verification and cleanup.
[0.9.4] — 2026-09-03 (tagged, never published)
Corrective alpha release focused on a simpler customer path and safer recovery.
Added
- One-command clean-host server installation with automatic Docker setup, browser claim, and Admin configuration.
- Robots → Add robot recording-root selection and one-command agent enrollment; robot upgrade and CA-change re-enrollment workflows.
- A root-managed configuration manager with reviewed numeric settings, revision-bound plans, health-gated rollback, boot recovery, and a global operation lock.
- Release-aware upgrade, rollback, and complete backup-restore convergence for the active CLI, systemd manager units, configuration, TLS, and metadata.
Security
- Rebuilt the four first-party release images on pinned Ubuntu 22.04 runtimes and removed build-only packaging tools from the shipped images.
- Replaced the processor's ROS apt runtime with schema-bound MCAP ROS 2 decoding, updated FFmpeg to 9.0.1, and added a built-in ingest health check.
- Kept release publication fail-closed: every candidate image must pass the strict High-or-above vulnerability gate before it can be promoted.
Compatibility and limitations
- Supports Linux x86-64, Docker Engine 24+, Compose 2.20+, OpenSSL 3+,
tar, andcurl; upgrade/adoption range is>=0.9.0 <0.9.4. - The full appliance runs on one server only. Each robot gets only the small agent, and the UI can run in any trusted browser.
- RHEL-family and Fedora hosts with SELinux Enforcing are refused until a packaged Ingotron SELinux policy exists. Never disable SELinux as a workaround.
[0.9.3] - Unpublished candidate
Version 0.9.3 was a private candidate that failed the strict vulnerability gate. It was never a public release, package, channel update, or installer target. The remediation is included in 0.9.4; do not install 0.9.3.
[0.9.2] — 2026-08-21
Corrective alpha release replacing the yanked 0.9.1 appliance.
Fixed
- First-admin claim now completes on a clean install. The query service receives its Keycloak bootstrap secret, and the installer records the exact disabled imported administrator ID in the product database before minting a claim token.
- Browser sign-in uses one consistent external identity origin. The
/authreverse proxy, discovery document, redirect targets, and configured issuer now agree on the appliance HTTPS URL. - Robot ingest is reachable over the advertised trust boundary. The ingest service receives the appliance CA material it needs, and robot bootstrap and enrollment use the public ingest host and TLS port instead of an internal container address.
Compatibility and channel policy
- Supports upgrades and adoption from
>=0.9.0 <0.9.2. - Keeps
0.9.0as the minimum supported version and yanks0.9.1; existing 0.9.1 installations should upgrade to 0.9.2, and fresh installs must not select 0.9.1.
[0.9.1] — 2026-08-20
The first signed Ingotron appliance release for Robot Vault.
Added
- Signed one-line installation and update channel. The bootstrap verifies
an Ed25519-signed channel and manifest plus every bundle/artifact digest
before installing immutable releases under
/opt/ingotron. - Root-managed day-two CLI.
status, canonical service logs, demo seeding, claim/recovery, backup/restore, journaled upgrade/resume, rollback, address/TLS maintenance, adoption, reattachment, and uninstall all preserve a fixed appliance identity and recovery state. - Bundled Keycloak 26.7.1 identity provider. A one-time claim creates the first administrator; host-local recovery repairs it without reopening setup. Keycloak has its own database backup and migration/rollback gate.
- Private appliance TLS authority. HTTPS on port 8003 and robot gRPC/TLS on port 50051 use separate leaves under a per-appliance CA, with fingerprint/CA export, SAN drift detection, leaf reissue, and explicit CA rotation.
- Secure robot enrollment. The Robots UI creates a short-lived, one-use command whose code pins the appliance CA. Successful enrollment yields a distinct per-robot bearer credential. Appliance ingest is TLS plus bearer authentication, not mTLS.
- Declarative configuration reconciliation. Release-owned, computed,
generated-secret, adopted, and operator values are recorded; obsolete keys
are removed and
QUERY_PORTis renamed toQUERY_HTTPS_PORT. - Audited legacy upload-integrity transition. Upgrade/adoption preflight,
runtime gauges, and
ingotron integrityexpose completed legacy rows that lack source-side digest proof. Operators explicitly record a verified re-upload/supersession, quarantine, or owner-policy attestation; no stored hash equality silently promotes a row. - Generation-fenced processing. Migration 024 gives every Parquet, media, QA, episode, and registry output an attempt owner. Publication atomically selects one winning generation, all readers hide stale/partial attempts, and bounded GC can collect their unreferenced objects.
- Complete customer documentation. Installation, claim, UI and robot use, backup/restore, upgrades/rollback, adoption/reattachment, address/TLS/admin recovery, configuration ownership, security, and limitations are now documented as the appliance workflow.
Changed
- The supported customer installation is the signed appliance bootstrap, not a
cloned checkout and
install.sh. - The supported composition is base + bundled Keycloak + appliance TLS overlay,
always invoked by the CLI under the fixed
ingotronproject. Raw Compose operation is no longer a customer workflow. - Public access is HTTPS by default. Only the browser/API port (8003) and robot TLS port (50051) are intended host surfaces; datastores and internal identity endpoints remain private.
- Fresh installs deny the legacy fleet-wide ingest token. 0.9.0 adoption grants a recorded 30-day migration grace while robots move to per-robot enrollment.
- Upgrades create checksummed dumps of both Robot Vault and Keycloak by default, retain immutable previous releases, and refuse plain rollback after either a product migration or Keycloak image one-way door.
- Legacy unverified uploads remain excluded until their append-only disposition records actor, policy, reason, and any client-SHA-verified replacement. Owner attestation is labeled as policy trust, not cryptographic source proof.
- The processor now builds FFmpeg 8.1.2 from the upstream signed source archive at an exact SHA-256 pin and attests that the runtime binary, source record, LGPL-only configuration, and shared-library layout agree.
Compatibility and limitations
- Supports Linux x86-64 (
linux/amd64), Docker Engine 24+, Docker Compose 2.20+, and OpenSSL 3+. - Upgrade/adoption source range is
>=0.9.0 <0.9.1; incompatible or ambiguous state is refused rather than guessed. - The appliance is single-host, uses a private CA, has HSTS off by default, and does not provide built-in HA, ACME, or application-level encryption at rest.
- This release includes no PII-scrubbing backend. Media remains marked raw;
operators must review the
ALLOW_UNSCRUBBEDexport policy. - CLI backup includes both databases, configuration, secrets, signing identity, and TLS but not the MinIO object store. A separate object-store or stopped volume archive is required for complete recovery.
Image digests (0.9.1)
ghcr.io/ingotron-vault/robot-vault-ingest@sha256:924c06a32ee8699de06ac4fefcf868dc4e8e5ae8863246a57e84c79d839de7d3
ghcr.io/ingotron-vault/robot-vault-processor@sha256:3bea0d8472701ab2cd753c5c8ad6c634b3d714eeb779166cdd5fabc3ed6c4c71
ghcr.io/ingotron-vault/robot-vault-query@sha256:50345f280b3881f3bba5bd0f0ebfac2b5b3b5f3f9dac8afbcd5950dea80581bb
ghcr.io/ingotron-vault/robot-vault-toolkit@sha256:3ef9bedd6a25362964f2e04042df5600d8b10becff15e045f29d240a79c99640
quay.io/keycloak/keycloak@sha256:f1f1f01e472c8a78df40d8f2a49a925274eda4d3d80d5f6edbb5c880ee3c01c6<!-- Recorded from the immutable public v0.9.1 images.lock.json release asset (SHA-256 ff0739eb9290cd413b333c56f5cd4eb77b3a88a04302fcd92d678b65ad214071), whose manifest signature was verified with rel-2026a. Historical digest blocks are facts, not placeholders: a pending slot is permitted only for the release currently being cut, and never in a staged bundle. -->
[0.9.0] — 2026-08-16
First customer distribution of Robot Vault.
Included
- Authenticated MCAP ingest with integrity verification and content-addressed storage, backed by PostgreSQL and a MinIO object lake.
- Processing pipeline: queryable Parquet extraction, episode segmentation, AV1 media encoding (LGPL-only FFmpeg build), and DEFECT/RISK quality scoring.
- Web UI and query API: uploads, episodes, exploration, SQL console, observability panels.
- Dataset cuts with Ed25519-signed manifests; export to LeRobot v3 or reviewed MCAP passthrough.
- Robot-side tooling: upload agent CLIs (
rsm,rua) and a browser upload console, plus a deterministic simulated-robot demo seeder. - Evaluation stack (
./install.sh) with generated per-installation secrets, and a hardened production topology (external OIDC, TLS front door, mTLS robot ingest, per-service database roles and object-store credentials).
Not included in this version
- GPU-accelerated PII scrubbing (faces/licence plates). Media is honestly recorded as unscrubbed; the exporter's unscrubbed-media gate defaults open in evaluation and closed in production.
Image digests (0.9.0)
ghcr.io/prateek-ari/robot-vault-ingest@sha256:cc5c5a951f3111f1cd6a1261f617b96a63f4df46b459d4f644939311929c390a
ghcr.io/prateek-ari/robot-vault-processor@sha256:f55fbe4ca71aae356b40df90d448976abe52c6cc1aa3761b75c3a02a3da54fcf
ghcr.io/prateek-ari/robot-vault-query@sha256:9199e699f6149b386fa03699be1f8a5295d8b04173de36061427da3dcd82b7b3
ghcr.io/prateek-ari/robot-vault-toolkit@sha256:cc2eb484af8e77c9c8649940af194ab1ab5de62088567c8c812e7448bc48a3fa
quay.io/keycloak/keycloak@sha256:f1f1f01e472c8a78df40d8f2a49a925274eda4d3d80d5f6edbb5c880ee3c01c6