- Bump ctx API to 1.31.0; extend /proc/bare_os/syscalls.json schema 4 (fdModel, signalModel) - Add /mirror/aux* routing for auxiliary Hyperdrives; optional BLAKE2b-keyed /bin cache (BARE_OS_VFS_BIN_CACHE_BLAKE2B) - Wire seeder snapshotHintsJson from BARE_OS_SEED_* env; add seeder unit tests - Shell: trap -p; docs for jobs/bg/trap; sync schemas, examples, compatibility matrix, handbook ch.9 - Coreutils: Issue 7 man option rows for cp/mv/ln/find/grep/sed/awk/tar/test/true; xcu-issue7-sweep tests - Docs: env appendix, vault-threat-model, node-vs-bare-host-matrix, test:bare, CHANGELOG 1.31.0
bare-os-booter
Pear / Bare application that boots from the network only: joins the same Hyperswarm topic as the seeder, reads MBR block 0 from peers, opens the system Hyperdrive (and a personal namespaced drive), replicates, then runs /boot/init.js with a rich ctx (VFS, shell, identity, HDMS, initd services).
There is no local seed fallback — a running seeder (or another peer with the image) must be reachable within BARE_OS_BOOT_TIMEOUT_MS.
Documentation: User manual (run and operate) · Handbook (architecture) · Developer guide (extend ctx and /bin) · Booter reference (paths and env appendix pointers) · CHANGELOG (bareOsCtxApiVersion).
Run
# repo root (links node_modules for Pear)
npm run os:booter
Or:
cd packages/bare-os-booter
node index.js
Major subsystems (lib/)
index.js— Swarm,SwarmDisk, boot timeout,executeKernel, ctx assembly, boot/audit/env passthrough;bareOsReadBareTopSnapshotbatches/proc/bare_os/*reads forbaretopswarm-disk.js— Peer mux, MBR/read RPC, replication hookskernel-runner.js—runKernelFromSource,runBinCommand,resolveBinInPath(PATH on system drive);git/curl/wgetdelegatesvfs.js— Two-drive routing;mkdir/rmdir(.bareos_empty),chmod,symlink, pseudo/proc//sys,watch, …shell.js— Tokenize, pipelines, redirections, builtins (barerc,unset,readonly,umask,command,type, …),execShellLine,loadBarerc; default aliases includenano→edit(TTY editor),top→baretopandbtop→baretop(session monitor)bare-os-theme-presets.js— Named themes (BARE_OS_THEME),applyBareOsThemeFromEnv,BARE_OS_COLOR_DEPTHdowngrades for REPL colorsbare-os-ipc.js— FIFOs, JSON-RPC (pushJson/takeJson, token + line limits), fan-out pub/sub,statsbare-os-abort.js—raceWithAbortAndTimeoutforexecLine/readLine/ VFS /runBinCommandbare-os-http-policy.js— Optional HTTP allow/deny lists for wrappedctx.httpFetchbare-os-ctx-api.js/bare-os-ctx.d.ts— Semantic version of thectxcontract + optional TypeScript shapesbare-os-runtime-caps.js— Frozen caps: pipeline limits,quotas, pseudo paths,featuresflagsbare-os-ctx-bare.js/bare-module-manifest.json—ctx.barehost imports + optional/lib/bare/drive bundle mergeidentity-session.js/identity-account.js— Guest vs unlocked user,/.bare/account, vaulthdms-manager.js— Extra Hyperdrives, mounts under/mnt, Autopass pair/invitebare-initd.js— Service registry, unit drop-ins,units.dfragments, socket-activation,IdleSec=idle stop,ConditionPathExists=/AssertPathExists=, ReadinessPath /exec:polling, DAG snapshot/proc/bare_os/initd_graph.json, mobile suspend/resume order,startBareInitd, kernel-loggerbare-cron.js—/etc/bare-os/crontab,~/.crontab,~/.config/bare-os/timers/*.timer(OnCalendar=,EveryMs=,OnInactiveSec=/Persistent=), minute scheduler,ctx.execLinejobsbare-os-delegate-concurrent.js— Optional in-flight caps (BARE_OS_DELEGATE_MAX_CONCURRENT, per-kindBARE_OS_DELEGATE_*_MAX_CONCURRENT) around host delegatesrepl-session.js— Fish-style TTY line editor, syncedconsole, cleanup →stopBareInitdboot-splash.js— Centered TTY boot splash (responsive frame, bar, log); cursor hidden untilprepareForKernel()fish-readline.js— History, completion helperscli-readline.js,resolve-stdio.js,debug-repl.js— Stdio and debug toolingpaths.js— Pear-safe package root and Corestore pathbare-os-pear-ipc-registry.js— Well-known Pear IPC channel names; JSON at/proc/bare_os/pear_ipc.json
Environment
BARE_OS_HOST_DATA— Base directory for host state (default~/.bare-os)BARE_OS_BOOT_STORE— Corestore directory (default~/.bare-os/corestore/booter)BARE_OS_LOCAL_SEED— OverridesdefaultLocalSeedCorestorePath(booter does not local-boot)BARE_OS_BOOT_TIMEOUT_MS— Total time to find peers + load kernel (default60000)BARE_OS_NO_SPLASH— Disable TTY splashBARE_OS_SKIP_REPL— Non-interactive kernel (readLine→ null)BARE_OS_FISH— Set0to disable fish-style editorHYPERSWARM_BOOTSTRAP— Optional comma-separated bootstrap nodes (HDMS / replication)
Copied from host into the guest session when set (non-exhaustive; see environment variables reference and CHANGELOG.md): BARE_OS_PIPELINE_MAX_STAGES, BARE_OS_PIPELINE_MAX_BYTES, BARE_OS_PIPELINE_MAX_LINES, BARE_OS_SHELL_PARAM_EXPANSION, BARE_OS_BOOT_PROFILE, BARE_OS_ONBOOT, BARE_OS_BOOT_STRICT, BARE_OS_RC_D_SKIP, BARE_OS_BOOT_MINIMAL, BARE_OS_BOOT_SKIP, BARE_OS_BOOT_TRACE, BARE_OS_KERNEL_SELFTEST, BARE_OS_SELFTEST_FORMAT, BARE_OS_AUDIT, BARE_OS_AUDIT_JSON, BARE_OS_AUDIT_REDACT, BARE_OS_BOOT_ALLOWLIST, BARE_OS_EXEC_MAX_DEPTH, BARE_OS_EXEC_LINE_BUDGET_MS, BARE_OS_IPC_MAX_BYTES, BARE_OS_IPC_RPC_TOKEN, BARE_OS_IPC_FANOUT, BARE_OS_IPC_JSON_MAX_BYTES, BARE_OS_HTTP_ALLOWLIST, BARE_OS_HTTP_DENYLIST, BARE_OS_TLS_PIN_SHA256, BARE_OS_VFS_WATCH, BARE_OS_IMAGE_DIGEST, BARE_OS_TELEMETRY_NDJSON, BARE_OS_TELEMETRY_OTEL_JSONL, BARE_OS_PROC_POLL_MS, BARE_OS_DELEGATE_MAX_PER_MIN, BARE_OS_DELEGATE_AUDIT_ONLY, BARE_OS_PEAR_CHANNEL, BARE_OS_PEAR_RELEASE, BARE_OS_BARE_MODULES, BARE_OS_BARE_DRIVE_BUNDLES, TERM, COLORTERM, PEAR_CHANNEL.
Tests
npm test -w bare-os-booter
brittle-bare test.identity.js— crypto account codec (Bare)brittle-node test.js— Hyperdrive, VFS, shell, kernel runner, cron matchers, etc.
Pear staging
pear.stage includes hoisted ../../node_modules. Run scripts/ensure-pear-node-modules.mjs from the repo root before pear run so the app package sees symlinked deps (see root README).
See also
- Developer guide — Bare modules
- Handbook — Booter runtime
- Booter reference §12 —
packages/bare-os-coreutils/lib/commands.mjsis the authoritative/binname list