Skip to content

HopOS app images

Choose a tag to compare

@xinix00 xinix00 released this 11 Aug 03:09
· 135 commits to main since this release

Ready-to-run HopOS app images — canonically linked, so one artifact runs in any slot. Drop a URL in a jobspec and the node streams it straight onto a partition.

Built 2026.09.09-0605 against metal v2.2.4 — all of them against the same one, verified to link zero gVisor symbols. Rolling: every publish replaces the assets, the URLs stay put.

welcome gives a fresh node a face: one self-contained HTML page on the published port, no env, no cluster key. This is the default hopos.init[] of the headless images (arm64 and riscv64).

hopos.init[]={"name":"welcome","driver":"hop","artifacts":[{"url":"https://github.com/xinix00/HopOS/releases/download/apps/welcome-arm64-tamago.elf","match":{"node.arch":"arm64"}},{"url":"https://github.com/xinix00/HopOS/releases/download/apps/welcome-riscv64-tamago.elf","match":{"node.arch":"riscv64"}}],"memory_limit":67108864,"ports":{"http":80}}

vitals is the board doctor: idle, CPU (including thermals), memory and network of the node it runs on.

hopdns / hoplb / hopprom are the cluster satellites — DNS, load balancer, metrics. Configured through jobspec env (HOP_ADDR defaults to 10.100.0.1:8080, the node itself): hopdns takes ER_PORT_DNS/HOPDNS_PEERS/HOPDNS_DOMAIN, hoplb takes ER_PORT_HTTP/ER_PORT_ADMIN/HOPLB_TAG, hopprom takes ER_PORT_METRICS/HOPPROM_INTERVAL. See the cmd/<app>-hopos mains.

{"name":"hopdns","driver":"hop","count":-1,
 "artifacts":[{"url":"https://github.com/xinix00/HopOS/releases/download/apps/hopdns-arm64-tamago.elf"}],
 "memory_limit":134217728,
 "ports":{"dns":5353},
 "env":{"HOP_API_KEY":"...","HOPDNS_DOMAIN":"hop.local"}}

cloudflared runs cloudflared's own tunnel run as a slot app: a node behind NAT, with no inbound port, reachable over Cloudflare Tunnel. It publishes no port (it dials out) and wants a ~256 MB partition. Without TUNNEL_TOKEN you get a quick tunnel whose trycloudflare URL shows up in hop logs cloudflared; without TUNNEL_URL it points at http://$HOPOS_HOST — port 80 of the node, so the welcome page by default. Config uses cloudflared's own env names (TUNNEL_TOKEN/TUNNEL_URL/TUNNEL_TRANSPORT_PROTOCOL/TUNNEL_LOGLEVEL, plus CFD_EXTRA_ARGS); the default protocol is http2 rather than quic, because QUIC through the per-slot netstack has not been measured.

{"name":"cloudflared","driver":"hop","artifacts":[
  {"url":"https://github.com/xinix00/HopOS/releases/download/apps/cloudflared-arm64-tamago.elf","match":{"node.arch":"arm64"}},
  {"url":"https://github.com/xinix00/HopOS/releases/download/apps/cloudflared-riscv64-tamago.elf","match":{"node.arch":"riscv64"}}],
 "memory_limit":268435456,
 "env":{"TUNNEL_TOKEN":"..."}}

The GUI apps (display, launcher, taskman, browser, …) live in hop-os-surf.