- Bump bareOsCtxApiVersion to 1.48.0; sync CHANGELOG, compatibility matrix, syscalls.example.json, ctx d.ts, generated ctx-client helper - POSIX: getconf _SC_NPROCESSORS_ONLN; shell set -o pipefail + BARE_OS_PIPESTATUS; posix_utilities schema v2 + JSON Schema; generated dashboard refresh - Host/subprocess: bare-subprocess then Node child_process spawn; optional backend on ctx.bareOsTrySpawnHostSubprocess; bin-worker WASM wall budget - VFS: BARE_OS_VFS_SYSTEM_IMAGE_WRITE for system image writes + warm-cache eviction path; guest /.bare/account EACCES test; environ TOKEN redaction test - Docs: corestore snapshot non-goal in package-bare-os-booter; PEAR-RUN links → docs/PEAR-RUN.md; POSIX pretest matrix in scripts/README + dev guide; environment appendix (PIPESTATUS, WASM_MS, system image write) - Seeder: keep kernel/ mirror in sync after bundle + coreutils builds Verified: npm test -w bare-os-booter, npm run pretest
/lib/bare (system image)
Self-contained ctx.bare support on the system Hyperdrive: Holepunch Bare packages bundled as IIFE scripts the booter can execute without a traditional Node module graph on the drive.
Documentation: Developer guide ch.12 · bare-os-bare-libs package README.
On this page
- What gets staged
- Boot order: drive bundles vs host imports
- Environment toggles
- Trust model
- Regenerating bundles
- When builds fail (stubs)
What gets staged
bare-module-manifest.json— Copy of the booter manifest (same keys and packages as host resolution). Tells the runtime which logical module names exist.manifest.json— Drive loader index:bundleslists IIFE paths that assign intoglobalThis.__bare_os_stdlib__;bundleStatscounts attempted bundles;bundleDiagnosticslists each bundle’s byte size (same data asdocs/audit/bundle-health.json).bundles/*.js— One esbuild IIFE per catalog entry. The bare-libs build is fail-fast (esbuild errors abort; no stub placeholders). Stale*.jsleft from older tiered builds are pruned on each successful build. Regenerate withnpm run build -w bare-os-bare-libs(updatesdocs/audit/bundle-health.json).
At boot the booter runs drive bundles first, then (unless BARE_OS_BARE_HOST_IMPORTS=0) fills any missing keys via host import() so development iterations can patch a single package without re-seeding the entire drive.
Boot order: drive bundles vs host imports
- Seeded bundles win for keys they actually populate — they are part of the trusted image, same class as
/bin. - Host imports run only for keys still missing after bundle evaluation, keeping local checkout workflows fast.
- Disabling host imports (
BARE_OS_BARE_HOST_IMPORTS=0) approximates production Pear behavior where only the drive contents exist.
Environment toggles
The authoritative list is in the environment appendix. Names that operators mention most often alongside /lib/bare:
BARE_OS_BARE_HOST_IMPORTS— Set to0/falseto forbid hostimport()fallback (drive-only resolution).- Related Pear
ctx.baretoggles and HTTP allow lists are documented in PEAR-RUN.md and the booter package reference.
Trust model
Trusted image only: executing these bundles is equivalent to running seeded /bin utilities. Do not copy arbitrary third-party IIFEs into kernel/lib/bare/bundles/ without reviewing them the same way you would review a new setuid binary on a Unix system.
Regenerating bundles
- Edit
packages/bare-os-booter/lib/bare-module-manifest.jsonor bundle sources underpackages/bare-os-bare-libs/as needed. - Run
npm run build -w bare-os-bare-libs— output lands inkernel/lib/bare/(and CI expectspackages/bare-os-seeder/kernel/to matchkernel/byte-for-byte afterward). - Mirror
kernel/intopackages/bare-os-seeder/kernel/(same tree) soscripts/verify-kernel-seeder-parity.mjspasses — typicallyrsync -a --delete kernel/ packages/bare-os-seeder/kernel/from the repo root after init/bundle changes. - Re-run the seeder so peers replicate the updated system drive.
Order with coreutils: from repo root, prefer npm run build -w bare-os-coreutils && npm run build -w bare-os-bare-libs && npm run bundle:kernel before parity check (matches root pretest).
When builds fail
Esbuild prints the failing ctxKey and package. Fix bare-module-manifest.json, adjust build.mjs (plugins, platform), or mark the entry optional / bundle: false when host-only resolution is intended. npm run smoke:bare-manifest guards required imports listed in the manifest smoke list.
CI: scripts/verify-bundle-health.mjs checks docs/audit/bundle-health.json against on-disk sizes; scripts/verify-bundle-markers.mjs and scripts/verify-bundle-throws.mjs gate incomplete-looking substrings / Error messages. scripts/sanitize-bare-bundles.mjs (run from this build) normalizes known upstream HTTP helpers, stream-base-class messages, and ICO encode paths so docs/audit/bundle-marker-allowlist.json and docs/audit/bundle-throw-allowlist.json stay empty.
Note: This file is copied to kernel/lib/bare/README.md (and the vendored seeder tree) by bare-os-bare-libs build. Links are written for the kernel/lib/bare/ path; verify-doc-links skips this template path because its on-disk location differs.