securityprivacytailscale

Odysseus Security & Safe Defaults

Odysseus is a powerful admin workspace — not a public chatbot. Start local, stay authenticated, and expand access only when you mean to.

Golden rule

Default to localhost only. Odysseus can run shell commands, read files, and hold API tokens — don't expose it like a consumer app.

Safe defaults checklist

  • Access via localhost first (7000 Docker/Windows, 7860 on Mac start-macos.sh)
  • Change the admin password after first login in Settings
  • Keep AUTH_ENABLED=true; leave LOCALHOST_BYPASS=false outside pure local experiments
  • Prefer Tailscale / VPN or a reverse proxy — not raw port forwards
  • Do not expose raw Odysseus port to the public internet
  • Do not expose ChromaDB, SearXNG, ntfy, or Ollama ports publicly
  • Never paste API keys into random websites or fake installers

LAN, Tailscale & APP_BIND

Prefer a private mesh VPN (e.g. Tailscale) over opening ports on your router. Put HTTPS at a reverse proxy when you leave loopback. Verify against the official setup guide before production.

Docker (.env)

terminal
# Docker — keep loopback by default (safe).
# Only change when you intentionally need LAN / reverse-proxy access.

# In .env:
APP_BIND=127.0.0.1
APP_PORT=7000

# Intentional LAN / proxy (trusted network only):
# APP_BIND=0.0.0.0
# Then put HTTPS + auth in front (Caddy, nginx, Cloudflare Access, etc.)
# Set SECURE_COOKIES=true when serving through HTTPS.

macOS + Tailscale

terminal
# macOS native (start-macos.sh) — default is http://127.0.0.1:7860

# Trusted Tailscale / LAN only:
ODYSSEUS_HOST=0.0.0.0 ./start-macos.sh
# Then open http://<tailscale-ip>:7860

# Keep AUTH_ENABLED=true. Do not port-forward 7860 to the public internet.

Windows native

terminal
# Windows native launcher binds 127.0.0.1 by default.
# Editing APP_BIND in .env alone does NOT change the launcher bind.

# Trusted LAN / Tailscale only:
powershell -ExecutionPolicy Bypass -File .\launch-windows.ps1 -BindHost 0.0.0.0

# Keep auth on. Prefer Tailscale over opening the port on your router.

Clipboard / copy buttons often fail over plain http:// Tailscale IPs — browsers require a secure origin. Use HTTPS (mkcert / reverse proxy) or access via localhost on the host.

Privacy boundary

Local-first ≠ offline-only. Here's what can leave your machine:

FeatureStays localMay leave machine
Local Ollama / Cookbook chatPrompts stay on your machineNothing, if no cloud API is configured
Cloud API (OpenAI, etc.)Settings stored locallyPrompts sent to your configured provider
Deep research / web searchReports saved locallyQueries may hit external search APIs
Agents, shell, MCP toolsRuns on your hardwareConnected tools may receive context you send

Related guides

FAQ

Common questions