메뉴
HN
Hacker News 58일 전

오토노미스(Autonomy) – 셀프 호스팅 AI 워크스페이스

IMP
6/10
핵심 요약

로컬 환경에서 완벽하게 동작하는 프라이버시 보호형 AI 워크스페이스입니다. 사용자가 직접 하드웨어와 데이터를 통제하며, 챗, 에이전트, 딥 리서치, 문서 편집 등 다양한 기능을 제공합니다. 기존 ChatGPT나 Claude의 UI 경험을 자체 호스팅 버전으로 재현하면서도, 개인정보 보호와 데이터 주권을 강조한 점이 특징입니다.

번역된 본문

오토노미스 ─────────────────────────────────────────────── ⊹ ࣪ ˖ ૮( ˶ᵔ ᵕ ᵔ˶ )っ 오토노미스 버전 1.0 ───────────────────────────────────────────────

셀프 호스팅 AI 워크스페이스 -- ChatGPT와 Claude에서 제공하는 UI 경험의 자체 호스팅 버전을 목표로 합니다. 다만 좀 더 엉성하고(fun) 재미있습니다. 당신의 하드웨어에서, 당신의 데이터로 구동됩니다. 로컬 우선(local-first), 프라이버시 우선(privacy-first), 트로이 목마 없음.

주요 기능

챗(Chat) -- 로컬 모델 또는 API와 대화; 추가 방법이 매우 간단합니다. vLLM · llama.cpp · Ollama · OpenRouter · OpenAI

에이전트(Agent) -- 도구를 제공하면 전체 작업을 스스로 수행합니다. opencode 기반 · MCP · 웹 · 파일 · 셸 · 스킬 · 메모리

쿡북(Cookbook) -- 하드웨어를 스캔하고, 모델을 추천하며, 클릭 한 번으로 다운로드와 서빙이 가능합니다. 참 쉽죠? llmfit 기반 · VRAM 인식 · GGUF / FP8 / AWQ · 적합도 점수(fit scoring) · vLLM / llama.cpp 서빙

딥 리서치(Deep Research) -- 여러 단계로 실행되며, 자료를 수집, 읽기, 종합하여 시각적으로 보기 좋은 보고서를 작성합니다. Tongyi DeepResearch에서 각색됨

비교(Compare) -- 여러 모델을 나란히 비교하는 재미있는 도구입니다. 완전한 블라인드 테스트로 편향 없이 평가하세요! 다중 모델 · 블라인드 테스트 · 종합

문서(Documents) -- 사용자가 직접 텍스트를 작성하고, AI는 보조 역할을 담당합니다. 다중 탭 에디터 · 마크다운 · HTML · CSV · 구문 강조 · AI 편집 · 제안

메모리 / 스킬(Memory / Skills) -- 지속적인 메모리와 스킬로, 에이전트가 사용자와 작업을 더 잘 이해하면서 시간이 지남에 따라 발전합니다! ChromaDB · fastembed (ONNX) · 벡터 + 키워드 검색 · 가져오기/내보내기

이메일(Email) -- IMAP/SMTP 받은편지함에 AI 분류가 내장되어 있습니다: 긴급도 알림, 자동 태그, 자동 요약, 자동 답장 초안, 자동 스팸 처리. IMAP · SMTP · 계정별 라우팅 · CalDAV 인식

노트 & 작업(Notes & Tasks) -- 알림이 있는 빠른 메모, 할 일 목록, 에이전트가 수행할 수 있는 예약 작업. 노트 알림 · 체크리스트 · cron 스타일 작업 · ntfy / 브라우저 / 이메일 채널

캘린더(Calendar) -- 로컬 우선 캘린더로, CalDAV를 통해 Radicale / Nextcloud / Apple / Fastmail과 동기화됩니다. CalDAV 풀 · .ics 가져오기/내보내기 · 캘린더별 색상 · 에이전트 인식

모바일 지원 -- 데스크톱뿐만 아니라 휴대전화에서도 보기 좋고 잘 실행됩니다. 반응형 · 설치 가능(PWA) · 터치 제스처

추가 기능 -- 더 많은 것을 탐험해 보세요, 한 번 사용해 주시면 감사하겠습니다! 이미지 편집기 · 테마 편집기 · 파일 업로드(비전 + PDF) · 웹 검색 · 프리셋 · 세션 · 2FA

데모

마우스를 올리면 재생되는 전체 투어가 랜딩 페이지(docs/index.html)에 있습니다. 몇 가지 화면:

챗 & 에이전트 딥 리서치 비교 문서 노트 & 작업

빠른 시작

기본값은 바로 사용할 수 있습니다 -- 복제(clone)하고, 실행하고, 앱 내에서 구성하세요.

첫 로그인 후 설정 패널을 열어 Odysseus를 LLM 서버, 검색 제공자, 이메일 계정 등으로 지정하세요.

.env 파일은 AUTH_ENABLED, DATABASE_URL 같은 배포 수준 설정을 재정의하거나 ODYSSEUS_ADMIN_PASSWORD를 사전 설정(Odysseus 관리자 비밀번호, 그렇지 않으면 초기 비밀번호가 첫 부팅 시 생성되어 출력됨)해야 할 때만 만지세요.

옵션 1: Docker(권장)

git clone cd odysseus cp .env.example .env # 선택 사항이지만, 명시적 기본값을 위해 권장됨 docker compose up -d --build

Compose가 Odysseus, ChromaDB, SearXNG, ntfy를 시작합니다. 첫 실행 시 전체 이미지 빌드가 수행됩니다.

컨테이너가 정상(healthy) 상태가 된 후 http://localhost:7000을 여세요.

쿡북 원격 서버는 Docker 내의 ./data/ssh에 있는 Odysseus 소유 SSH 키를 사용합니다. 쿡북 -> 설정 -> 서버에서 공개 키를 생성/복사하여 원격 서버의 ~/.ssh/authorized_keys에 추가하세요. 키 생성 후 호스트에서 다음과 같이 설치할 수도 있습니다:

ssh-copy-id -i data/ssh/id_ed25519.pub user@server

쿡북 로컬 다운로드는 ./data/huggingface에 저장되며, Odysseus 컨테이너 내부에서 ~/.cache/huggingface로 마운트됩니다.

유용한 확인 명령어:

docker compose ps docker compose logs --tail=120 odysseus docker compose logs odysseus | grep -E 'ChromaDB|MemoryVectorStore|DEGRADED' docker compose exec odysseus python -c "from services.hwfit.models import get_models; print(len(get_models()))"

Docker에서 예상되는 벡터 메모리 시작 로그:

ChromaDB connected: chromadb:8000 MemoryVectorStore initialized

쿡북 모델 카탈로그 확인은 0이 아닌 수를 출력해야 합니다.

원문 보기
원문 보기 (영어)
Odysseus ─────────────────────────────────────────────── ⊹ ࣪ ˖ ૮( ˶ᵔ ᵕ ᵔ˶ )っ Odysseus vers. 1.0 ─────────────────────────────────────────────── A 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. Features Chat -- chat with any local model or API; adding them is super simple. vLLM · llama.cpp · Ollama · OpenRouter · OpenAI Agent -- hand it tools and let it run the whole task itself. built on opencode · MCP · web · files · shell · skills · memory Cookbook -- Scans your hardware, recommends models, click to download and serve.. easy! built on llmfit · VRAM-aware · GGUF / FP8 / AWQ · fit scoring · vLLM / llama.cpp serving Deep Research -- multi-step runs that gather, read, and synthesize sources into a nice visual report. adapted from Tongyi DeepResearch Compare -- a fun tool to compare models side by side. Test completely blind, no bias! multi-model · blind test · synthesis Documents -- YOU write the text, AI is there to assist, not the opposite. multi-tab editor · markdown · HTML · CSV · syntax highlighting · AI edits · suggestions Memory / Skills -- Persistent memory and skills, your agent evolves over time as it better understands you and your tasks! ChromaDB · fastembed (ONNX) · vector + keyword retrieval · import/export Email -- IMAP/SMTP inbox with AI triage built in: urgency reminders, auto-tag, auto-summary, auto-reply drafts, auto-spam. IMAP · SMTP · per-account routing · CalDAV-aware Notes & Tasks -- Quick notes with reminders, a todo list, and scheduled tasks the agent can act on. note pings · checklist · cron-style tasks · ntfy / browser / email channels Calendar -- Local-first calendar with CalDAV sync to Radicale / Nextcloud / Apple / Fastmail. CalDAV pull · .ics import/export · per-calendar colors · agent-aware Works on mobile -- looks and runs great on your phone, not just desktop. responsive · installable (PWA) · touch gestures Extras -- more to explore, happy if you give it a go! image editor · theme editor · file uploads (vision + PDF) · web search · presets · sessions · 2FA Demo A full, hover-to-play tour lives on the landing page ( docs/index.html ). A few looks: Chat & Agents Deep Research Compare Documents Notes & Tasks Quick Start Defaults work out of the box — clone, run, configure inside the app. Open the Settings panel after first login to point Odysseus at your LLM server, search provider, email account, etc. Only touch .env if you need to override deployment-level things like AUTH_ENABLED , DATABASE_URL , or pre-seed ODYSSEUS_ADMIN_PASSWORD (otherwise an initial password is generated and printed on first boot). Option 1: Docker (recommended) git clone < your-odysseus-repo-url > cd odysseus cp .env.example .env # optional, but recommended for explicit defaults docker compose up -d --build Compose starts Odysseus, ChromaDB, SearXNG, and ntfy. First run does a full image build. Open http://localhost:7000 after the containers are healthy. Cookbook remote servers use an Odysseus-owned SSH key from ./data/ssh inside Docker. In Cookbook -> Settings -> Servers , generate/copy the public key and add it to the remote server's ~/.ssh/authorized_keys . After generating the key, you can also install it from the host with: ssh-copy-id -i data/ssh/id_ed25519.pub user@server Cookbook local downloads are stored in ./data/huggingface , mounted as ~/.cache/huggingface inside the Odysseus container. Useful checks: docker compose ps docker compose logs --tail=120 odysseus docker compose logs odysseus | grep -E ' ChromaDB|MemoryVectorStore|DEGRADED ' docker compose exec odysseus python -c " from services.hwfit.models import get_models; print(len(get_models())) " Expected vector-memory startup lines in Docker: ChromaDB connected: chromadb:8000 MemoryVectorStore initialized The Cookbook model catalog check should print a non-zero count. If it prints 0 , rebuild the Odysseus image with docker compose build --no-cache odysseus . Option 2: Manual install — Linux / macOS Requirements: Python 3.11+. On Linux/Termux, Cookbook also requires tmux for background model downloads and serves. Install system packages first: # Debian/Ubuntu sudo apt install tmux # Arch sudo pacman -S tmux # Fedora sudo dnf install tmux Then install Odysseus: git clone < your-odysseus-repo-url > cd odysseus python3 -m venv venv source venv/bin/activate pip install -r requirements.txt python setup.py # creates data dirs and prints an initial admin password uvicorn app:app --host 0.0.0.0 --port 7000 Option 3: Manual install — Windows (PowerShell) git clone < your - odysseus - repo - url > cd odysseus python - m venv venv venv\Scripts\Activate.ps1 pip install - r requirements.txt python setup.py uvicorn app:app -- host 0.0 . 0.0 -- port 7000 Open http://localhost:7000 , log in with the generated admin password, and configure everything else inside Settings . Security Notes Odysseus is a self-hosted workspace with powerful local tools: shell access, file uploads, model downloads, web research, email/calendar integrations, and API tokens. Treat it like an admin console. Keep AUTH_ENABLED=true for any network-accessible deployment. Do not expose it directly to the public internet without HTTPS and a trusted reverse proxy. Keep data/ , .env , logs, databases, and uploaded/generated media out of Git. They are ignored by default. Review data/auth.json after first boot: disable open signup unless you intentionally want it, make only your own account admin, and keep demo/test accounts non-admin. Non-admin users do not get shell/Python/file read/write by default, and admin-only routes/tools such as MCP management, API tokens, webhooks, model/cookbook serving, backup/vault, and app settings are admin-gated. Other features are controlled by per-user privileges, so review each user's privileges before exposing a deployment. Rotate any API keys or tokens that were ever pasted into a shared chat, demo, screenshot, or log. If you enable API tokens or webhooks, create separate tokens per integration and delete unused ones. Prefer binding manual development runs to 127.0.0.1 ; bind to 0.0.0.0 only when you intentionally want LAN/reverse-proxy access. Before publishing a fork, run git status --short and confirm no private files from .env , data/ , logs/ , uploads, backups, or local databases are staged. Putting it behind HTTPS Odysseus serves plain HTTP on its port. That's fine for localhost and trusted LAN/VPN 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. Shortest path with Caddy (auto-renews Let's Encrypt certs): odysseus.example.com { reverse_proxy localhost:7000 } For a LAN-only Tailscale deployment, Caddy + tailscale-cert or the built-in MagicDNS HTTPS feature both work. nginx/Traefik 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. Contributing Help is welcome. The best entry points are fresh-install testing, provider setup bugs, mobile/editor polish, docs, and small focused refactors. See ROADMAP.md for the current help-wanted list. Configuration Most setup is done inside the app with /setup or Settings . Use .env for deployment-level defaults and secrets you want present before first boot. Key settings: Variable Default Description LLM_HOST localhost Your LLM server (e.g. llm-host.local:8000 ) LLM_HOSTS -- Comma-separated list for model discovery OPENAI_API_KEY -- Optional OpenAI key. Prefer adding providers in the app unless pre-seeding. SEARXNG_INSTANCE http://localhost:8080 SearXNG URL. Docker overrides this to http://searxng:8080 . AUTH_ENABLED true Enable/disable login LOCALHO