Odysseus:自托管AI工作空间,本地优先隐私优先
Odysseus 是一个开源自托管 AI 工作空间,提供类似 ChatGPT 和 Claude 的界面体验,支持本地模型聊天、智能体、深度研究、文档编辑等功能,强调数据隐私和本地运行。
─────────────────────────────────────────────── ⊹ ࣪ ˖ ૮( ˶ᵔ ᵕ ᵔ˶ )っ Odysseus 版本 1.0 ───────────────────────────────────────────────一个自托管
的 AI 工作空间——旨在成为 ChatGPT 和 Claude 那种 UI 体验的自托管版本。但更随性、更有趣。运行在你自己的硬件上,使用你自己的数据——本地优先、隐私优先,且没有木马。- 聊天——与任何本地模型或 API 聊天;
添加它们非常简单。支持 vLLM、llama.cpp、Ollama、OpenRouter、OpenAI。- 智能体——交给它工具,让它自己运行整个任务。基于 opencode、MCP、web、文件、shell、技能、记忆构建。
- Cookbook——扫描你的硬件,推荐模型,点击即可下载和服务。很简单!基于 llmfit、VRAM 感知、GGUF/FP8/AWQ、适配评分、vLLM/llama.cpp 服务。- 深度研究——多步骤运行,收集、阅读并综合来源,生成漂亮的视觉报告。
改编自通义 DeepResearch。- 比较——一个并排比较模型的有趣工具。完全盲测,没有偏见!多模型、盲测、综合。- 文档——你写文本,AI 在那里协助,而不是相反。多标签编辑器、Markdown、HTML、CSV、语法高亮、AI 编辑、建议。
- 记忆/技能——持久的记忆和技能,你的智能体随着时间推移而进化,因为它更好地理解你和你的任务!
ChromaDB、fastembed (ONNX)、向量+关键词检索、导入/导出。- 电子邮件——内置 AI 分类的 IMAP/SMTP 收件箱:紧急提醒、自动标签、自动摘要、自动回复草稿、自动垃圾邮件。
IMAP、SMTP、按账户路由、CalDAV 感知。- 笔记与任务——带提醒的快速笔记、待办事项列表,以及智能体可以执行的计划任务。笔记提醒、清单、cron 风格任务、ntfy/浏览器/电子邮件频道。
- 日历——本地优先日历,通过 CalDAV 同步到 Radicale/Nextcloud/Apple/Fastmail。CalDAV 拉取、.ics 导入/导出、按日历颜色、智能体感知。- 移动端支持——在手机上看起来和运行起来都很棒,而不仅仅是桌面。
响应式、可安装 (PWA)、触摸手势。- 额外功能——更多值得探索,如果你尝试一下,我会很高兴!图像编辑器、主题编辑器、文件上传(视觉+PDF)、网络搜索、预设、会话、2FA。完整的悬停式导览位于首页 (docs/index.html)。
一些外观:默认设置开箱即用——克隆、运行、在应用内配置。首次登录后打开设置面板,将 Odysseus 指向你的 LLM 服务器、搜索提供商、电子邮件账户等。
仅当你需要覆盖部署级别的内容(如 AUTH_ENABLED、DATABASE_URL 或预置 ODYSSEUS_ADMIN_PASSWORD)时才需要编辑 .env 文件(否则初始密码会在首次启动时生成并打印)。
git clone <你的-odysseus-仓库-url>cd odysseuscp .env.example .
env # 可选,但建议用于显式默认值docker compose up -d --buildCompose 会启动 Odysseus、ChromaDB、SearXNG 和 ntfy。首次运行会进行完整的镜像构建。
容器健康后打开 http://localhost:7000。Cookbook 远程服务器使用 Odysseus 拥有的 SSH 密钥,位于 Docker 内的 ./data/ssh 中。
在 Cookbook -> 设置 -> 服务器中,生成/复制公钥并添加到远程服务器的 ~/.ssh/authorized_keys。
生成密钥后,你也可以从主机安装它:ssh-copy-id -i data/ssh/id_ed25519.pub user@serverCookbook 本地下载存储在 ./data/huggingface 中,
挂载为 Odysseus 容器内的 ~/.cache/huggingface。有用的检查:
docker compose psdocker compose logs --tail=120 odysseusdocker compose logs odysseus | grep -E 'ChromaDB|MemoryVectorStore|DEGRADED'dock
er compose exec odysseus python -c "from services.hwfit.models import get_models;
print(len(get_models()))"Docker 中预期的向量内存启动行:ChromaDB connected: chromadb:8000MemoryVectorStore initializedCookbook 模型目录检查应打印非零计数。
如果打印 0,请使用 docker compose build --no-cache odysseus 重建 Odysseus 镜像。要求:Python 3.11+。在 Linux/Termux 上,Cookbook 还需要 tmux 用于后台模型下载和服务。
首先安装系统包:# Debian/Ubuntusudo apt install tmux# Archsudo pacman -S tmux# Fedorasudo dnf install tmux然后安装 Odysseus:
git clone <你的-odysseus-仓库-url>cd odysseuspython3 -m venv venvsource venv/bin/activatepip install -r requirements.txtpython setup.py # 创建
数据目录并打印初始管理员密码uvicorn app:app --host 0.0.0.0 --port 7000Windows 支持未经过积极测试。谨慎使用;Linux 上的 Docker 或 Linux/macOS 手动安装是目前更安全的路径。
git clone <你的-odysseus-仓库-url>cd odysseuspython -m venv venvvenv\Scripts\Activate.ps1pip install -r requirements.txtpython setup.pyuvico
rn app:app --host 0.0.0.0 --port 7000打开 http://localhost:7000,使用生成的管理员密码登录,并在设置中配置其他所有内容。
Odysseus 是一个自托管的工作空间,具有强大的本地工具:shell 访问、文件上传、模型下载、网络研究、电子邮件/日历集成和 API 令牌。把它当作一个管理控制台。- 对于任何网络可访问的部署,保持 AUTH_ENABLED=true。
- 如果没有 HTTPS 和受信任的反向代理,请勿将其直接暴露给公共互联网。- 将 data/、.env、日志、数据库以及上传/生成的媒体排除在 Git 之外。默认情况下它们会被忽略。
- 首次启动后检查 data/auth.json:禁用开放注册(除非你有意开启),仅将自己的账户设为管理员,并保持演示/测试账户为非管理员。
- 默认情况下,非管理员用户无法使用 shell/Python/文件读写,并且仅限管理员的路由/工具(如 MCP 管理、API 令牌、webhook、模型/Cookbook 服务、备份/保管库和应用设置)受管理员控制。
其他功能由每个用户的权限控制,因此在公开部署前请检查每个用户的权限。- 轮换任何曾粘贴到共享聊天、演示、截图或日志中的 API 密钥或令牌。- 如果你启用 API 令牌或 webhook,请为每个集成创建单独的令牌,并删除未使用的令牌。
- 优先将手动开发运行绑定到 127.0.0.1;仅当你有意需要 LAN/反向代理访问时才绑定到 0.0.0.0。
- 在发布 fork 之前,运行 git status --short 并确认没有来自 .env、data/、logs/、上传、备份或本地数据库的私有文件被暂存。Odysseus 在其端口上提供纯 HTTP 服务。
这对于 localhost 和受信任的 LAN/VPN 使用来说没问题,但浏览器会发出警告(“不安全页面上存在密码字段”),并且登录信息和 API 令牌以明文形式传输。
对于你的机器外部可访问的任何内容(包括与其他设备共享的 Tailscale IP),请在前面放置一个 TLS 终止反向代理。
使用 Caddy 的最短路径(自动续期 Let's Encrypt 证书):odysseus.example.com { reverse_proxy localhost:7000}对于仅限 LAN 的 Tailscale 部署,
Caddy + tailscale-cert 或内置的 MagicDNS HTTPS 功能都适用。nginx/Traefik 配置类似——代理 localhost:7000,在代理处终止 TLS。
一旦设置完成,浏览器警告就会消失,你的登录信息也会被加密。欢迎提供帮助。最好的切入点是新安装测试、提供商设置错误、移动端/编辑器打磨、文档和小型集中重构。请参阅 ROADMAP.md 了解当前的求助列表。
大多数设置都在应用内通过 /setup 或设置完成。使用 .env 文件设置部署级别的默认值和希望在首次启动前存在的秘密。关键设置:Docker Compose 默认包含这些。
捆绑的服务端口绑定到 127.0.0.1,除非你在 .env 中选择不同的绑定地址,因此默认情况下它们可以从主机访问,但不能从你的 LAN 或公共互联网访问:- ChromaDB → 语义记忆的向量存储。
在 Docker 中,Odysseus 连接到 chromadb:8000;从主机暴露为 ${CHROMADB_BIND:-127.0.0.1}:8100。- SearXNG → 网络搜索的元搜索引擎。
在 Docker 中,Odysseus 连接到 searxng:8080;从主机暴露为