[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82679":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":21,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":16,"starSnapshotCount":16,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},82679,"odysseus","pewdiepie-archdaemon\u002Fodysseus","pewdiepie-archdaemon","Self-hosted AI workspace. ","",null,"Python",58679,7053,314,380,0,70,"MIT License",false,"main",true,[],"2026-06-07 04:07:08","# Odysseus\n───────────────────────────────────────────────\n ⊹ ࣪ ˖ ૮( ˶ᵔ ᵕ ᵔ˶ )っ  Odysseus vers. 1.0\n───────────────────────────────────────────────\n\n![Odysseus](docs\u002Fodysseus.jpg)\n\nA self-hosted AI workspace -- meant to be the self-hosted version of the UI experience you get from ChatGPT and Claude. But with more jank and fun. Running on your own hardware, with your own data -- local-first, privacy-first, and no trojan.\n\n## Features\n  - **Chat** -- chat with any local model or API; adding them is super simple.\u003Cbr>　\u003Csub>vLLM · llama.cpp · Ollama · OpenRouter · OpenAI\u003C\u002Fsub>\n  - **Agent** -- hand it tools and let it run the whole task itself.\u003Cbr>　\u003Csub>built on [opencode](https:\u002F\u002Fgithub.com\u002Fanomalyco\u002Fopencode) · MCP · web · files · shell · skills · memory\u003C\u002Fsub>\n  - **Cookbook** -- Scans your hardware, recommends models, click to download and serve.. easy!\u003Cbr>　\u003Csub>built on [llmfit](https:\u002F\u002Fgithub.com\u002FAlexsJones\u002Fllmfit) · VRAM-aware · GGUF \u002F FP8 \u002F AWQ · fit scoring · vLLM \u002F llama.cpp serving\u003C\u002Fsub>\n  - **Deep Research** -- multi-step runs that gather, read, and synthesize sources into a nice visual report.\u003Cbr>　\u003Csub>adapted from [Tongyi DeepResearch](https:\u002F\u002Fgithub.com\u002FAlibaba-NLP\u002FDeepResearch)\u003C\u002Fsub>\n  - **Compare** -- a fun tool to compare models side by side. Test completely blind, no bias!\u003Cbr>　\u003Csub>multi-model · blind test · synthesis\u003C\u002Fsub>\n  - **Documents** -- YOU write the text, AI is there to assist, not the opposite.\u003Cbr>　\u003Csub>multi-tab editor · markdown · HTML · CSV · syntax highlighting · AI edits · suggestions\u003C\u002Fsub>\n  - **Memory \u002F Skills** -- Persistent memory and skills, your agent evolves over time as it better understands you and your tasks!\u003Cbr>　\u003Csub>ChromaDB · fastembed (ONNX) · vector + keyword retrieval · import\u002Fexport\u003C\u002Fsub>\n  - **Email** -- IMAP\u002FSMTP inbox with AI triage built in: urgency reminders, auto-tag, auto-summary, auto-reply drafts, auto-spam.\u003Cbr>　\u003Csub>IMAP · SMTP · per-account routing · CalDAV-aware\u003C\u002Fsub>\n  - **Notes & Tasks** -- Quick notes with reminders, a todo list, and scheduled tasks the agent can act on.\u003Cbr>　\u003Csub>note pings · checklist · cron-style tasks · ntfy \u002F browser \u002F email channels\u003C\u002Fsub>\n  - **Calendar** -- Local-first calendar with CalDAV sync to Radicale \u002F Nextcloud \u002F Apple \u002F Fastmail.\u003Cbr>　\u003Csub>CalDAV pull · .ics import\u002Fexport · per-calendar colors · agent-aware\u003C\u002Fsub>\n  - **Works on mobile** -- looks and runs great on your phone, not just desktop.\u003Cbr>　\u003Csub>responsive · installable (PWA) · touch gestures\u003C\u002Fsub>\n  - **Extras** -- more to explore, happy if you give it a go!\u003Cbr>　\u003Csub>image editor · theme editor · file uploads (vision + PDF) · web search · presets · sessions · 2FA\u003C\u002Fsub>\n\n## Demo\nA full, hover-to-play tour lives on the landing page (`docs\u002Findex.html`).\n\n\u003Cdetails>\n\u003Csummary>Screenshots \u002F clips\u003C\u002Fsummary>\n\n### Chat & Agents\n![Chat & Agents](docs\u002Fchat.gif)\n### Deep Research\n![Deep Research](docs\u002Fresearch.gif)\n### Compare\n![Compare](docs\u002Fcompare.gif)\n### Documents\n![Documents](docs\u002Fdocument.gif)\n### Notes & Tasks\n![Notes & Tasks](docs\u002Fnotes.gif)\n\n\u003C\u002Fdetails>\n\n## Quick Start\n\nDefaults work out of the box: clone, run, then configure models\u002Fsearch\u002Femail\ninside **Settings**. Only edit `.env` for deployment-level overrides like\n`APP_BIND`, `APP_PORT`, `AUTH_ENABLED`, `DATABASE_URL`, or a pre-seeded admin password.\n\nOn first setup, Odysseus creates an admin account (`admin` unless\n`ODYSSEUS_ADMIN_USER` is set) and prints a temporary password in the terminal.\nFor Docker installs, the same line is in `docker compose logs odysseus`.\nUse that for the first login, then change it in **Settings**.\n\nContributing? See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, testing, and\npull request guidelines.\n\n### Docker (recommended)\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fpewdiepie-archdaemon\u002Fodysseus.git\ncd odysseus\ncp .env.example .env       # optional, but recommended for explicit defaults\ndocker compose up -d --build\n```\nOpen `http:\u002F\u002Flocalhost:7000` when the containers are healthy. Docker Compose\nbinds the web UI to `127.0.0.1` by default. If the port is taken, set\n`APP_PORT=7001` in `.env` and recreate the container. Set `APP_BIND=0.0.0.0`\nonly when you intentionally want LAN\u002Freverse-proxy access.\n\n### Native Linux \u002F macOS\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fpewdiepie-archdaemon\u002Fodysseus.git\ncd odysseus\npython3 -m venv venv\nsource venv\u002Fbin\u002Factivate\npip install -r requirements.txt\npython setup.py\npython -m uvicorn app:app --host 127.0.0.1 --port 7000\n```\nRequirements: Python 3.11+. Cookbook also needs `tmux` for background model\ndownloads and serves. Use `--host 0.0.0.0` only when you intentionally want\nLAN\u002Freverse-proxy access.\n\n### Apple Silicon\nDocker on macOS cannot use the Metal GPU. For GPU-accelerated Cookbook on an\nM-series Mac, run Odysseus natively:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fpewdiepie-archdaemon\u002Fodysseus.git\ncd odysseus\n.\u002Fstart-macos.sh\n```\n\nIt launches at `http:\u002F\u002F127.0.0.1:7860`. To build a clickable app wrapper:\n\n```bash\n.\u002Fbuild-macos-app.sh\n```\n\n\u003Cdetails>\n\u003Csummary>Cookbook, GPU, Ollama, and troubleshooting notes\u003C\u002Fsummary>\n\n**Docker bundled services.** Compose starts Odysseus, ChromaDB, SearXNG, and\nntfy. Odysseus and the bundled service ports bind to `127.0.0.1` by default, so\nthey are reachable from the host but not exposed to your LAN\u002Fpublic internet\nunless you opt in.\n\n**Cookbook storage in Docker.** Downloads live in `.\u002Fdata\u002Fhuggingface`\n(`~\u002F.cache\u002Fhuggingface` in the container). Cookbook-installed Python CLIs and\nserve engines live in `.\u002Fdata\u002Flocal` (`~\u002F.local` in the container), so they\nsurvive container recreation.\n\n**Remote servers.** In **Cookbook -> Settings -> Servers**, generate the\nOdysseus SSH key and add the public key to the remote server's\n`~\u002F.ssh\u002Fauthorized_keys`. From the host you can also run:\n\n```bash\nssh-copy-id -i data\u002Fssh\u002Fid_ed25519.pub user@server\n```\n\n**NVIDIA \u002F AMD Docker GPU overlays.** Install the host runtime first, then add\none of these to `.env`:\n\n```bash\nCOMPOSE_FILE=docker-compose.yml:docker\u002Fgpu.nvidia.yml\nCOMPOSE_FILE=docker-compose.yml:docker\u002Fgpu.amd.yml\n```\n\nVerify with:\n\n```bash\ndocker compose exec odysseus nvidia-smi -L\ndocker compose exec odysseus rocm-smi\n```\n\n**Ollama with Docker.** If Ollama runs on the host, add this endpoint in\nSettings:\n\n```text\nhttp:\u002F\u002Fhost.docker.internal:11434\u002Fv1\n```\n\nOllama must listen outside its own loopback interface:\n\n```bash\nOLLAMA_HOST=0.0.0.0:11434 ollama serve\n```\n\n**Useful checks.**\n\n```bash\ndocker compose ps\ndocker compose logs --tail=120 odysseus\ndocker compose logs odysseus | grep -E 'ChromaDB|MemoryVectorStore|DEGRADED'\n```\n\n**macOS details.** `start-macos.sh` installs Homebrew deps, creates the venv,\nruns setup, and starts uvicorn on port `7860` because AirPlay often holds\n`7000`. It uses llama.cpp\u002FOllama for Metal. vLLM\u002FSGLang are CUDA\u002FROCm-only and\ndo not run on macOS. MLX-only models are not served by Odysseus.\n\n\u003C\u002Fdetails>\n\n### Native Windows\n\n**One-command launcher** (creates the venv, installs deps, runs setup, starts the\nserver; safe to re-run):\n\n```powershell\ngit clone https:\u002F\u002Fgithub.com\u002Fpewdiepie-archdaemon\u002Fodysseus.git\ncd odysseus\npowershell -ExecutionPolicy Bypass -File .\\launch-windows.ps1\n```\n\nOr do it by hand:\n\n```powershell\ngit clone https:\u002F\u002Fgithub.com\u002Fpewdiepie-archdaemon\u002Fodysseus.git\ncd odysseus\npython -m venv venv\nvenv\\Scripts\\Activate.ps1\npip install -r requirements.txt\npython setup.py\npython -m uvicorn app:app --host 127.0.0.1 --port 7000\n```\n\n**Requirements:** Python 3.11+. The core app (chat, agent, memory, documents,\nemail, calendar, deep research) runs fully native. For full **Cookbook** background\nmodel downloads and the agent shell tool, also install\n[Git for Windows](https:\u002F\u002Fgit-scm.com\u002Fdownload\u002Fwin) (provides `bash.exe`).\nLocal GPU *serving* of vLLM\u002FSGLang needs Linux\u002FWSL2; for a local model on Windows,\n[Ollama](https:\u002F\u002Follama.com\u002Fdownload) is the easiest path — point Odysseus at\n`http:\u002F\u002Flocalhost:11434\u002Fv1` in Settings.\n\nOpen `http:\u002F\u002Flocalhost:7000`, log in with the generated admin password,\nand configure everything else inside **Settings**.\n\n## Security Notes\nOdysseus is a self-hosted workspace with powerful local tools: shell access, file uploads, model downloads, web research, email\u002Fcalendar integrations, and API tokens. Treat it like an admin console.\n\n- Keep `AUTH_ENABLED=true` for any network-accessible deployment.\n- Do not expose it directly to the public internet without HTTPS and a trusted reverse proxy.\n- Keep `data\u002F`, `.env`, logs, databases, and uploaded\u002Fgenerated media out of Git. They are ignored by default.\n- Review `data\u002Fauth.json` after first boot: disable open signup unless you intentionally want it, make only your own account admin, and keep demo\u002Ftest accounts non-admin.\n- Non-admin users do not get shell\u002FPython\u002Ffile read\u002Fwrite by default, and admin-only routes\u002Ftools such as MCP management, API tokens, webhooks, model\u002Fcookbook serving, backup\u002Fvault, and app settings are admin-gated. Other features are controlled by per-user privileges, so review each user's privileges before exposing a deployment.\n- Rotate any API keys or tokens that were ever pasted into a shared chat, demo, screenshot, or log.\n- If you enable API tokens or webhooks, create separate tokens per integration and delete unused ones.\n- Prefer binding manual development runs to `127.0.0.1`; bind to `0.0.0.0` only when you intentionally want LAN\u002Freverse-proxy access.\n- Before publishing a fork, run `git status --short` and confirm no private files from `.env`, `data\u002F`, `logs\u002F`, uploads, backups, or local databases are staged.\n\n### Putting it behind HTTPS\nOdysseus serves plain HTTP on its port. That's fine for `localhost` and trusted LAN\u002FVPN use, but browsers will warn (\"Password fields present on an insecure page\") and the login + API tokens travel in cleartext. For anything reachable outside your machine — including a Tailscale IP shared with other devices — put a TLS-terminating reverse proxy in front.\n\nShortest path with [Caddy](https:\u002F\u002Fcaddyserver.com\u002F) (auto-renews Let's Encrypt certs):\n\n```caddy\nodysseus.example.com {\n  reverse_proxy localhost:7000\n}\n```\n\nFor a LAN-only Tailscale deployment, Caddy + [tailscale-cert](https:\u002F\u002Fcaddyserver.com\u002Fdocs\u002Fcaddyfile\u002Foptions#auto-https) or the built-in MagicDNS HTTPS feature both work. nginx\u002FTraefik configs are similar — proxy `localhost:7000`, terminate TLS at the proxy. Once that's in place, the browser warning goes away and your login is encrypted.\n\n## Contributing\nHelp is welcome. The best entry points are fresh-install testing, provider setup\nbugs, mobile\u002Feditor polish, docs, and small focused refactors. See\n[ROADMAP.md](ROADMAP.md) for the current help-wanted list.\n\n## Configuration\nMost setup is done inside the app with `\u002Fsetup` or **Settings**. Use `.env`\nfor deployment-level defaults and secrets you want present before first boot.\nKey settings:\n\n| Variable | Default | Description |\n|---|---|---|\n| `LLM_HOST` | `localhost` | Your LLM server (e.g. `llm-host.local:8000`) |\n| `LLM_HOSTS` | -- | Comma-separated list for model discovery |\n| `OPENAI_API_KEY` | -- | Optional OpenAI key. Prefer adding providers in the app unless pre-seeding. |\n| `SEARXNG_INSTANCE` | `http:\u002F\u002Flocalhost:8080` | SearXNG URL. Docker overrides this to `http:\u002F\u002Fsearxng:8080`. |\n| `SEARXNG_SECRET` | generated on first Docker boot | Optional SearXNG cookie\u002FCSRF secret. Leave blank unless you need to pin it. |\n| `APP_BIND` | `127.0.0.1` | Docker Compose host bind address for the web UI. Use `0.0.0.0` only for intentional LAN\u002Freverse-proxy access. |\n| `APP_PORT` | `7000` | Docker Compose host port for the web UI. |\n| `AUTH_ENABLED` | `true` | Enable\u002Fdisable login |\n| `LOCALHOST_BYPASS` | `false` | Development-only auth bypass for loopback requests. Keep false for shared\u002Fnetwork deployments. |\n| `DATABASE_URL` | `sqlite:\u002F\u002F\u002F.\u002Fdata\u002Fapp.db` | Database connection string |\n| `CHROMADB_HOST` | `localhost` | ChromaDB host for vector memory. Docker overrides this to `chromadb`. |\n| `CHROMADB_PORT` | `8100` | ChromaDB port for manual host runs. Docker overrides this to `8000`. |\n| `EMBEDDING_URL` | -- | OpenAI-compatible embeddings endpoint |\n\n### Built-in MCP servers (optional setup)\n\nOdysseus auto-registers a few built-in MCP servers at startup. The npx-based ones (currently the browser server, `@playwright\u002Fmcp`) only start when their npm package is already in the local npx cache. If a package isn't cached, that server is skipped with a startup log message explaining what to do, so a fresh install does not block on a multi-minute npm download or hang if Playwright system deps are missing.\n\nTo enable the browser MCP (page navigation, screenshots, vision), run once:\n\n```bash\nnpx -y @playwright\u002Fmcp@latest --version\n```\n\nThat installs `@playwright\u002Fmcp` plus Playwright (~300MB total). Restart Odysseus and the server will register at startup.\n\n## Architecture\n```\napp.py                   # FastAPI entry point\ncore\u002F      auth, database, middleware, constants\nsrc\u002F       llm_core, agent_loop, agent_tools, chat_processor, search\u002F\nroutes\u002F    chat, session, document, memory, model … endpoints\nservices\u002F  docs, memory, search, hwfit (Cookbook) …\nstatic\u002F    index.html + app.js + style.css + js\u002F (modular front-end)\ndocs\u002F      landing page (index.html) + preview clips\n```\n\n## Data\nAll user data lives in `data\u002F` (gitignored): `app.db` (sessions, messages, documents),\n`memory.json`, `presets.json`, `uploads\u002F`, `personal_docs\u002F`, `chroma\u002F`, `settings.json`.\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=pewdiepie-archdaemon%2Fodysseus&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=pewdiepie-archdaemon\u002Fodysseus&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=pewdiepie-archdaemon\u002Fodysseus&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=pewdiepie-archdaemon\u002Fodysseus&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## License\nMIT -- see [LICENSE](LICENSE) and [ACKNOWLEDGMENTS.md](ACKNOWLEDGMENTS.md).\n\n```\n                                  |\n                                 |||\n                                |||||\n                  |    |    |   |||||||\n                 )_)  )_)  )_)   ~|~\n                )___))___))___)\\  |\n               )____)____)_____)\\\\|\n             _____|____|____|_____\\\\\\__\n             \\                       \u002F\n       ~^~^~~^~^~~^~^~~^~^~~^~^~~^~^~~^~^~~^~^~\n               ~^~  all aboard!  ~^~\n       ~^~^~~^~^~~^~^~~^~^~~^~^~~^~^~~^~^~~^~^~\n```\n","Odysseus 是一个自托管的AI工作空间，旨在提供类似ChatGPT和Claude的用户体验，但更加注重本地化、隐私保护和无后门。其核心功能包括与本地模型或API进行聊天、自动化任务执行、硬件扫描推荐模型、多步骤研究生成报告、模型对比测试、文档编辑辅助、持久记忆和技能积累、邮件智能处理、日程管理和移动设备支持等。该项目使用Python开发，具有响应式设计并支持PWA安装，适用于需要在自己硬件上运行AI应用以保证数据安全和个人隐私的场景，如个人研究、企业内部工具开发等。",2,"2026-06-06 04:10:20","CREATED_QUERY"]