Running Odysseus natively — without Docker — is the right choice when you want to use your hardware’s GPU directly. On Apple Silicon, Docker runs inside a Linux VM and cannot access the Metal GPU, so native installation is the only way to get GPU-accelerated model serving via llama.cpp on an M-series Mac. On Linux, native installation is a straightforward alternative to Docker if you prefer managing the Python environment yourself or are running on a host where Docker is not available.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pewdiepie-archdaemon/odysseus/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
| Requirement | Notes |
|---|---|
| Python 3.11+ | 3.12 or 3.13 also work |
tmux | Required by Cookbook for background model downloads and serves |
| Git | Required for cloning and Cookbook background operations |
Linux Setup
Install Python dependencies
pip install -r requirements-optional.txt afterwards — see Optional Dependencies below.Run first-time setup
data/ directory structure, initialises the database, and prints a one-time admin password on first run. It is safe to re-run.Use
--host 0.0.0.0 only when you intentionally want LAN or reverse-proxy access. See HTTPS & Network for security steps to take before binding outside loopback.Apple Silicon
Docker on macOS cannot use the Metal GPU. For GPU-accelerated Cookbook on an M-series Mac, run Odysseus natively using the provided launcher script. It installs Homebrew dependencies, creates the Python virtual environment, runs first-time setup, and starts the server — and it is safe to re-run.Run the macOS launcher
tmux and llama.cpp (Metal-enabled) via Homebrew if they are not already present, creates venv/, installs Python packages, runs setup.py, and starts uvicorn.vLLM and SGLang are CUDA/ROCm-only and do not run on macOS. Cookbook uses llama.cpp (via the Homebrew
llama.cpp formula) and Ollama for Metal-accelerated inference. MLX-only models are not served by Odysseus.Exposing Odysseus to Your Phone (LAN / Tailscale)
To reach Odysseus from another device on your network or over Tailscale, bind to all interfaces before starting the script:APP_BIND=0.0.0.0 in .env — the script reads .env at startup, so the override is picked up automatically on every subsequent run without a command-line prefix.
Keep AUTH_ENABLED=true (the default) before binding outside loopback.
macOS App Wrapper
To build a clickable.app that launches Odysseus from your Dock or Launchpad:
venv/ environment created by start-macos.sh.
Running as a systemd Service (Linux)
To run Odysseus as a background service that starts on boot, use the provided service file and installer:Edit the service file
Open
odysseus-ui.service and replace the placeholder values with your username and install path:Install and enable the service
/etc/systemd/system/, reloads the systemd daemon, enables the unit, and starts it immediately.Optional Dependencies
requirements-optional.txt contains packages that unlock extra features but are not installed by default:
| Package | Feature |
|---|---|
faster-whisper | Local speech-to-text via the “local” STT provider |
duckduckgo-search | DuckDuckGo as a search provider option |
PyMuPDF | PDF page rendering in the side viewer panel and form-filling (AGPL-3.0) |
markitdown | Office/EPUB document text extraction (.docx, .xlsx, .pptx, .epub → Markdown) |
Next Steps
- Configure models and providers — open Settings inside the app after first boot
- Expose Odysseus over HTTPS — see HTTPS & Network
- GPU setup for Docker — see GPU Setup