Running offline / air-gapped
Polyglot’s design goal for this case: with a local model, no conversation data egresses. Here’s how to get all the way there.
1. Use a local model
Section titled “1. Use a local model”{ "provider": "openai-compatible", "baseURL": "http://localhost:11434/v1", "model": "qwen2.5-coder"}Prompts and tool output go only to that endpoint. Run /status - it flags the
endpoint as local when the host is localhost / 127.0.0.1.
2. Don’t leave transcripts on disk
Section titled “2. Don’t leave transcripts on disk”By default the full transcript is written to ~/.polyglot/sessions/<id>.jsonl in
plaintext, and proposed plans to ~/.polyglot/plans/.
{ "persistTranscripts": false }or POLYGLOT_NO_PERSIST=1, or the --no-persist flag. Nothing is written; --resume
still works within the same process.
Prefer keeping history but bounding it? "retentionDays": 7 deletes transcripts and
plans older than a week on startup.
3. Disable outbound calls
Section titled “3. Disable outbound calls”- Web search - the model can call
web_search, which hits DuckDuckGo (or your configured backend). Add"web_search"and"web_fetch"topermissions.deny, or just stay inmanualmode so each call prompts. - Version check - on startup Polyglot pings the npm registry to check for updates
(it sends nothing about your session). It runs even with
"autoUpdate": false. On a truly air-gapped machine it fails silently and never blocks startup; if you want to be sure, block the registry host at the network level.
4. What’s left
Section titled “4. What’s left”~/.polyglot/settings.json holds your config and may contain an apiKey - protect it
with file permissions / full-disk encryption like any other credential. Polyglot does
not encrypt its own files at rest; see the rationale in
Data handling.