veil
GitHub

Start here

Introduction

What veil is, who it is for and how your traffic flows through it.

What you will do
Learn what veil is, who it is for and how your traffic flows through it.
Before you start
Nothing. This page needs no setup.
What comes next
Read How it works, then follow the three guide steps, starting with Install.

Status: experimental. This is not an anonymity tool, and it has not had an external security review. Read the threat model and the known limitations before you rely on it.

What veil is and why it exists

AI coding tools, such as OpenCode, send your prompts and code to their vendor's servers. Every request also tells the vendor your home IP address. Your IP address can point to where you live.

veil wraps any command. You run veil run ... -- <tool> when you want the extra privacy, and you run the tool directly otherwise.

Inside veil, the tool runs in a sandbox: a closed box that can see only one project folder and has no network of its own. In the gateway profile, the only way out is a proxy that you host on your own network. A proxy is a server that makes connections on your behalf. Your proxy sends the traffic through Cloudflare WARP, so the vendor sees a Cloudflare address instead of yours. WARP is a free Cloudflare service, similar to a VPN, that carries your traffic in an encrypted tunnel and sends it out from a Cloudflare address.

veil fails closed. If the gateway is missing, veil refuses to start the tool. It never falls back to a direct connection. If a safeguard is unavailable, veil refuses to run instead of running the tool without isolation.

Who it is for

veil is for people who use an AI coding tool and do not want the tool's vendor to see their home IP address. OpenCode is the first tool tested end to end, and the examples use it. Any command-line tool that honors the HTTPS_PROXY environment variable can work the same way.

veil runs on Linux today. See Platforms for macOS and Windows.

How your traffic flows

Network flow of veil in the gateway profile The tool talks to a bridge inside the sandbox. The bridge forwards through a unix socket to veil on the host. veil connects over TCP to the gateway, where Privoxy checks the allowlist, wireproxy carries the traffic into the Cloudflare WARP tunnel, and WARP sends it to the vendor. The same steps are listed as text next to the diagram. Sandbox (bubblewrap, no network) AI tool uses HTTPS_PROXY In-sandbox bridge veil at 127.0.0.1:8118 Unix socket /run/veil/proxy.sock veil on the host connects over TCP Gateway (Docker on your LAN) Privoxy: domain allowlist wireproxy (SOCKS5) Cloudflare WARP tunnel Tool vendor sees a Cloudflare address

Text version of the diagram:

  1. The AI tool runs inside the sandbox and sends its traffic to the proxy named in HTTPS_PROXY.
  2. A copy of veil inside the sandbox, the bridge, listens on 127.0.0.1:8118.
  3. The bridge forwards the traffic through a unix socket, /run/veil/proxy.sock.
  4. veil on the host receives it and opens a TCP connection to the gateway.
  5. On the gateway, Privoxy allows only the listed domains, wireproxy carries them into the Cloudflare WARP tunnel, and WARP sends them to the vendor.

Ready to try it? The guide has three steps: install veil, set up the gateway and run a tool.

Start the guide