Odysseus Portable is designed to be running in minutes regardless of your operating system. There is no installer, no system-level dependency to satisfy, and no administrator prompt — just download or clone the repository, run the startup script, and the orchestrator handles the rest. The steps below cover all three supported platforms.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/techjarves/Odysseus-Portable/llms.txt
Use this file to discover all available pages before exploring further.
Launch Instructions
- Windows
- macOS
- Linux
Download or clone the repository
Download the project as a ZIP from GitHub and extract it, or clone it with Git into any directory or USB drive:
Run the startup script
Double-click PowerShell is used internally for the Node.js bootstrap — no separate PowerShell window needs to be opened.
start.bat in Windows Explorer, or open a Command Prompt in the project folder and run:Wait for the first-run setup to complete
On first launch, the orchestrator downloads portable Node.js, a Python 3.12 embedded environment, and a CUDA/Vulkan/CPU-optimized
llama-server.exe binary — all into the bin\ folder. Setup completes automatically without user interaction.What Happens on First Launch
The orchestrator runs a multi-stage bootstrap sequence the very first time you start Odysseus Portable. Understanding each stage helps you diagnose slow starts or network errors.Hardware scan
The orchestrator reads your OS, CPU architecture, total RAM, and GPU. It probes
nvidia-smi for CUDA GPUs, checks for vulkan-1.dll / libvulkan.so.1 for Vulkan, and detects Apple Silicon automatically for Metal. The result determines which llama-server binary variant to download.Runtime bootstrap
Portable Node.js 22.16.0 is downloaded from
nodejs.org and extracted into bin/node-<os>-<arch>/ (macOS/Linux) or bin\node\ (Windows). A portable Python 3.12 environment is set up — via uv virtual environment on macOS/Linux, or via the official embedded zip on Windows. The hardware-matched llama-server binary is also downloaded and cached in bin/. This step runs once; all assets are reused on subsequent launches.Odysseus sync
The orchestrator clones the Odysseus web application source from GitHub into the
odysseus/ directory. If the directory already exists, it fast-forwards with git pull --ff-only when an internet connection is available. After cloning, a series of self-healing patches are applied to the Odysseus source to enable Windows path support, portable model-directory routing, and Ollama integration in the Cookbook UI.Backend start
Python dependencies for Odysseus are installed (or verified) in the portable Python environment. The database is seeded with the default admin credentials, and the Cookbook state is configured to point at the project’s
models/ folder. The selected inference backend — either llama-server or Ollama — is then started and the orchestrator waits for it to bind its port before proceeding.On subsequent launches, the runtime bootstrap step is skipped entirely because Node.js, Python, and llama-server are already cached in
bin/. Startup is significantly faster after the first run.Choosing an Inference Backend
The orchestrator selects the llama.cpp backend by default when no saved preference, environment variable, or CLI flag is present. You can override this at any time using a CLI flag or environment variable. When the backend cannot be determined from a saveddata/launcher_config.json config, an arg, or an environment variable, you will be prompted interactively:
| Option | Best For |
|---|---|
| [1] Ollama | Users who already have Ollama installed, or who prefer managing models through the Odysseus Cookbook web UI with one-click downloading and switching. |
| [2] llama.cpp | Maximum portability. The bundled llama-server binary runs entirely from the project folder with no external dependencies. GGUF models are stored in models/. |
Pre-selecting a Backend
You can skip the interactive prompt by passing a flag or setting an environment variable before launch:data/launcher_config.json and used as the default on all future launches — no re-prompting unless you delete that file.