Air-gap Mode
Stop Andromity from using the internet. What air-gap mode blocks, what keeps working, how to allow a model server on your network, how it is enforced, what it does not cover, and how to verify it.
Air-gap mode stops Andromity from making network connections, except to this machine and the private-network hosts you allow, such as a shared model server. Use it with a local model when your code must not leave your network.
Air-gap mode controls what Andromity does. It is a guard inside Andromity, not a network boundary. For complete isolation, also block outbound traffic with your firewall, and check with your own monitoring. See Verify it yourself.
What happens when it is on
- Local models keep working. Ollama on this machine, or a model server on a host you allow, works as usual.
- Everything that needs the internet turns off, with a message saying why: cloud models, web search, remote MCP servers, sign-in, telemetry, update checks and downloads.
- Commands the agent runs are blocked from the internet where possible, and so is the terminal the code-block Run button opens.
- You can see it. The status bar shows a shield instead of the Andromity logo, and the prompt bar shows an Air-gap badge. Hover either one to see what Andromity can reach.
Turn it on
VS Code
- Open Settings → Preferences and turn on Air-gap Mode, or
- run Andromity: Air-gap Mode: Turn On or Off from the Command Palette.
Turning it on applies at once. Turning it off asks you to confirm first. Either way, the Andromity engine restarts, and the change applies from your next message.
Terminal app and headless runs
Add this to config.toml:
[default]
airgap = trueFor a project
Add this to the project's .vscode/settings.json:
{
"andromity.airGap.enabled": true
}A project can turn air-gap mode on but never off. If your user settings turn it on, a project's settings can't turn it back off.
For your organization
Set ANDROMITY_AIRGAP=1 in the environment VS Code or Andromity starts in, for example with your device management tool or a launch script. Air-gap mode is then locked on: the checkbox in Settings is greyed out and nobody can turn it off from inside Andromity.
Who can turn it off
| Turned on by | How to turn it off |
|---|---|
| Your user settings | Settings → Preferences → Air-gap Mode, or the Command Palette command. Asks first. |
A project's .vscode/settings.json | Edit that file. |
config.toml | Edit config.toml. |
ANDROMITY_AIRGAP=1 | Remove the variable and restart VS Code. Andromity can't turn it off. |
Allow a model server on your network
To use a model server on your network, add it to Allowed private hosts. The box is under Air-gap Mode in Settings → Preferences, and the setting is andromity.airGap.allowedHosts. Each entry can be:
| Entry | Example |
|---|---|
| An address | 10.0.0.5 |
| A range | 10.0.0.0/8 |
| A host name | gpu-box.lan |
| An address with a port (the port is ignored) | 192.168.1.50:11434 |
For the terminal app, use airgap_allowed_hosts in config.toml. Or set ANDROMITY_AIRGAP_ALLOW to a comma-separated list:
[default]
airgap = true
airgap_allowed_hosts = ["10.0.0.5", "gpu-box.lan"]Rules that keep this safe:
- Only private addresses count. Private, loopback and link-local addresses are accepted. Public addresses are ignored even if you list them, and Settings shows which entries were ignored.
- Host names must resolve privately. Andromity looks up a listed name, and connects only if the answer is a private address.
- A repository can't add hosts. Allowed hosts come only from your user settings,
config.tomlor the environment, never from a project's settings.
Then add the server as a custom connection with its address as the base URL.
What is blocked
| Feature | With air-gap mode on |
|---|---|
| Cloud models: Andromity Auto, Anthropic, OpenAI, OpenRouter, Google Gemini, DeepSeek, Groq, NVIDIA NIM | Blocked. Sending a message shows Blocked by Air-gap Mode with a Choose a local model button. |
| Ollama on this machine | Works. |
| A model server on an allowed host | Works. |
| Switching to another provider automatically (commit messages, inline edits) | Only to connections air-gap mode allows. |
| Web search and URL fetch tools | Removed. The agent doesn't see them, so it won't try to use them. |
| Remote MCP servers, and signing in to them | Paused, with Paused: air-gap mode is on. |
| Local MCP servers | Paused, because many reach the internet themselves. See Local MCP servers. |
| App connectors | Blocked. |
| Anonymous telemetry, tips and news | Off. |
| Model price list, model capability lookups, live model lists | Off. Andromity uses what it already knows. |
| Update checks and upgrades | Off. |
| Online skills catalog | Off. Installed skills keep working. |
| Automatic downloads (ripgrep, the Windows context-menu icon) | Off. |
| Installing the Andromity engine (VS Code) | Blocked. See Installing in an offline environment. |
| AgenticMarket sign-in and usage display | Off. Local models need no account. |
| Pull a model for Ollama from VS Code | Blocked. Copy model files in from an internal source, or pull them on a connected machine. |
| Commands the agent runs, and the code-block Run terminal | Run with the network blocked where possible. See How it is enforced. |
| Opening a link in your browser (documentation, provider pages) | Not blocked. That's your own action, outside Andromity. |
Local MCP servers
Air-gap mode pauses local MCP servers by default, because many of them reach the internet themselves. Common examples are npx and uvx downloading packages, and servers that call cloud APIs.
To run a local server you trust, add "allowInAirgap": true to it in mcp.json. It then starts with the same network blocking as commands the agent runs:
{
"mcpServers": {
"my-local-tools": {
"command": "my-local-tools",
"allowInAirgap": true
}
}
}How it is enforced
Andromity applies three layers:
- Inside Andromity itself. A guard starts before anything else loads, and blocks connections, UDP packets and DNS lookups to anything other than this machine and your allowed hosts. It also covers network code that loaded before it did, and the way Windows makes background connections, which an ordinary check would miss.
- In each feature. Features that need the internet turn themselves off and tell you why, so they don't depend on a connection failing.
- In commands the agent runs, and in the Run terminal:
- Python programs load the same guard.
- Every program's proxy settings point at a closed local port (
HTTP_PROXY,HTTPS_PROXY,ALL_PROXY, in upper and lower case).NO_PROXYlists only this machine and your allowed hosts. - Node's built-in
fetchis told to use those proxy settings, and git over SSH is refused. - Common network commands are refused outright, for example
curl,wget,ssh,git clone/fetch/push,pip installandnpm install. - An MCP server's own settings can't turn any of this off.
Every blocked attempt is recorded. Hover the status bar shield to see how many, and open View → Output → Andromity to see what they were.
What it does not cover
Know these limits before you rely on air-gap mode:
- Programs that ignore proxy settings. Proxy settings are a convention, not a control. curl, git over HTTPS, npm, pip, Go programs and many Rust tools follow them. A program that opens network connections directly is not stopped by Andromity.
- Low-level code in Python. Code that calls the operating system directly, such as through
ctypesor some native libraries, can get past the guard. - Python started with
-I,-Eor-S. These options skip the files that load the guard. - Everything outside Andromity. Other extensions, VS Code itself and your operating system are not affected.
- DNS for allowed host names. Looking up a host name you allowed sends a query to your DNS server.
For all of these, use your firewall.
Self-test
Check air-gap mode with Run self-test in Settings → Preferences, or Andromity: Air-gap Mode: Run Self-test. The self-test only runs while air-gap mode is on, so it never makes a real connection. It checks that these are blocked:
- a DNS lookup, a TCP connection, a UDP packet and an HTTPS request to the internet
- a background connection, the kind model and MCP clients make
- a Python program run by the agent
It also checks that commands get the proxy block, and that this machine is still reachable. Each check shows PASS or FAIL. A FAIL means Andromity didn't stop that case on this machine, so cover it with your firewall.
Verify it yourself
Don't rely on the self-test alone:
- Watch the traffic. Use a packet capture or your firewall's log while you work. You should see connections only to
127.0.0.1or::1and your allowed hosts. - Cut the network off. Block outbound traffic for the machine, or for VS Code, with your firewall. Then confirm Andromity keeps working with your local model.
- On Linux, run the terminal app inside a network namespace with no network access, for example
unshare -n.
Installing in an offline environment
On a machine with no internet access, the VS Code extension can't download the Andromity engine itself. Install the andromity Python package from your internal package mirror instead. Then point Python Path (andromity.pythonPath) at that Python. See Installation.
Every host Andromity can contact
With air-gap mode off, this is everything Andromity can connect to. With it on, all of these are blocked unless they are this machine or a host you allowed.
| Host | What for | When |
|---|---|---|
gateway.agenticmarket.dev | Andromity Auto models, usage display | When you use Andromity Auto |
api.anthropic.com, api.openai.com, generativelanguage.googleapis.com, openrouter.ai, api.deepseek.com, api.groq.com, integrate.api.nvidia.com, opencode.ai | Model replies and model lists | When you use that provider |
developers.openai.com, ai.google.dev, platform.claude.com | Which reasoning levels a model supports | When you choose a model |
raw.githubusercontent.com | Model price list; the Windows context-menu icon | At start |
telemetry.agenticmarket.dev | Anonymous telemetry, tips, news | Unless telemetry is off |
pypi.org, github.com | Update checks, upgrades, ripgrep, installing the engine | At start (checked at most daily) and when you update |
api.github.com, raw.githubusercontent.com | Skills catalog | When you browse or install skills |
DuckDuckGo, api.stackexchange.com, and the pages the agent fetches | Web search and URL fetch tools | When the agent uses them |
| Your MCP servers and their sign-in pages | MCP tools and sign-in | When servers start or you sign in |
agenticmarket.dev | Signing in | When you sign in |
localhost:11434, or your Ollama host | Ollama models | When you use Ollama |
Settings reference
| Where | Setting | Default | Meaning |
|---|---|---|---|
| VS Code | andromity.airGap.enabled | false | Turn on air-gap mode. A project can turn it on, not off. |
| VS Code | andromity.airGap.allowedHosts | [] | Private hosts Andromity may reach. User settings only. |
config.toml | [default] airgap | false | Turn on air-gap mode for the engine and the terminal app. |
config.toml | [default] airgap_allowed_hosts | [] | Private hosts Andromity may reach. |
| Environment | ANDROMITY_AIRGAP=1 | not set | Turn on air-gap mode and lock it on. |
| Environment | ANDROMITY_AIRGAP_ALLOW | not set | Comma-separated private hosts Andromity may reach. |
Folder Trust and Security
How Andromity's folder trust, agent profiles and permission modes control what the AI coding agent can read, change and run. Trusting and revoking folders, command and domain allowlists, protected files, network limits, air-gap mode, secrets and logs.
Permission Modes
What SAFE, TRUST, FULL and YOLO let the Andromity coding agent do without asking, what always needs your approval, and how to switch modes in VS Code, the terminal and config.toml.