Skip to content

Release archives are heavy: offline archive 1.46 GiB, native installers ~300 MB each #802

Open

Description

@SaladDay

The v0.0.12 release is heavy. The offline archive is 1.46 GiB, and each native installer is about 300 MB. Most of the offline archive is not needed on a given host.

Measured (v0.0.12, 1de83d7)

What each path downloads:

Path Download
Online Core install oac-linux-amd64 6.9 MB, then GHCR images (linux/amd64, compressed): postgres 111 MiB, core 88 MiB, web 8 MiB, ingress 5 MiB
Add a node Runtime image 358 MiB, plus node artifacts: msb 48 MiB, microsandbox-provider 40 MiB, libkrunfw 21 MiB, daemon 16 MiB, sandbox-node 16 MiB
Self-hosted machine One native installer: linux-amd64 326 MB, darwin-arm64 293 MB, windows-amd64 289 MB
Offline host oac-<commit>-linux-amd64-offline.tar.gz: 1,565,487,059 bytes

The offline archive holds, by size (same layout as a local 9a663ff build):

  • Runtime image archive: 356 MiB.
  • Native installers for all three platforms: 311 + 280 + 275 = 866 MiB, more than half of the archive. A Linux host whose self-hosted machines are all Linux still carries the macOS and Windows installers (555 MiB).
  • images/database.tar 111 MiB, images/core.tar 87 MiB, node artifacts about 141 MiB.

The linux-amd64 native installer unpacks to 862 MiB. Its largest files are:

  • components/codex/bin/codex: 247 MiB.
  • components/codex/bin/codex-code-mode-host: 66 MiB.
  • Claude Code's claude-agent-sdk-linux-x64/claude: 209 MiB.
  • components/node/bin/node: 118 MiB.
  • oac-daemon: 16 MiB.
  • Files that look build-only: components/minimax/native/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c 9 MiB and components/node/lib/node_modules/pnpm 7 MiB.

The control archives oac-<commit>-linux-amd64.tar.gz (230 MB) and -linux-arm64.tar.gz (107 MB) are also published. I found no install path that downloads them: deploy/install.sh, deploy/install.ps1 and oac install fetch only the oac binary, compose.yaml and the checksums, and pull images from GHCR. The publisher reads native-installers/catalog.json from the amd64 control archive.

Constraints

  • The Harness binaries are upstream builds. AGENTS.md has each Harness run natively through its maintained upstream SDK, so we do not rebuild or strip them.
  • Per AGENTS.md, a size change needs a before/after measurement against this baseline, and must account for the complexity it adds.

Candidates to evaluate

  1. Offline archive: carry only the Linux native installer. The macOS and Windows installers are already separate release assets that an operator can add when their offline machines need them. This saves about 555 MiB (about 38%). It changes what install.py copies into the installation and what the offline hosts guide says.
  2. Native installers: leave files the Harnesses do not load at run time out of the package, such as sqlite3.c and the bundled pnpm (about 16 MiB per platform).
  3. Control archives: confirm whether anything still downloads them. If nothing does, stop publishing them and have the publisher read the catalog from the native catalog asset instead (337 MB per release).
  4. Check whether codex-code-mode-host (66 MiB) is needed for the features we enable, or is required by the upstream package as-is.

Acceptance

  • The asset sizes before and after each change are recorded against this baseline.
  • The install paths that change still pass on a fresh host: online install, offline install, node enrollment and self-hosted machine installation.

Activity

  1. SaladDay commented on Oct 20, 2026

    @SaladDay
    CollaboratorAuthor

    Progress against the baseline above:

    • Ship only the Linux native installer in the offline archive #803: the offline archive carries only the Linux native archives; macOS and Windows redirect to the release. Offline archive 1,565,487,059 → 996,026,081 bytes (950 MiB, measured on a b50d1712 build).
    • Download only the selected Harness for self-hosted machines #804: each platform's native installer is split into a base (oac-daemon, bundle.json; 8.8 MiB on linux-amd64) plus node (58.9) and one archive per Harness (codex 121.3, claude 99.2, minimax 22.8 MiB). oac-daemon install downloads only node and the selected Harness and caches them per version under the Runtime home. On mx, ten self_hosted Sessions (five codex, five claude) downloaded 368 MiB of native archives in total, against 3.0 GiB on v0.0.12. Connect took 15 s for codex and 20–21 s for claude, against 20 s and 25 s. codex and claude_sdk passed 36/36 on hosted and self_hosted.

    Still open, by size:

    1. Each self_hosted Environment installs its own copy of node and its Harness: 5.4 GB under ~/.oac/environments for those ten Sessions. Fixing this means sharing installed components across Environments of one version inside the native installer.
    2. The control archives oac-<commit>-linux-amd64.tar.gz (230 MB) and -linux-arm64.tar.gz (107 MB) still have no consumer apart from the publisher's catalog read (candidate 3).
    3. codex-code-mode-host (66 MiB, candidate 4).
    4. Build-only files such as sqlite3.c and the bundled pnpm (about 16 MiB per platform, candidate 2): deferred, small.
  2. SaladDay commented on Oct 21, 2026

    @SaladDay
    CollaboratorAuthor

    Item 1 (per-Environment installed copies) is done in #805 (90ba725): self-hosted installations of one version on a machine share one read-only copy in <Runtime home>/components/<version>.

    On mx (fresh install of main + #805 + #806, 10 self_hosted Sessions, codex and claude_sdk, 36/36 with hosted):

    #804 #805
    Installed components 5.4 GB under environments 806 MiB once (node 228, codex 320, claude 259)
    Per installation about 540 MiB 17–26 MiB (plus Harness session data)
    Install until connected codex 15 s, claude 20–21 s first 12 / 10 s, then 3–7 / 6 s

    The last uninstall removes the version's components; downloads of other versions are removed on install.

    Also merged: #806 (67ccb3d) derives node limits from the host instead of the fixed 2 at once / 8 retained; mx2 now gets 3 / 14.

    Remaining, not urgent: unused control archives (337 MB), codex-code-mode-host (66 MiB), small build-only files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions