# Air-gap mode

Air-gap mode is the deployment setting where Witbitz refuses every external network path it can control. It is for
environments where "no data leaves" must be a property you can inspect, not a vendor promise.

The short version: set `AIRGAP=1`, point the model to an in-boundary endpoint, and verify the browser and server both
name no outside hosts.

---

## Status

The runtime has a zero-egress switch. The remaining substantial work for a fully useful air-gapped tier is not the
Witbitz runtime itself; it is operating a self-hosted model with the quality the deployment requires, plus local
replacements for any external data tools you want to keep.

Read: [Enterprise and on-prem](./on-prem.md)

## What `AIRGAP=1` changes

| Layer | Behavior |
|---|---|
| Browser | Content-Security-Policy removes external hosts. |
| Server | External map, route, photo, URL, search, and flight paths are refused. |
| Tools | Internet-touching tools fail closed even if a Space configured them. |
| Model | Must be pointed at an in-boundary endpoint; otherwise the turn still leaves the network. |

## What still works

- chat
- agent turns against an in-boundary model
- document reading
- PDF generation
- charts
- diagrams
- shared widget state
- IdP admission against an in-boundary identity provider
- backup, restore, retention, logs

## What is disabled or needs a local replacement

- public web search
- external URL import
- Google Places photos/search
- map tiles, geocode, and routes unless self-hosted
- flights lookup unless backed by an in-boundary service
- remote model APIs

## Verify the browser boundary

Read the CSP header from the served app. In air-gap mode, it should name no external hosts:

```bash
curl -sD- https://space.your-co.com/ -o /dev/null | grep -i content-security-policy
```

## Verify the running build

Ask the local runtime what it is:

```bash
curl -sX POST https://space.your-co.com/space \
  -H 'content-type: application/json' \
  -d '{"op":"attest"}'
```

Then compare that build identity to the published source and your own deployment process.

## The trust story

Hosted Witbitz asks you to verify the operator's deployment. Air-gapped Witbitz removes the third-party operator from
the path. The check becomes supply-chain oriented:

- Is the image you run the audited source?
- Does the browser policy name no external host?
- Do server-side tools refuse outbound access?
- Is the model endpoint in-boundary?
- Are logs, backups, and retention under your control?

## Related pages

- [Deployment options](./deployment-options.md)
- [Enterprise and on-prem](./on-prem.md)
- [Verify it yourself](./verify.md)
