E
Enhar Ormeci
Misafir
Misafir
Odysseus, açık kaynaklı bir AI çalışma alanıdır (GitHub’da 84.3k yıldız, AGPL-3.0 lisansı). Open WebUI gibi bir sohbet arayüzü sunmakla beraber, aşağıdaki özellikleri sağlar:
- Ajanlar: Modelin dosya yazma, kabuk komutu çalıştırma ve araç kullanma gibi işlemleri otonom olarak yapması
- Derin Araştırma: Çok adımlı web araştırması, kaynak okuma ve rapor üretimi
- Terminal erişimi: Modelin sandboxed terminal üzerinden komut çalıştırması
- Belge yönetimi: Belge yükleme, düzenleme ve AI destekli analiz
- E-posta: IMAP/SMTP gelen kutusu, triyaj ve yanıt taslakları
- Takvim ve Notlar: Hatırlatmalar, yapılacaklar ve zamanlanmış görevler
- Kod çalıştırma: Program yazma, kaydetme ve test etme
- Web araması: SearXNG entegrasyonu ile gerçek zamanlı web araması
Odysseus, vLLM, Ollama, llama.cpp gibi herhangi bir OpenAI uyumlu çıkarım sunucusuna bağlanabilir ve aynı anda birden çok modeli yönetebilir. Biz bu eğitimde GPT-OSS 120B kullanacağız. Ancak siz dilerseniz başka bir model kullanabilirsiniz.
Bu eğitim üç bölümden oluşur:
- Kurulum: Odysseus’un indirilmesi, yapılandırılması ve başlatılması
- Odysseus’u Kullanma: Model bağlantısı, sohbet, belge analizi, derin araştırma ve ajan modu
- Kapatma: Servislerin durdurulması ve veri kalıcılığı
GPT-OSS 120B modelini (ya da eğitimlerde kullandığımız başka modelleri) çalıştırmak için önceki eğitimlere göz atabilirsiniz. Bu eğitim, GPT-OSS 120B modelinin başlatılmış ve 8000 portundan hizmet verdiğini varsayar.
Kurulum
1. Odysseus’u İndirme
Odysseus, Docker Compose ile çalışan 4 servisli bir yazılım yığını kullanır: Odysseus web arayüzü, ChromaDB (vektör veritabanı), SearXNG (web arama motoru) ve ntfy (anlık bildirimler). Önce repoyu klonlayın:
Copy to Clipboard
cd ~ && git clone
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
Copy to Clipboard
Cloning into 'odysseus'...
Repodaki .env.example dosyasını .env olarak kopyalayın:
Copy to Clipboard
cp ~/odysseus/.env.example ~/odysseus/.env
Odysseus, .env dosyasındaki PUID ve PGID değişkenlerini kullanarak bind-mounted dosyaların sahipliğini belirler. Spark’taki nvidia kullanıcısının UID ve GID değerlerini kontrol edin:
Copy to Clipboard
id -u nvidia && id -g nvidia 1001 1001
DGX Spark’ta nvidia kullanıcısının UID/GID değeri 1001’dir (genellikle 1000 olur). Bu değeri .env dosyasında doğru şekilde ayarlamamız gerekecek.
2. .env Yapılandırması
.env dosyasına, varsayılan ayarların sonuna şu yapılandırmayı ekleyin:
Copy to Clipboard
cat >> ~/odysseus/.env textarea>
Eklediğiniz satırları doğrulayın:
Copy to Clipboard
tail -10 ~/odysseus/.env
Copy to Clipboard
# APP_DATA_DIR=./data # APP_LOGS_DIR=./logs # ===== Odysseus Configuration ===== APP_BIND=0.0.0.0 APP_PORT=7000 LLM_HOST=host.docker.internal PUID=1001 PGID=1001
Aşağıdaki tablo her değişkenin neden gerekli olduğunu açıklar:
Değişken | Değer | Açıklama |
|---|---|---|
APP_BIND | 0.0.0.0 | LAN erişimi — başka bir bilgisayardan tarayıcı ile Spark’a erişmek için. Varsayılan 127.0.0.1 yalnızca localhost erişimine izin verir. |
APP_PORT | 7000 | Odysseus web arayüzünün portu. |
LLM_HOST | host.docker.internal | Docker Compose ağı içinden vLLM’e erişim. |
PUID | 1001 | Spark’taki nvidia kullanıcısının UID’si. ./data/ ve ./logs/ dizinlerindeki dosyaların doğru kullanıcıya ait olmasını sağlar. |
PGID | 1001 | Spark’taki nvidia kullanıcısının GID’si. PUID ile aynı nedenle gereklidir. |
Önemli: Open WebUI –network=host bayrağıyla çalıştığı için konteyner içinden localhost:8000 adresiyle vLLM’e erişebilir. Odysseus ise Docker Compose ağını kullandığından, konteyner içinde localhost konteynerin kendisini işaret eder, Spark’ı değil. Bu nedenle LLM_HOST değerini host.docker.internal olarak ayarlıyoruz.
3. Derleme ve Başlatma
Odysseus’u derleyip başlatın:
Copy to Clipboard
cd ~/odysseus && docker compose up -d --build
İlk derleme yaklaşık 6 dakika sürer. Derleme sırasında Docker, gerekli imajları indirir ve Odysseus web arayüzü imajını yerel olarak derler. Derleme tamamlandığında şu çıktıyı göreceksiniz:
Copy to Clipboard
#22 exporting to image #22 exporting layers 43.0s done #22 exporting manifest sha256:1578b2f1936cb61c2cb3f6573c676fdaddcd894da67edf7c138307051e430829 0.0s done #22 exporting config sha256:f332390596282d676056f572245970de0c070c8742a81af0d5f86688167005d9 0.0s done #22 exporting attestation manifest sha256:6de5ba26fc5c055b944e86bcc23ca309b632fb71c31f35f71e6b0ea008fe49dc 0.0s done #22 exporting manifest list sha256:71fe6de33cbabd1da572dcfe59b823418b4caab126341783369ff3975937f6c0 0.0s done #22 naming to docker.io/library/odysseus-odysseus:latest done #22 unpacking to docker.io/library/odysseus-odysseus:latest 10.5s done #22 DONE 53.6s #23 resolving provenance for metadata file #23 DONE 0.0s Image odysseus-odysseus Built Network odysseus_default Creating Network odysseus_default Created Volume odysseus_chromadb-data Creating Volume odysseus_chromadb-data Created Volume odysseus_searxng-data Creating Volume odysseus_searxng-data Created Volume odysseus_ntfy-cache Creating Volume odysseus_ntfy-cache Created Container odysseus-chromadb-1 Creating Container odysseus-searxng-1 Creating Container odysseus-ntfy-1 Creating Container odysseus-chromadb-1 Created Container odysseus-searxng-1 Created Container odysseus-odysseus-1 Creating Container odysseus-ntfy-1 Created Container odysseus-odysseus-1 Created Container odysseus-ntfy-1 Starting Container odysseus-searxng-1 Starting Container odysseus-chromadb-1 Starting Container odysseus-searxng-1 Started Container odysseus-chromadb-1 Started Container odysseus-searxng-1 Waiting Container odysseus-ntfy-1 Started Container odysseus-searxng-1 Healthy Container odysseus-odysseus-1 Starting Container odysseus-odysseus-1 Started
Docker imajı başarıyla derlendi ve 4 konteyner başlatıldı. SearXNG sağlık kontrolü geçildi (Healthy), ardından Odysseus web arayüzü konteyneri başlatıldı. Docker Compose, kendi ağını (odysseus_default) ve 3 adet isimlendirilmiş volume oluşturdu.
4. Durum Kontrolü
Odysseus, kimlik doğrulamayı varsayılan olarak etkinleştirir ve ilk yönetici hesabını otomatik olarak oluşturur. Yönetici parolası, konteyner loglarında yazdırılır. Logları kontrol edin:
Copy to Clipboard
cd ~/odysseus && docker compose logs odysseus 2>&1 | tail -40
Copy to Clipboard
odysseus-1 | odysseus-1 | === Odysseus Setup === odysseus-1 | odysseus-1 | 1. Creating directories... odysseus-1 | [ok] data/ odysseus-1 | [ok] data/uploads/ odysseus-1 | [ok] data/personal_docs/ odysseus-1 | [ok] data/personal_uploads/ odysseus-1 | [ok] data/tts_cache/ odysseus-1 | [ok] data/generated_images/ odysseus-1 | [ok] data/deep_research/ odysseus-1 | [ok] data/chroma/ odysseus-1 | [ok] data/rag/ odysseus-1 | [ok] data/memory_vectors/ odysseus-1 | [ok] logs/ odysseus-1 | odysseus-1 | 2. Environment file... odysseus-1 | [ok] .env created from .env.example odysseus-1 | ** Edit .env with your LLM host and API keys ** odysseus-1 | odysseus-1 | 3. Checking dependencies... odysseus-1 | [ok] All core dependencies installed odysseus-1 | [ok] tmux installed odysseus-1 | odysseus-1 | 4. Initializing database... odysseus-1 | [ok] Database initialized odysseus-1 | odysseus-1 | 5. Creating initial admin... odysseus-1 | [ok] Initial admin user created (admin) odysseus-1 | Temporary password: akZ-yra12HxXCV5HIqvfVtFa odysseus-1 | ** Change it after first login. Set ODYSSEUS_ADMIN_PASSWORD to choose your own. ** odysseus-1 | odysseus-1 | === Setup complete === odysseus-1 | odysseus-1 | Start the server with: odysseus-1 | python -m uvicorn app:app --host 127.0.0.1 --port 7000 odysseus-1 | odysseus-1 | Then open
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
odysseus-1 | Login with your admin credentials. odysseus-1 |Yönetici hesabı oluşturuldu: kullanıcı adı admin, parola akZ-yra12HxXCV5HIqvfVtFa. Bu parolayı ilk girişten sonra değiştirebilirsiniz. Kendi parolanızı belirlemek isterseniz .env dosyasına ODYSSEUS_ADMIN_PASSWORD değişkenini ekleyebilirsiniz.
Konteynerlerin durumunu kontrol edin:
Copy to Clipboard
docker ps --filter name=odysseus --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
Copy to Clipboard
NAMES STATUS PORTS odysseus-odysseus-1 Up 4 seconds 0.0.0.0:7000->7000/tcp odysseus-chromadb-1 Up 9 seconds 127.0.0.1:8100->8000/tcp odysseus-searxng-1 Up 9 seconds (healthy) 127.0.0.1:8080->8080/tcp odysseus-ntfy-1 Up 9 seconds 127.0.0.1:8091->80/tcp
4 konteyner de çalışıyor. Odysseus web arayüzü 0.0.0.0:7000 üzerinde (LAN erişilebilir), diğer servisler ise yalnızca localhost üzerinde.
Sunucunun yanıt verdiğini doğrulayın:
Copy to Clipboard
curl -s --max-time 10
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
-o /dev/null -w "HTTP %{http_code}" HTTP 200HTTP 200 yanıtı, Odysseus konteynerinin host.docker.internal:8000 üzerinden vLLM’e başarıyla eriştiğini doğrular.
Odysseus’un başlangıç loglarını kontrol ederek tüm bileşenlerin hazır olduğunu doğrulayın:
Copy to Clipboard
cd ~/odysseus && docker compose logs --tail=20 odysseus
Copy to Clipboard
odysseus-1 | 2026-07-30 13:30:09,430 - app - INFO - Application starting up... odysseus-1 | 2026-07-30 13:30:09,432 - src.bg_monitor - INFO - Background-job monitor started (poll 5s) odysseus-1 | 2026-07-30 13:30:09,432 - app - INFO - Startup warmups disabled (set ODYSSEUS_STARTUP_WARMUPS=1 to enable) odysseus-1 | 2026-07-30 13:30:09,440 - src.task_scheduler - INFO - Task scheduler started (concurrency cap: 1) odysseus-1 | 2026-07-30 13:30:09,441 - app - INFO - Application startup complete odysseus-1 | 2026-07-30 13:30:09,441 - src.builtin_mcp - INFO - NPX binary resolved to: /usr/bin/npx odysseus-1 | INFO: Application startup complete. odysseus-1 | INFO: Uvicorn running on
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
(Press CTRL+C to quit) odysseus-1 | 2026-07-30 13:30:09,759 - src.mcp_manager - INFO - MCP server connected: Built-in: Memory (memory) - 1 tools via stdio odysseus-1 | 2026-07-30 13:30:09,760 - src.builtin_mcp - INFO - Built-in MCP server registered: Built-in: Memory odysseus-1 | 2026-07-30 13:30:09,788 - src.mcp_manager - INFO - MCP server connected: Built-in: Image Generation (image_gen) - 1 tools via stdio odysseus-1 | 2026-07-30 13:30:09,788 - src.builtin_mcp - INFO - Built-in MCP server registered: Built-in: Image Generation odysseus-1 | 2026-07-30 13:30:09,790 - src.mcp_manager - INFO - MCP server connected: Built-in: RAG (rag) - 1 tools via stdio odysseus-1 | 2026-07-30 13:30:09,790 - src.builtin_mcp - INFO - Built-in MCP server registered: Built-in: RAG odysseus-1 | 2026-07-30 13:30:09,798 - src.mcp_manager - INFO - MCP server connected: Built-in: Email (email) - 16 tools via stdio odysseus-1 | 2026-07-30 13:30:09,798 - src.builtin_mcp - INFO - Built-in MCP server registered: Built-in: Email odysseus-1 | INFO: 192.168.1.77:36940 - "GET /api/research/active HTTP/1.1" 200 OK odysseus-1 | 2026-07-30 13:30:12,509 - src.builtin_mcp - INFO - Starting NPX server: Built-in: Browser (/usr/bin/npx -y @playwright/mcp@latest --headless --caps vision --executable-path /usr/bin/chromium --isolated --no-sandbox) odysseus-1 | 2026-07-30 13:30:13,101 - src.mcp_manager - INFO - MCP server connected: Built-in: Browser (builtin_browser) - 30 tools via stdio odysseus-1 | 2026-07-30 13:30:13,102 - src.builtin_mcp - INFO - Built-in NPX server registered: Built-in: BrowserApplication startup complete. ve Uvicorn running on
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
satırları Odysseus’un hazır olduğunu gösterir. Ayrıca loglar, başlangıçta otomatik olarak kaydedilen 5 MCP (Model Context Protocol) sunucusunu gösterir: Memory (1 araç), Image Generation (1 araç), RAG (1 araç), Email (16 araç) ve Browser (30 araç ; Playwright/chromium ile web tarayıcı otomasyonu). Bu MCP sunucuları, ajan modunda modelin dosya okuma, görsel oluşturma, e-posta yönetimi ve web tarayıcı kontrolü gibi işlemler yapmasını sağlar.Odysseus kurulumu tamamlandı. Tarayıcıdan erişmeye hazırsınız.
Odysseus’u Kullanma
1. Giriş
Bilgisayarınızın tarayıcısını açın ve Spark’ın IP adresini 7000 portundan girin:
Copy to Clipboard
http://:7000
Karşınıza giriş ekranı gelecek. Önceki adımda kaydettiğiniz yönetici adı (admin) ve parolayı kullanarak giriş yapın.
Giriş yaptıktan sonra, Odysseus’un entegre çalışma alanı karşınıza çıkar. Soldaki menüden birçok uygulamaya erişebilirsiniz: E-posta, Araçlar, Beyin, Takvim, Karşılaştır, Cookbook, Derin Araştırma, Galeri, Kütüphane, Notlar, Görevler ve Tema. Sohbet alanı orta kısımda yer alır ve model seçildikten sonra kullanıma hazır hale gelir. Sağ alt köşedeki seçici, Agent modu (araçlarla çok adımlı işlemler) ve Chat modu (geleneksel dil modeli yanıtı) arasında geçiş yapmanızı sağlar.
2. Model Seçimi
Odysseus, vLLM gibi OpenAI uyumlu çıkarım sunucularından modelleri otomatik olarak keşfeder. Sol alt köşedeki ayarlar simgesine tıklayın ve Add Models bölümüne gidin. Yerel model sunucusu olarak vLLM’in adresini girin:
Copy to Clipboard
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
Yeşil renkte “Added — found 1 model” mesajını göreceksiniz. Bu, Odysseus’un vLLM sunucusuna bağlandığını ve gpt-oss-120b modelini keşfettiğini gösterir.
Model, sohbet arayüzünde gpt-oss-120b olarak görünür ve seçilmeye hazırdır.
3. Sohbet ve Akıl Yürütme
GPT-OSS 120B ile sohbet ederek başlayalım:
Copy to Clipboard
Bana, NVIDIA hakkında bilgi ver.
Model, yapılandırılmış bir Türkçe yanıt üretir, başlıklar, tablolar ve kategorize bilgi içerir. Yanıtın üzerinde, “View thinking process” panelini genişleterek modelin akıl yürütme sürecini görebilirsiniz. Arayüz, yaklaşık 6.5 saniyelik üretim süresini ve 435 token sayısını da gösterir. Bu, sıradan bir model çıkarımıdır; yanıt, modelin içsel bilgilerine dayanır.
Şimdi sohbet penceresinin alt kısmındaki ekleme menüsünü açın:
Bu menü üç seçenek sunar: Attach files (bilgisayardan dosya yükleme — PDF özetleme, kaynak kod analizi, tablo analizi, görsel yorumlama), Documents (Odysseus Kütüphanesi’nden mevcut belge seçme) ve Prompt (kaydedilmiş prompt şablonu ekleme).
4. Belge Yükleme ve Analiz
DGX Spark veri sayfası PDF’ini yükleyerek modelin belge anlama yeteneğini test edelim. Ekleme menüsünden Attach files seçeneğini kullanarak PDF’i yükleyin ve özetlemesini isteyin:
GPT-OSS 120B, PDF’in içeriğini çıkarır, içerik model bağlamına eklenir ve model Türkçe bir özet üretir.
5. Derin Araştırma
Derin Araştırma (Deep Research), Odysseus’un en ayırt edici özelliklerinden biridir. Bu özellik, modelin çok adımlı bir web araştırması yapmasını sağlar: arama sorguları üretir, web kaynaklarını okur, bulguları iteratif olarak geliştirir ve bir rapor üretir.
Sol menüden Deep Research uygulamasını açın ve bir araştırma konusu girin.
Araştırma yapılandırması şu seçenekleri sunar: Rounds (yinelemeli araştırma döngüsü sayısı), Format (çıktı yapısı), Search Engine (arama motoru), Endpoint (çıkarım uç noktası) ve Model (arama planlama, kaynak analizi ve rapor sentezi için kullanılacak model). Start düğmesine basarak araştırmayı başlatın.
Araştırma başladığında, arayüz araştırma grafiğini canlı olarak gösterir. Kök düğüm orijinal araştırma sorusunu, dallanmış düğümler ise üretilen alt soruları ve keşfedilen kaynakları temsil eder. İlk turda sistem arama sorguları üretir ve web’de arama yapar.
Arama sonuçları toplandıkça, sistem web sayfalarını fetch eder, metin çıkarır ve içeriği araştırma modeline sağlar. Sistem, kaynakları okur, ilgili içerikleri filtreler ve ek aramalar veya nihai sentez için hazırlar.
Sonuç, “Past research” bölümünde kaydedilir: İki ana sonuç düğmesi bulunur: Visual Report (biçimlendirilmiş araştırma raporu) ve Discuss (raporu yeni bir sohbet bağlamı olarak açma). Araştırma sonuçları Kütüphane > Research altında kalıcı olarak saklanır.
6. Agent Modu ve Araçlar
Sağ alt köşedeki seçiciyi Agent moduna alın. Agent modunda, model yalnızca metin üretmekle kalmaz; dosya yazma, kabuk komutu çalıştırma ve araç kullanma gibi işlemleri otonom olarak gerçekleştirir.
Agent moduna geçtikten sonra, Shell Access kartını etkinleştirin. Modelden, bir program yazıp, Spark’a kaydedip, sonra da çalıştırıp test etmesini isteyin.
Agent, önce programı tasarlar, ardından write_file aracıyla dosyayı kaydeder ve shell üzerinden test edip iş akışını izler.
7. Diğer Özellikler
Odysseus, yukarıda gösterilenlerin yanbında birçok entegre uygulama içerir. Bunların tümü aynı web arayüzünden erişilebilir:
- Cookbook: Donanım farkındalıklı model önerileri, indirme ve yerel sunma. Cookbook, Spark’ın GPU’suna uygun modeller önerir ve bunları tek tıkla indirebilir.
- Compare: Kör yan yana model testi ve sentez. Birden çok modeli aynı prompt ile karşılaştırma.
- E-posta: IMAP/SMTP gelen kutusu, triyaj, etiketler, özetler, hatırlatmalar ve yanıt taslakları.
- Notlar, Görevler ve Takvim: Hatırlatmalar, yapılacaklar, zamanlanmış ajan görevleri, CalDAV senkronizasyonu.
- Galeri ve Görsel Düzenleyici: Görsel yükleme, düzenleme ve oluşturma.
- MCP Sunucuları: Odysseus başlangıçta 5 MCP sunucusu kaydeder: Memory (bellek), Image Generation (görsel oluşturma), RAG (belge arama), Email (16 araç), Browser (30 araç — Playwright/chromium ile web tarayıcı otomasyonu). Dilerseniz, ilave sunucular ekleyebilirsiniz.
- Tema ve Özelleştirme: Çoklu temalar, oturum yönetimi.
Kapatma
İşiniz bittiğinde Odysseus’u durdurun:
Copy to Clipboard
cd ~/odysseus && docker compose down
Copy to Clipboard
time="2026-07-30T14:07:31Z" level=warning msg="The \"ODYSSEUS_TTS_CACHE_MAX_BYTES\" variable is not set. Defaulting to a blank string." Container odysseus-odysseus-1 Stopping Container odysseus-ntfy-1 Stopping Container odysseus-ntfy-1 Stopped Container odysseus-ntfy-1 Removing Container odysseus-ntfy-1 Removed Container odysseus-odysseus-1 Stopped Container odysseus-odysseus-1 Removing Container odysseus-odysseus-1 Removed Container odysseus-searxng-1 Stopping Container odysseus-chromadb-1 Stopping Container odysseus-chromadb-1 Stopped Container odysseus-chromadb-1 Removing Container odysseus-chromadb-1 Removed Container odysseus-searxng-1 Stopped Container odysseus-searxng-1 Removing Container odysseus-searxng-1 Removed Network odysseus_default Removing Network odysseus_default Removed
Tüm 4 konteyner durduruldu. Docker ağı (
odysseus_default) da temizlendi — ODYSSEUS_TTS_CACHE_MAX_BYTES uyarısı zararsızdır.Konteynerler durdurulsa da tüm gerekli bileşenler diskte kalıcıdır:
- Odysseus Docker imajı (
odysseus-odysseus:latest, 2.76 GB) — yeniden derleme gerekmez. - Odysseus repo’su (
~/odysseus/) — yapılandırılmış.envdosyasıyla birlikte hazır. - Odysseus verileri (
~/odysseus/data/) — yönetici hesabı (app.db,auth.json), ChromaDB vektörleri, fastembed önbelleği, üretilen görseller ve araştırma verileri kalıcıdır. - Docker volume’ları (
odysseus_chromadb-data,odysseus_ntfy-cache,odysseus_searxng-data) — sonraki çalıştırmalar için saklanır.
Odysseus’u tekrar başlatmak için:
Copy to Clipboard
cd ~/odysseus && docker compose up -d
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.