packages/bare-os-booter/index.js Added ctx.bareOsTelnetConnect(host, port, opts) that prefers ctx.bare.bareTcp.createConnection, then new bareTcp.Socket(), with explicit diagnostics if unavailable. packages/bare-os-coreutils/src/telnet.js already preferred ctx.bareOsTelnetConnect, so it now uses this richer path first automatically. Added missing ssh command: New file: packages/bare-os-coreutils/src/ssh.js Supports -h/--help Delegates to ctx.bareOsRunSshCli when present Emits explicit nonzero unavailable/runtime diagnostics when absent Registered command: packages/bare-os-coreutils/lib/commands.mjs Hardened HDMS create mount visibility: packages/bare-os-booter/lib/hdms-manager.js hdms create now verifies mount visibility via getMountMap().has(label) and errors non-silently if missing. Success message now includes mount path (mounted=/mnt/<label>). Fixed parser/semantics and explicit failures: packages/bare-os-coreutils/src/kill.js -1 is now treated as a target (not misparsed as signal shorthand), so kill -TERM -1 is explicit/non-silent. packages/bare-os-coreutils/src/test.js Numeric test comparisons now emit diagnostic + exit 2 for empty integer operand cases (keeps existing non-decimal behavior stable). packages/bare-os-coreutils/src/crontab.js Explicitly rejects stdin/fd-style installs (-, /dev/fd/*, /proc/self/fd/*) with nonzero error. Updated ctx typings: packages/bare-os-booter/lib/bare-os-ctx.d.ts Added bareOsRunSshCli? Added bareOsTelnetConnect?
bare-os-seeder
Pear / Bare application that owns the canonical system Hyperdrive: it walks a kernel tree on disk, writes /boot/init.js, /bin/*, /etc/* into the drive (no host temp dirs), builds a 512-byte MBR with the drive key, joins Hyperswarm on bare-os-v1, and serves MBR block reads + Protomux bare-os-v1 replication to peers.
When to use: run the seeder when you want to publish the canonical system image for booters to replicate (typical dev: one terminal with npm run os:seeder). Eligible already-booted peers can later mirror block 0, but the seeder remains the trust anchor for initial publication.
Documentation: Concepts — Boot · Seeder reference · User manual ch.3 · Protocol reference.
Run
From package directory (after npm ci at repo root):
node index.js
Or with Bare/Pear:
npm run pear:dev
From repo root (recommended — fixes workspace node_modules for Pear):
npm run os:seeder
Environment
BARE_OS_KERNEL_ROOT— Absolute path to kernel tree to stage (default: packagekernel/vendored copy, or repokernel/under Nodefile:URL)BARE_OS_HOST_DATA— Base directory for host state (default~/.bare-os)BARE_OS_SEED_STORE— Corestore directory (default~/.bare-os/corestore/seeder)BARE_OS_SEED_CAPABILITY_ATTESTATION_JSON— Optional JSON string for seed RPCbare_os.capability_attestation(operators verify on host; guest does not crypto-verify)
Pear vs Node
import.meta.urlisfile:— seeder may dynamically importbare-os-coreutils/build.mjsandbare-os-bare-libs/build.mjs, rebuilding/binandkernel/lib/barebefore staging.pear:bundle — coreutils and/lib/barebundles must be pre-built intokernel/; runnpm run build -w bare-os-coreutilsandnpm run build -w bare-os-bare-libsbeforepear run(rootnpm run os:seederdoes both).
Layout
index.js— Entry: Corestore, Hyperdrive,stageKernelTree, swarm,setupSeedChannel(RPCs include optionalbare_os.snapshot_hintsandbare_os.peer_firewall_statswhen implemented)lib/paths.js—packageRootDir, kernel root, Corestore path (Pear RTI–aware)kernel/— Vendored mirror of repokernel/for Pear staging — must matchkernel/byte-for-byte (npm testpretestrunsscripts/verify-kernel-seeder-parity.mjs)
Dependencies
bare-os-protocol (workspace), hyperdrive, corestore, hyperswarm, protomux, b4a, compact-encoding, safety-catch, bare-os.