Skip to content

feat: replace Dockerfile builds with reproducible: true - #28

Merged
jona62 merged 2 commits into
mainfrom
feat/reproducible-flag
Sep 5, 2026
Merged

feat: replace Dockerfile builds with reproducible: true#28
jona62 merged 2 commits into
mainfrom
feat/reproducible-flag

Conversation

@jona62

@jona62 jona62 commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Why

The platform is dropping Dockerfile and prebuilt-image build sources: they made the compute host run user-controlled docker build as root, clone arbitrary git URLs, and extract uploaded tarballs. Reproducible builds stay, but they now run the app's install: script inside an ephemeral builder VM and freeze the result — no user code on the host.

What changed

All 21 Dockerfile-based apps converted: build: { dockerfile: … }reproducible: true, with the Dockerfile's RUN steps moved into install:. Deleted 21 Dockerfiles plus the config files they baked in (routing scripts, provider JSON, codex config.toml). Wrapper entrypoints became repo start.sh files. READMEs updated per app, plus the root and catalog READMEs.

Every install: is idempotent because it also runs on a plain deploy. Verified: all 29 rig.yaml files parse, the 21 converted ones have reproducible: true and a non-empty install:, every install: passes bash -n, and no Dockerfile or dockerfile: key remains.

Merge order

Safe to merge before the rig 0.12.63 release: the released CLI (0.12.62) ignores the unknown reproducible key, so these apps still deploy normally with it — they simply do not get the frozen image until users upgrade.

Known gap

open-webui (8192), firecrawl (12288), hermes-agent (6144) and excalidraw (4096) previously set build.sizeMb above the builder VM's fixed 3 GB disk. Their app definitions are correct, but a cold reproducible build of the first two will not fit until the builder's disk is sizable. Each README carries a note; the platform fix is tracked separately.

Every example that built its rootfs from a Dockerfile now declares
`reproducible: true` and carries its build steps in `install:`. The
platform no longer runs `docker build` on the compute host, so the
Dockerfile, its baked config files, and the `build:` map are gone from
all 21 apps.

Each install script is idempotent: it also runs on a plain
(non-reproducible) deploy, so nothing depends on the freeze happening.
Wrapper entrypoints that used to be written by the Dockerfile are now
repo files (start.sh), matching the convention the CONTRACT documents.

Three apps (open-webui, firecrawl, hermes-agent) and excalidraw
previously sized their image with build.sizeMb above the builder VM's
fixed 3 GB disk. Their READMEs say so; sizing the builder is a platform
gap tracked separately.
The Dockerfile builds these apps replaced sized the produced ext4 with
build.sizeMb; the reproducible builder takes its disk from
workspace.resources.diskSizeMb instead. Four apps declared a workspace
smaller than the image they need, so restore the old sizes there:
excalidraw 4096, firecrawl 12288, hermes-agent 6144, n8n 8192.

READMEs and the contract now say the builder inherits that value rather
than being pinned to the 3 GB default.
@jona62

jona62 commented Sep 5, 2026

Copy link
Copy Markdown
Contributor Author

Second commit resolves the builder-disk gap this PR originally flagged.

The platform side now sizes the builder VM from workspace.resources.diskSizeMb instead of pinning it to the 3 GB default (jona62/rig-mvp#341), so the four apps that used to set build.sizeMb just needed that value restored on their workspace: excalidraw 4096, firecrawl 12288, hermes-agent 6144, n8n 8192. open-webui already declared 8192.

The READMEs and design/CONTRACT.md no longer say the builder is fixed at 3 GB. Apps that declare less than 3 GB are unaffected — the server clamps the builder up to the base image's own size.

@jona62
jona62 merged commit b570081 into main Sep 5, 2026
@jona62
jona62 deleted the feat/reproducible-flag branch September 5, 2026 21:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant