Skip to content

Owner network

By default, every box on a microVM host shares one open network segment — any box can reach any other, across owners. With --owner-network the daemon isolates boxes per owner and gives them names.

yaml
# /etc/hopbox/hopboxd.yaml
compute: microvm
owner-network: true

What it does

  • Isolation. A box reaches only its own owner's boxes (same SSH-key fingerprint) plus the host gateway (agent hub, metadata API, egress NAT). A different owner's boxes are unreachable — the traffic is dropped at layer 2.
  • Names. Inside a box, <name>.hbox resolves to your own box of that name. Another owner's name returns NXDOMAIN — you can neither resolve nor reach it.
sh
# two boxes of the same key:
ssh worker@host 'python3 -m http.server 8080 &'
ssh api@host 'curl http://worker.hbox:8080'   # → works (same owner)

How it works

The bridge stays flat (one /24, one gateway) — the single gateway keeps serving hub, metadata, NAT, and DNS unchanged. Isolation is an nftables ruleset in the bridge family: box↔gateway is allowed, same-owner box↔box is allowed via a set the daemon keeps in sync with the live fleet, and every other box↔box pair is dropped. Names come from a small owner-scoped resolver on the gateway (<subnet>.1:53) that identifies the querying box by its source IP — the same credential-free identity model as the metadata API.

Fail-closed. If the nft ruleset can't be programmed (e.g. nft isn't installed), the daemon refuses to start rather than run boxes on an open segment. It needs the nft binary on the host.

Notes

  • microVM backend only (--compute microvm); off by default.
  • Isolation is per owner (key fingerprint), not per box — all of your boxes form one private network and resolve each other by name.
  • Egress to the internet is unchanged and still governed by the box egress fence.

Reference

Instant isolated compute — for humans and AIs