Security

Network walls

Decide exactly what a VM may reach, see every connection it made, and change the rules live.

What it is

Decide exactly what a VM may reach, and see every connection it made.

Each network card carries an egress policy: everything, nothing, the public internet only, or a named allow list. FlashVMM enforces it outside the guest and logs every connection and DNS lookup. Change the rules on a running VM, live.

Why it matters

Code an AI wrote reaches exactly the internet it needs; your router, your network and the host stay sealed off. The wall sits outside the VM, so nothing inside can lower it.

  • Private stays private. public opens the internet and closes every private address.
  • Every connection on record. Allowed and refused, with the rule that decided it.
  • Full speed. Rules on or off, traffic flows at 1,751 vs 1,679 Mbit/s.

Runs on

  • Linux x86_64
  • Linux arm64
  • macOS
  • Windows x64
  • Windows arm64

How it works

Set a policy at start, read the log, tighten it live.

CLI

flash run --bundle BUNDLE --id walled-1 --vcpus 1 --mem-mib 256 --egress public --detach
flash connections walled-1
flash set walled-1 --egress none

MCP

flash_connections(vm_id: "walled-1")
flash_api(vm_id: "walled-1", method: "PATCH", path: "/v1/flashvm/nics/0", body: {egress: "none"})

API

GET   /v1/flashvm/nics/{nic_index}/connections
PATCH /v1/flashvm/nics/{nic_index} {"egress": "none"}

The result

The internet reached, the router blocked, and a new rule in force without a restart.

The same fetch that worked a moment earlier is refused the instant the policy changes, and both are in the log.

How it works

Related

See it live: flash demo run 5