Skip to content

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.

{
"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.

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.

  • Web search - the model can call web_search, which hits DuckDuckGo (or your configured backend). Add "web_search" and "web_fetch" to permissions.deny, or just stay in manual mode 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.

~/.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.