narvi-1: a RISC-V runner (syscall tier) building the riscv64 releases issue #69 closed: completed andymccall opened this · 3 comments
andymccall set labels flow-next ·
Progress (2026-10-19):
flowbuilt natively on narvi (main-2b009250), installed at ~claude/flow/bin/flow.flow tiersunder a delegated user scope: syscall available, microvm unavailable (no /dev/kvm: the Ky X1 has no H extension).- Image: Ubuntu Base 24.04.5 riscv64 (sha256 and the cdimage signature checked) + build-essential, pkg-config, git, make, xz, curl + Rust 1.97.1 (rustfmt, clippy) via rustup + the same vendored crates as the x86 image (/opt/vendor, offline cargo config). Tarball sha256 68f6fe55…4fff, imported with CARGO_HOME/RUSTUP_HOME as cas://blob/b4edba9173ddf63aa1df46222e6a59b265071b19f2815c89d0153b593835c616.
- Smoke: a syscall-tier job built a crate from the vendored sources offline and ran it (57 s).
- User unit flow-runner.service written (Delegate=yes, KillMode=mixed, TimeoutStopSec=75min, MemoryMax=5G), not enabled until registered; linger is on.
- Waiting on: Andy mints a site registration token and runs
flow runner registeron narvi (the token never passes through Claude). Then: runner.toml limits (1 job, 4096 MiB, 6 CPUs, keyless, cache 60 GB), enable the unit, and add the native riscv64 check jobs to the oxygen and oxygenhub pipelines.
Done for oxygen (2026-10-19): narvi-1 is online (syscall tier, riscv64, flow main-bfe28437 with build caches, issue #70). oxygen's riscv64 job builds oxy natively and runs a signed init/commit/bookmark/merge/verify/fsck: passed in run 356, cold 41.4 min; rerun warm 0.2 min (cache restored, 249/249 unchanged, cargo 2.6 s). Native binary kept as artifact oxy-linux-riscv64-native with the receipt. Next: the same check for oh in oxygenhub's pipeline.
Done (2026-10-19): oxygenhub's riscv64 job passed in run 397: oh built natively on narvi-1 (cold 31 min, cache now kept) and run; artifact oh-linux-riscv64-native with the receipt. Together with oxygen's (run 356, warm rerun 0.2 min), every release is now checked on real RISC-V hardware. Closing.
andymccall closed ·
Andy's decisions (2026-10-19):
narviandriscv64, one job at a time, a 4 GiB cap. Syscall tier only: the Ky X1 has no hypervisor extension, so there is no /dev/kvm and no microVM tier. Landlock, user namespaces, seccomp and a delegated cgroup (user service with linger) are all present.flow rootfs import.Only jobs whose image is riscv64 are placed there (arch-aware placement), so x86 work never lands on it.