← Back to Home

Odysseus — Self-Hosted AI Workspace (ChatGPT Alternative for Your Own Hardware)

Odysseus — Self-Hosted AI Workspace

A new star appeared on the self-hosted scene last week and rocketed to 23,000+ GitHub stars in days. Odysseus is a full-featured AI workspace that runs entirely on your own hardware — no cloud dependency, no data leaving your network, no subscription fees. Think of it as the self-hosted version of the ChatGPT/Claude UI experience, with more features: chat with any local or API model, autonomous agents, deep research, documents, email/calendar integration, a model cookbook, persistent memory, and skills.

What makes Odysseus special is its all-in-one design. Instead of cobbling together Ollama + Open WebUI + LangFlow + a calendar app + an email client + a note-taking tool, you get everything under one roof with a single docker compose up. It's ambitious, it's early, and it's already stunningly functional.

Why Is Odysseus Trending?

  • 23,000+ stars in 2 days — one of the fastest-growing self-hosted projects of 2026
  • Complete ChatGPT replacement — chat, agents, deep research, documents, email, calendar, notes, all local-first
  • Privacy-first — no data leaves your machine unless you explicitly connect external APIs
  • Works on mobile — responsive PWA with touch gestures
  • Easy to install — single docker compose up -d with sensible defaults
  • MIT license — free to use, modify, and share

Architecture Overview

Odysseus Architecture

Odysseus is built as a modular monolith running inside a Docker Compose stack. The core is a Python FastAPI server that serves a responsive SPA frontend. Around it, bundled sidecar services handle vector storage (ChromaDB), web search (SearXNG), and notifications (ntfy). The architecture is designed so every component can be swapped or pointed at external services.

Core Components

  • FastAPI App (app.py) — the central HTTP server, routing, and business logic
  • Frontend (static/) — a single-page application served by the FastAPI app itself. Modular JS modules for Chat, Agent, Cookbook, Documents, Email, Calendar, Notes, Settings, and Compare
  • LLM Core (src/llm_core) — abstraction layer over any OpenAI-compatible endpoint: vLLM, Ollama, llama.cpp, OpenRouter, or commercial APIs
  • Agent Loop (src/agent_loop) — built on top of opencode, with MCP tools, shell access, file operations, memory retrieval, and web search
  • Cookbook (services/hwfit) — VRAM-aware model recommender. Scans your hardware, suggests compatible models, downloads GGUF/FP8/AWQ files, and serves them via vLLM or llama.cpp
  • Memory (services/memory) — persistent memory using ChromaDB + keyword retrieval (fastembed ONNX), supporting vector + keyword hybrid search, with import/export
  • Email (services/email) — IMAP/SMTP inbox with AI triage: auto-summary, urgency detection, auto-reply drafts, spam filtering
  • Calendar (services/calendar) — CalDAV sync (Radicale, Nextcloud, Apple, Fastmail), .ics import/export, agent-aware
  • Search (services/search) — configurable SearXNG instance or any other search backend
  • Auth (core/auth) — built-in authentication with admin/non-admin roles, 2FA, session management, API tokens

Sidecar Services (Docker Compose)

Service Port Role
ChromaDB 8100 Vector database for memory/skills
SearXNG 8080 Privacy-respecting meta search
ntfy 8091 Push notifications (desktop + mobile)

Data Flow

When a user sends a message in the Chat UI:

  1. The frontend sends the message to the FastAPI /chat endpoint
  2. The chat processor (src/chat_processor) builds the prompt context: conversation history + relevant memory chunks from ChromaDB
  3. The LLM Core forwards the request to the configured model endpoint (local or API)
  4. The generated response streams back to the frontend via Server-Sent Events
  5. The conversation is stored in SQLite (data/app.db)
  6. Memory vectors are optionally updated in ChromaDB

For Agent tasks, the flow extends:

  1. The agent loop receives a user goal
  2. It retrieves relevant skills and memory
  3. The agent plans steps using the LLM and executes them using available tools (web search via SearXNG, file read/write, shell commands, MCP tools)
  4. Results accumulate into the agent's context until the task completes

Prerequisites

  • A machine with at least 4GB RAM (8GB+ recommended, 16GB+ if running local models)
  • Docker and Docker Compose (v2.17+)
  • For GPU acceleration: NVIDIA GPU with nvidia-container-toolkit installed
  • For local models: 16GB+ RAM or VRAM (the Cookbook downloads models automatically)
  • Python 3.11+ (if running natively instead of Docker)
  • Git

Installation

Docker (Recommended)

git clone https://github.com/pewdiepie-archdaemon/odysseus.git
cd odysseus
cp .env.example .env        # optional — defaults work out of the box
docker compose up -d --build

Wait for the containers to become healthy, then open http://localhost:7000.

On first boot, Odysseus creates the admin account and prints a temporary password in the container logs. Grab it:

docker compose logs odysseus | grep -i "password"

Use that password to log in, then change it in Settings.

Native Installation (Linux/macOS)

git clone https://github.com/pewdiepie-archdaemon/odysseus.git
cd odysseus
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python setup.py
python -m uvicorn app:app --host 127.0.0.1 --port 7000

For macOS with Apple Silicon (GPU support):

./start-macos.sh

This launches on http://127.0.0.1:7860 (port 7000 is often taken by AirPlay).

Windows

git clone https://github.com/pewdiepie-archdaemon/odysseus.git
cd odysseus
powershell -ExecutionPolicy Bypass -File .\launch-windows.ps1

Configuration

Most configuration happens inside the app under Settings. The .env file is only for deployment-level overrides:

Variable Default Description
APP_PORT 7000 Web UI host port
APP_BIND 127.0.0.1 Bind address (use 0.0.0.0 for LAN/proxy)
AUTH_ENABLED true Enable authentication
DATABASE_URL sqlite:///./data/app.db Database connection string
SEARXNG_INSTANCE http://localhost:8080 Web search backend URL
CHROMADB_HOST localhost Vector database host
OPENAI_API_KEY Optional API key for OpenAI providers

Adding Models

Go to Settings → Providers and add an OpenAI-compatible endpoint:

  • Local (Ollama): http://host.docker.internal:11434/v1
  • Local (vLLM): http://host.docker.internal:8000/v1
  • Cloud (OpenRouter): Add your API key and select models

Or use the Cookbook tab to auto-detect your hardware, get model recommendations, download, and serve models with one click.

Key Features in Detail

💬 Chat & Compare

Chat with any model — local or API — in a familiar ChatGPT-style interface. The Compare feature lets you pit two models side by side in a blind test, showing results without revealing which model produced which output. Great for model evaluation.

🤖 Agent System

The agent uses opencode under the hood with MCP tools, shell access, file operations, web search, and memory. You can define reusable skills that the agent learns over time. It's more capable than a simple chat — it can browse the web, read and write files, execute shell commands, and run multi-step research workflows.

🔬 Deep Research

Multi-step research runs that gather, read, and synthesize sources into a clean visual report. Adapted from Alibaba's DeepResearch, it searches the web, extracts content from pages, summarizes findings, and builds a structured report — all autonomously.

📚 Cookbook — Model Manager

The Cookbook is one of Odysseus's standout features:

  1. Hardware scan — detects your GPU, VRAM, and system RAM
  2. Model recommendations — suggests compatible models (GGUF, FP8, AWQ) with a "fit score"
  3. One-click download — downloads models directly from Hugging Face
  4. Auto-serve — launches vLLM or llama.cpp to serve the downloaded model
  5. Remote servers — can install and serve models on remote machines via SSH

📧 Email & Calendar

  • Email: Connect any IMAP/SMTP account. AI triage auto-tags, summarizes, drafts replies, detects urgency, and filters spam. CalDAV-aware for meeting scheduling.
  • Calendar: Local-first calendar with CalDAV sync (Radicale, Nextcloud, Apple, Fastmail). Import/export .ics files. Agent-aware — the agent can check your calendar when planning tasks.

🧠 Memory & Skills

  • Persistent memory: Everything you discuss contributes to a vector + keyword memory store (ChromaDB + fastembed ONNX)
  • Skills: Define reusable skill packages — instructions + tools that the agent can invoke
  • Import/export: Share skills and memory across instances

Verification Checklist

After installation, verify everything works:

  • Login workshttp://localhost:7000 shows the login page
  • Admin setup complete — temporary password retrieved from logs, changed in Settings
  • Chat works — send a message to the default model provider
  • Settings accessible — can navigate to Settings → Providers
  • Cookbook loads — hardware detection screen appears in the Cookbook tab
  • Memory active — check Settings → System for ChromaDB status (should not show "DEGRADED")
  • Web search configured — SearXNG is reachable (default :8080) or you've added an alternative
  • Docker containers healthydocker compose ps shows all services as Up

Production Deployment

For a production setup:

  1. Put Odysseus behind a reverse proxy (Caddy, nginx, Traefik) with HTTPS
  2. Keep AUTH_ENABLED=true and SECURE_COOKIES=true
  3. Never bind to 0.0.0.0 without HTTPS and a proxy
  4. Consider using Cloudflare Access or Tailscale for private access
  5. Review data/auth.json after first boot — disable open signup

Resources

← Retour à l'Accueil

Odysseus — Espace de Travail IA Auto-Hébergé (Alternative à ChatGPT sur Votre Propre Matériel)

Odysseus — Espace de Travail IA Auto-Hébergé

Une nouvelle étoile est apparue dans le monde de l'auto-hébergement la semaine dernière et a atteint 23 000 étoiles GitHub en quelques jours. Odysseus est un espace de travail IA complet qui fonctionne entièrement sur votre propre matériel — pas de dépendance au cloud, aucune donnée ne quitte votre réseau, aucun abonnement. Considérez-le comme la version auto-hébergée de l'expérience ChatGPT/Claude, avec encore plus de fonctionnalités : chat avec n'importe quel modèle local ou API, agents autonomes, recherche approfondie, documents, intégration email/calendrier, un gestionnaire de modèles, une mémoire persistante et des compétences.

Ce qui rend Odysseus spécial, c'est sa conception tout-en-un. Au lieu d'assembler Ollama + Open WebUI + LangFlow + une application de calendrier + un client email + un outil de notes, vous obtenez le tout sous un même toit avec un simple docker compose up. C'est ambitieux, c'est récent, et c'est déjà impressionnant de fonctionnalité.

Pourquoi Odysseus est Tendance ?

  • 23 000+ étoiles en 2 jours — l'un des projets auto-hébergés à la croissance la plus rapide de 2026
  • Remplacement complet de ChatGPT — chat, agents, recherche approfondie, documents, email, calendrier, notes, le tout en local-first
  • Confidentialité avant tout — aucune donnée ne quitte votre machine sauf si vous connectez explicitement des API externes
  • Fonctionne sur mobile — PWA responsive avec gestes tactiles
  • Installation facile — un seul docker compose up -d avec des valeurs par défaut sensées
  • Licence MIT — gratuit à utiliser, modifier et partager

Architecture

Architecture Odysseus

Odysseus est construit comme un monolithe modulaire fonctionnant dans une pile Docker Compose. Le cœur est un serveur Python FastAPI qui sert une SPA responsive. Autour, des services auxiliaires embarqués gèrent le stockage vectoriel (ChromaDB), la recherche web (SearXNG) et les notifications (ntfy). L'architecture est conçue pour que chaque composant puisse être remplacé ou pointé vers des services externes.

Composants Principaux

  • Application FastAPI (app.py) — le serveur HTTP central, le routage et la logique métier
  • Frontend (static/) — une application monopage servie par l'application FastAPI elle-même. Modules JS modulaires pour Chat, Agent, Cookbook, Documents, Email, Calendrier, Notes, Paramètres et Comparaison
  • Noyau LLM (src/llm_core) — couche d'abstraction pour tout endpoint compatible OpenAI : vLLM, Ollama, llama.cpp, OpenRouter ou API commerciales
  • Boucle d'Agent (src/agent_loop) — construite sur opencode, avec outils MCP, accès shell, opérations fichiers, récupération mémoire et recherche web
  • Cookbook (services/hwfit) — recommandateur de modèles conscient de la VRAM. Scanne votre matériel, suggère des modèles compatibles, télécharge les fichiers GGUF/FP8/AWQ et les sert via vLLM ou llama.cpp
  • Mémoire (services/memory) — mémoire persistante utilisant ChromaDB + récupération par mots-clés (fastembed ONNX), supportant la recherche hybride vecteur + mot-clé, avec import/export
  • Email (services/email) — boîte de réception IMAP/SMTP avec triage IA : résumé automatique, détection d'urgence, brouillons de réponses, filtrage spam
  • Calendrier (services/calendar) — synchronisation CalDAV (Radicale, Nextcloud, Apple, Fastmail), import/export .ics, compatible agent
  • Recherche (services/search) — instance SearXNG configurable ou tout autre backend de recherche
  • Auth (core/auth) — authentification intégrée avec rôles admin/non-admin, 2FA, gestion de sessions, jetons API

Services Auxiliaires (Docker Compose)

Service Port Rôle
ChromaDB 8100 Base de données vectorielle mémoire
SearXNG 8080 Méta-recherche respectueuse de la vie privée
ntfy 8091 Notifications push (mobile + desktop)

Flux de Données

Lorsqu'un utilisateur envoie un message dans l'interface Chat :

  1. Le frontend envoie le message à l'endpoint /chat de FastAPI
  2. Le processeur de chat (src/chat_processor) construit le contexte : historique de la conversation + chunks de mémoire pertinents depuis ChromaDB
  3. Le noyau LLM transmet la requête au point de terminaison du modèle configuré (local ou API)
  4. La réponse générée est diffusée vers le frontend via Server-Sent Events
  5. La conversation est stockée dans SQLite (data/app.db)
  6. Les vecteurs mémoire sont optionnellement mis à jour dans ChromaDB

Pour les tâches Agent, le flux s'étend :

  1. La boucle d'agent reçoit un objectif utilisateur
  2. Elle récupère les compétences et la mémoire pertinentes
  3. L'agent planifie les étapes avec le LLM et les exécute à l'aide des outils disponibles (recherche web via SearXNG, lecture/écriture de fichiers, commandes shell, outils MCP)
  4. Les résultats s'accumulent dans le contexte de l'agent jusqu'à ce que la tâche soit terminée

Prérequis

  • Une machine avec au moins 4 Go de RAM (8 Go+ recommandé, 16 Go+ pour les modèles locaux)
  • Docker et Docker Compose (v2.17+)
  • Pour l'accélération GPU : GPU NVIDIA avec nvidia-container-toolkit installé
  • Pour les modèles locaux : 16 Go+ de RAM ou VRAM (le Cookbook télécharge les modèles automatiquement)
  • Python 3.11+ (si installation native au lieu de Docker)
  • Git

Installation

Docker (Recommandé)

git clone https://github.com/pewdiepie-archdaemon/odysseus.git
cd odysseus
cp .env.example .env        # facultatif — les valeurs par défaut fonctionnent
docker compose up -d --build

Attendez que les conteneurs soient opérationnels, puis ouvrez http://localhost:7000.

Au premier démarrage, Odysseus crée le compte admin et affiche un mot de passe temporaire dans les logs du conteneur :

docker compose logs odysseus | grep -i "password"

Utilisez ce mot de passe pour vous connecter, puis changez-le dans Settings.

Installation Native (Linux/macOS)

git clone https://github.com/pewdiepie-archdaemon/odysseus.git
cd odysseus
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python setup.py
python -m uvicorn app:app --host 127.0.0.1 --port 7000

Pour macOS avec Apple Silicon :

./start-macos.sh

Windows

git clone https://github.com/pewdiepie-archdaemon/odysseus.git
cd odysseus
powershell -ExecutionPolicy Bypass -File .\launch-windows.ps1

Configuration

La plupart de la configuration se fait dans l'application sous Settings. Le fichier .env est réservé aux surcharges de déploiement :

Variable Défaut Description
APP_PORT 7000 Port hôte de l'interface web
APP_BIND 127.0.0.1 Adresse de liaison
AUTH_ENABLED true Activer l'authentification
DATABASE_URL sqlite:///./data/app.db Chaîne de connexion base de données
SEARXNG_INSTANCE http://localhost:8080 URL du backend de recherche
CHROMADB_HOST localhost Hôte de la base vectorielle

Ajouter des Modèles

Allez dans Settings → Providers et ajoutez un endpoint compatible OpenAI :

  • Local (Ollama) : http://host.docker.internal:11434/v1
  • Local (vLLM) : http://host.docker.internal:8000/v1
  • Cloud (OpenRouter) : Ajoutez votre clé API et sélectionnez les modèles

Ou utilisez l'onglet Cookbook pour détecter automatiquement votre matériel, obtenir des recommandations de modèles, les télécharger et les servir en un clic.

Fonctionnalités Clés en Détail

💬 Chat & Comparaison

Discutez avec n'importe quel modèle — local ou API — dans une interface familière de type ChatGPT. La fonction Compare vous permet de confronter deux modèles côte à côte en test aveugle, montrant les résultats sans révéler quel modèle a produit quelle réponse. Idéal pour l'évaluation de modèles.

🤖 Système d'Agent

L'agent utilise opencode avec des outils MCP, un accès shell, des opérations fichiers, la recherche web et la mémoire. Vous pouvez définir des compétences réutilisables que l'agent apprend au fil du temps. Il peut naviguer sur le web, lire et écrire des fichiers, exécuter des commandes shell et effectuer des workflows de recherche en plusieurs étapes.

🔬 Recherche Approfondie

Des recherches multi-étapes qui collectent, lisent et synthétisent des sources en un rapport visuel structuré. Adapté de DeepResearch d'Alibaba, il cherche sur le web, extrait le contenu des pages, résume les résultats et construit un rapport — le tout de manière autonome.

📚 Cookbook — Gestionnaire de Modèles

Le Cookbook est l'une des fonctionnalités vedettes d'Odysseus :

  1. Scan matériel — détecte votre GPU, VRAM et RAM système
  2. Recommandations de modèles — suggère des modèles compatibles (GGUF, FP8, AWQ) avec un "score d'adéquation"
  3. Téléchargement en un clic — télécharge les modèles directement depuis Hugging Face
  4. Service automatique — lance vLLM ou llama.cpp pour servir le modèle téléchargé
  5. Serveurs distants — peut installer et servir des modèles sur des machines distantes via SSH

📧 Email & Calendrier

  • Email : Connectez n'importe quel compte IMAP/SMTP. Le triage IA étiquette, résume, rédige des brouillons, détecte l'urgence et filtre le spam. Compatible CalDAV pour la planification de réunions.
  • Calendrier : Calendrier local-first avec synchronisation CalDAV (Radicale, Nextcloud, Apple, Fastmail). Import/export de fichiers .ics. Compatible agent — l'agent peut consulter votre calendrier lors de la planification de tâches.

🧠 Mémoire & Compétences

  • Mémoire persistante : Chaque discussion contribue à un stockage mémoire vecteur + mot-clé (ChromaDB + fastembed ONNX)
  • Compétences : Définissez des packages de compétences réutilisables — instructions + outils que l'agent peut invoquer
  • Import/export : Partagez compétences et mémoire entre instances

Liste de Vérification

Après l'installation, vérifiez que tout fonctionne :

  • Connexion fonctionnellehttp://localhost:7000 affiche la page de connexion
  • Configuration admin terminée — mot de passe temporaire récupéré des logs, changé dans Settings
  • Chat fonctionnel — envoyez un message au fournisseur de modèle par défaut
  • Paramètres accessibles — navigation vers Settings → Providers
  • Cookbook chargé — écran de détection matérielle dans l'onglet Cookbook
  • Mémoire active — vérifiez Settings → System pour le statut ChromaDB
  • Recherche web configurée — SearXNG est accessible (port 8080 par défaut)
  • Conteneurs Docker sainsdocker compose ps montre tous les services Up

Déploiement en Production

Pour un déploiement en production :

  1. Placez Odysseus derrière un proxy inverse (Caddy, nginx, Traefik) avec HTTPS
  2. Gardez AUTH_ENABLED=true et SECURE_COOKIES=true
  3. Ne liez jamais à 0.0.0.0 sans HTTPS et un proxy
  4. Envisagez Cloudflare Access ou Tailscale pour un accès privé
  5. Vérifiez data/auth.json après le premier démarrage — désactivez l'inscription ouverte

Ressources