# USER_GUIDE (Ελληνικά) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/USER_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/USER_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/USER_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/guides/USER_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/USER_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/USER_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/USER_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/USER_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/USER_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/USER_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/USER_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/USER_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/USER_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/USER_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/USER_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/USER_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/USER_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/USER_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/USER_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/USER_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/USER_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/USER_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/USER_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/USER_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/USER_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/USER_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/USER_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/USER_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/USER_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/guides/USER_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/USER_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/USER_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/USER_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/USER_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/USER_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/USER_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/USER_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) --- --- title: "Οδηγός Χρήστη" version: 3.8.40 lastUpdated: 2026-06-28 --- # Οδηγός Χρήστη 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/guides/USER_GUIDE.md) · 🇦🇿 [az](../../../az/docs/guides/USER_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/guides/USER_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/guides/USER_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/guides/USER_GUIDE.md) · 🇩🇰 [da](../../../da/docs/guides/USER_GUIDE.md) · 🇩🇪 [de](../../../de/docs/guides/USER_GUIDE.md) · 🇪🇸 [es](../../../es/docs/guides/USER_GUIDE.md) · 🇪🇪 [et](../../../et/docs/guides/USER_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/guides/USER_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/guides/USER_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/guides/USER_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/guides/USER_GUIDE.md) · 🇮🇳 [gu](../../../gu/docs/guides/USER_GUIDE.md) · 🇮🇱 [he](../../../he/docs/guides/USER_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/guides/USER_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/guides/USER_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/guides/USER_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/guides/USER_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/guides/USER_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/guides/USER_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/guides/USER_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/USER_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/guides/USER_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/guides/USER_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/guides/USER_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/guides/USER_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/guides/USER_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/guides/USER_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/guides/USER_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/guides/USER_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/guides/USER_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/guides/USER_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/guides/USER_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/guides/USER_GUIDE.md) · 🇮🇳 [te](../../../te/docs/guides/USER_GUIDE.md) · 🇹🇭 [th](../../../th/docs/guides/USER_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/guides/USER_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/guides/USER_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) Πλήρης οδηγός για τη ρύθμιση παρόχων, τη δημιουργία συνδυασμών, την ενσωμάτωση εργαλείων CLI και την ανάπτυξη του OmniRoute. --- ## Πίνακας Περιεχομένων - [Τιμολόγηση με μια ματιά](#-pricing-at-a-glance) - [Περιπτώσεις Χρήσης](#-use-cases) - [Ρύθμιση Παρόχου](#-provider-setup) - [Ενσωμάτωση CLI](#-cli-integration) - [Ανάπτυξη](#-deployment) - [Διαθέσιμα Μοντέλα](#-available-models) - [Προηγμένες Λειτουργίες](#-advanced-features) - [Αυτόματη Δρομολόγηση (Μηδενική διαμόρφωση)](#-auto-routing-zero-config) - [Ενσωμάτωση MCP & A2A](#-mcp--a2a-integration) - [Σύστημα Δεξιοτήτων](#-skills-system) - [Σύστημα Μνήμης](#-memory-system) - [Webhooks](#-webhooks) - [Πράκτορες Cloud](#-cloud-agents) - [Διαχείριση μέσω Κώδικα](#-programmatic-management) - [Εσωτερικό CLI](#-internal-cli) - [Εφαρμογή Επιφάνειας Εργασίας (Electron)](#-desktop-application-electron) --- ## 💰 Τιμολόγηση με μια Ματιά | Επίπεδο | Πάροχος | Κόστος | Επαναφορά Ορίου | Κατάλληλο Για | | ----------------- | ----------------- | ----------------- | -------------------- | ------------------------------ | | **💳 ΣΥΝΔΡΟΜΗ** | Claude Code (Pro) | $20/μήνα | 5ω + εβδομαδιαία | Ήδη συνδρομητές | | | Codex (Plus/Pro) | $20-200/μήνα | 5ω + εβδομαδιαία | Χρήστες OpenAI | | | GitHub Copilot | $10-19/μήνα | Μηνιαία | Χρήστες GitHub | | **🔑 ΚΛΕΙΔΊ API** | DeepSeek | Πληρωμή ανά χρήση | Καμία | Φθηνή λογική | | | Groq | Πληρωμή ανά χρήση | Καμία | Εξαιρετικά γρήγορο inference | | | xAI (Grok) | Πληρωμή ανά χρήση | Καμία | Λογική Grok 4 | | | Mistral | Πληρωμή ανά χρήση | Καμία | Μοντέλα φιλοξενούμενα στην ΕΕ | | | Perplexity | Πληρωμή ανά χρήση | Καμία | Ενισχυμένο με αναζήτηση | | | Together AI | Πληρωμή ανά χρήση | Καμία | Μοντέλα ανοιχτού κώδικα | | | Fireworks AI | Πληρωμή ανά χρήση | Καμία | Γρήγορες εικόνες FLUX | | | Cerebras | Πληρωμή ανά χρήση | Καμία | Ταχύτητα wafer-scale | | | Cohere | Πληρωμή ανά χρήση | Καμία | Command R+ RAG | | | NVIDIA NIM | Πληρωμή ανά χρήση | Καμία | Μοντέλα επιχειρήσεων | | | Baidu Qianfan | Πληρωμή ανά χρήση | Καμία | Μοντέλα ERNIE | | **💰 ΦΘΗΝΟ** | GLM-4.7 | $0.6/1M | Καθημερινά 10πμ | Οικονομικό εφεδρικό | | | MiniMax M2.1 | $0.2/1M | Κύλιση 5 ωρών | Φθηνότερη επιλογή | | | Kimi K2 | $9/μήνα σταθερό | 10M tokens/μήνα | Προβλέψιμο κόστος | | **🆓 ΔΩΡΕΑΝ** | Qoder | $0 | Ισχύουν όρια παρόχου | Επαλήθευση τρέχοντος καταλόγου | | | Kiro | $0 | ~50 credits/μήνα | Claude δωρεάν | --- ## 🎯 Περιπτώσεις Χρήσης ### Περίπτωση 1: «Έχω συνδρομή Claude Pro» **Πρόβλημα:** Το όριο λήγει αναξιοποίητο, περιορισμοί ρυθμού κατά την έντονη κωδικοποίηση ``` Combo: "maximize-claude" 1. cc/claude-opus-4-7 # (πλήρης αξιοποίηση συνδρομής) 2. glm/glm-4.7 # (φθηνό εφεδρικό όταν εξαντληθεί το όριο) 3. if/qwen3.8-max-preview # (δωρεάν εφεδρικό έκτακτης ανάγκης) Μηνιαίο κόστος: $20 (συνδρομή) + ~$5 (εφεδρικό) = $25 συνολικά αντί για: $20 + χτύπημα ορίων = απογοήτευση ``` ### Περίπτωση 2: «Θέλω μηδενικό κόστος» **Πρόβλημα:** Δεν μπορώ να αντέξω συνδρομές, χρειάζομαι αξιόπιστη AI κωδικοποίηση ``` Combo: "zero-cost" 1. if/kimi-k2.7-code # (καταχωρημένη δωρεάν πρόσβαση· ενδέχεται να ισχύουν όρια ρυθμού) 2. kr/qwen3-coder-next # (δωρεάν εφεδρικό Kiro) Μηνιαίο κόστος: $0 Ποιότητα: επαληθεύστε το μοντέλο, τα όρια, την ιδιωτικότητα και το SLA για τον φόρτο εργασίας σας ``` ### Περίπτωση 3: «Χρειάζομαι κωδικοποίηση 24/7, χωρίς διακοπές» **Πρόβλημα:** Προθεσμίες, δεν αντέχω διακοπή λειτουργίας ``` Combo: "always-on" 1. cc/claude-opus-4-7 # (καλύτερη ποιότητα) 2. cx/gpt-5.5 # (δεύτερη συνδρομή) 3. glm/glm-4.7 # (φθηνό, επαναφορά καθημερινά) 4. minimax/MiniMax-M2.1 # (φθηνότατο, επαναφορά 5ω) 5. if/deepseek-v4-flash # (καταχωρημένη δωρεάν πρόσβαση· ενδέχεται να ισχύουν όρια ρυθμού) Αποτέλεσμα: 5 επίπεδα εφεδρικών διευρύνουν την ανθεκτικότητα· η διαθεσιμότητα upstream δεν εγγυάται Μηνιαίο κόστος: $20-200 (συνδρομές) + $10-20 (εφεδρικό) ``` ### Περίπτωση 4: «Θέλω ΔΩΡΕΑΝ AI στο OpenClaw» **Πρόβλημα:** Χρειάζομαι AI βοηθό σε εφαρμογές μηνυμάτων, εντελώς δωρεάν ``` Combo: "openclaw-free" 1. if/qwen3.8-max-preview # (καταχωρημένη δωρεάν πρόσβαση· ενδέχεται να ισχύουν όρια ρυθμού) 2. if/deepseek-v4-flash # (καταχωρημένη δωρεάν πρόσβαση· ενδέχεται να ισχύουν όρια ρυθμού) 3. if/kimi-k2.7-code # (καταχωρημένη δωρεάν πρόσβαση· ενδέχεται να ισχύουν όρια ρυθμού) Μηνιαίο κόστος: $0 Πρόσβαση μέσω: WhatsApp, Telegram, Slack, Discord, iMessage, Signal... ``` --- ## 📖 Ρύθμιση Παρόχων ### 🔐 Πάροχοι Συνδρομής #### Claude Code (Pro/Max) ```bash Dashboard → Providers → Connect Claude Code → OAuth login → Auto token refresh → Παρακολούθηση ορίου 5 ωρών + εβδομαδιαίου ορίου Models: cc/claude-opus-4-7 cc/claude-sonnet-4-6 cc/claude-haiku-4-5-20251001 ``` **Χρήσιμη Συμβουλή:** Χρησιμοποιήστε το Opus για σύνθετες εργασίες, το Sonnet για ταχύτητα. Το OmniRoute παρακολουθεί το όριο ανά μοντέλο! Οι διαδρομές συμβατές με Claude και Claude Code διατηρούν τη σκέψη `max` για τα μοντέλα Opus και Sonnet. Τα μοντέλα Haiku δεν δέχονται το επίπεδο προσπάθειας `max`, οπότε το OmniRoute υποβαθμίζει αυτό το αίτημα σε υψηλό προϋπολογισμό σκέψης πριν το αποστείλει. #### OpenAI Codex (Plus/Pro) ```bash Dashboard → Providers → Connect Codex → OAuth login (port 1455) → Επαναφορά ορίου ανά 5 ώρες + εβδομαδιαία επαναφορά Models: cx/gpt-5.5 cx/gpt-5.4 cx/gpt-5.3-codex cx/gpt-5.3-codex-spark ``` #### GitHub Copilot ```bash Dashboard → Providers → Connect GitHub → OAuth via GitHub → Μηνιαία επαναφορά (1η του μήνα) Models: gh/gpt-5.5 gh/gpt-5.4 gh/claude-sonnet-4.6 gh/claude-opus-4.7 gh/gemini-3.1-pro-preview ``` ### 💰 Οικονομικοί Πάροχοι #### GLM-4.7 (Ημερήσια επαναφορά, $0.6/1M) 1. Εγγραφή: [Zhipu AI](https://open.bigmodel.cn) 2. Αποκτήστε κλειδί API από το Coding Plan 3. Dashboard → Add API Key: Provider: `glm`, API Key: `your-key` **Χρήση:** `glm/glm-4.7` — **Χρήσιμη Συμβουλή:** Το Coding Plan προσφέρει 3× όριο με 1/7 του κόστους! Επαναφορά καθημερινά στις 10:00 π.μ. #### MiniMax M2.1 (Επαναφορά ανά 5ω, $0.20/1M) 1. Εγγραφή: [MiniMax](https://www.minimax.io) 2. Αποκτήστε κλειδί API → Dashboard → Add API Key **Χρήση:** `minimax/MiniMax-M2.1` — **Χρήσιμη Συμβουλή:** Η φθηνότερη επιλογή για μεγάλο πλαίσιο (1M tokens)! #### Kimi K2 ($9/μήνα σταθερά) 1. Συνδρομή: [Moonshot AI](https://platform.kimi.ai?aff=omniroute) 2. Αποκτήστε κλειδί API → Dashboard → Add API Key **Χρήση:** `kimi/kimi-k2.5` — **Χρήσιμη Συμβουλή:** Σταθερά $9/μήνα για 10M tokens = αποτελεσματικό κόστος $0.90/1M! #### Baidu Qianfan / ERNIE 1. Εγγραφή: [Baidu AI Cloud Qianfan](https://cloud.baidu.com/product/wenxinworkshop) 2. Δημιουργήστε κλειδί Qianfan API → Dashboard → Add API Key: Provider: `qianfan` **Χρήση:** `qianfan/ernie-5.1`, `qianfan/ernie-x1.1`, ή άλλο αναγνωριστικό μοντέλου συμβατό με OpenAI από το Qianfan. ### 🆓 ΔΩΡΕΑΝ Πάροχοι Οι δωρεάν πάροχοι χωρίς πιστοποίηση διαθέτουν έναν διακόπτη δίπλα στο **No authentication required** στη σελίδα του παρόχου τους. Απενεργοποιώντας τον απενεργοποιείτε τον πάροχο, τον αφαιρείτε από τις προβολές Providers configured/compact, και αφαιρείτε τα μοντέλα του από το `/v1/models`. #### Qoder (9 ΔΩΡΕΑΝ μοντέλα) ```bash Dashboard → Connect Qoder → OAuth login → Η πρόσβαση υπόκειται στα τρέχοντα όρια του παρόχου Models: if/qwen3.8-max-preview, if/qwen3.7-max, if/qwen3.7-plus, if/kimi-k3, if/kimi-k2.7-code, if/glm-5.2, if/deepseek-v4-pro, if/deepseek-v4-flash, if/minimax-m3 ``` #### Kiro (Claude ΔΩΡΕΑΝ) ```bash Dashboard → Connect Kiro → AWS Builder ID ή Google/GitHub → ~50 credits/μήνα Models: kr/claude-sonnet-4.5, kr/claude-haiku-4.5 ``` --- ## 🎨 Συνδυασμοί Μπορείτε να αναδιατάξετε τις κάρτες συνδυασμών απευθείας στο **Dashboard → Combos** σύροντας τη λαβή κάθε κάρτας. Η σειρά αποθηκεύεται στο SQLite και αποκαθίσταται κατά την επαναφόρτωση. ### Παράδειγμα 1: Μεγιστοποίηση Συνδρομής → Οικονομικό Εφεδρικό ``` Dashboard → Combos → Create New Name: premium-coding Models: 1. cc/claude-opus-4-7 (Κύριο συνδρομής) 2. glm/glm-4.7 (Οικονομικό εφεδρικό, $0.6/1M) 3. minimax/MiniMax-M2.7 (Φθηνότερη εναλλακτική, $0.3/1M) Use in CLI: premium-coding ``` ### Παράδειγμα 2: Μόνο Δωρεάν (Μηδενικό Κόστος) ``` Name: free-combo Models: 1. if/kimi-k2.7-code (Καταχωρισμένη δωρεάν πρόσβαση· ενδέχεται να ισχύουν όρια παρόχου) 2. kr/qwen3-coder-next (Δωρεάν εφεδρικό Kiro) Cost: αναφέρεται ως $0 αυτή τη στιγμή· οι όροι και η διαθεσιμότητα ενδέχεται να αλλάξουν ``` --- ## 🔧 Ενσωμάτωση CLI ### Cursor IDE **Χρήση του Cursor ως πελάτη OmniRoute** (δρομολόγηση συνομιλίας Cursor μέσω OmniRoute): ``` Settings → Models → Advanced: OpenAI API Base URL: http://localhost:20128/v1 OpenAI API Key: [from omniroute dashboard] Model: cc/claude-opus-4-7 ``` **Χρήση του OmniRoute ως παροχέα Cursor** (το OmniRoute καλεί το Cursor ανάντη): προτιμήστε **Dashboard → Providers → Cursor → Login with Cursor**. Σε Docker, δείτε [`docs/providers/CURSOR-DOCKER.md`](../providers/CURSOR-DOCKER.md). ### Claude Code Επεξεργαστείτε το `~/.claude/settings.json`: ```json { "env": { "ANTHROPIC_BASE_URL": "http://localhost:20128", "ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key" } } ``` Χρησιμοποιήστε εδώ το συμβατό με Claude ριζικό endpoint. Μην προσθέτετε `/v1` στο `ANTHROPIC_BASE_URL`. ### Codex CLI ```bash export OPENAI_BASE_URL="http://localhost:20128" export OPENAI_API_KEY="your-omniroute-api-key" codex "your prompt" ``` ### OpenClaw Επεξεργαστείτε το `~/.openclaw/openclaw.json`: ```json { "agents": { "defaults": { "model": { "primary": "omniroute/if/kimi-k2.7-code" } } }, "models": { "providers": { "omniroute": { "baseUrl": "http://localhost:20128/v1", "apiKey": "your-omniroute-api-key", "api": "openai-completions", "models": [{ "id": "if/kimi-k2.7-code", "name": "Kimi K2.7 Code" }] } } } } ``` **Ή χρησιμοποιήστε το Dashboard:** CLI Tools → OpenClaw → Auto-config ### Cline / Continue / RooCode ``` Provider: OpenAI Compatible Base URL: http://localhost:20128/v1 API Key: [from dashboard] Model: cc/claude-opus-4-7 ``` --- ## 🚀 Ανάπτυξη ### Καθολική εγκατάσταση npm (Προτεινόμενη) ```bash npm install -g omniroute # Δημιουργία καταλόγου ρυθμίσεων mkdir -p ~/.omniroute # Δημιουργία αρχείου .env (δείτε .env.example) cp .env.example ~/.omniroute/.env # Εκκίνηση διακομιστή omniroute # Ή με προσαρμοσμένη θύρα: omniroute --port 3000 ``` Το CLI φορτώνει αυτόματα το `.env` από `~/.omniroute/.env` ή `./.env`. ### Λειτουργία δίσκου συστήματος (Tray) Εκκινήστε το OmniRoute στο δίσκο συστήματος: ```bash omniroute serve --tray ``` Η εντολή επιστρέφει μετά την ετοιμότητα του διακομιστή και του δίσκου. Ο διακομιστής συνεχίζει χωρίς το τερματικό. Η λειτουργία δίσκου υποστηρίζει macOS, Windows και γραφικές συνεδρίες Linux. Η λειτουργία δίσκου δεν ανοίγει αυτόματα το dashboard. Χρησιμοποιήστε το μενού δίσκου για αυτές τις ενέργειες: - Άνοιγμα του dashboard. - Άνοιγμα του `/dashboard/logs`. - Αλλαγή αυτόματης εκκίνησης. - Διακοπή του OmniRoute. Μη συνδυάζετε το `--tray` με αυτές τις επιλογές: - `--daemon` - `--log` - `--no-recovery` Αυτές οι λειτουργίες απαιτούν διαφορετική ιδιοκτησία διεργασίας. Ενεργοποιήστε την εκκίνηση κατά την επόμενη σύνδεση στο μηχάνημα: ```bash omniroute autostart enable ``` Η αυτόματη εκκίνηση χρησιμοποιεί λειτουργία δίσκου σε macOS, Windows και γραφικές συνεδρίες Linux. Το headless Linux χρησιμοποιεί την υπάρχουσα υπηρεσία χρήστη systemd. Απενεργοποιήστε την εκκίνηση κατά τη σύνδεση: ```bash omniroute autostart disable ``` ### Απεγκατάσταση Όταν δεν χρειάζεστε πλέον το OmniRoute, παρέχουμε δύο γρήγορα σενάρια για καθαρή αφαίρεση: | Εντολή | Ενέργεια | | ------------------------ | ------------------------------------------------------------------------------------------------------------- | | `npm run uninstall` | Αφαιρεί την εφαρμογή συστήματος αλλά **διατηρεί τη βάση δεδομένων και τις ρυθμίσεις σας** στο `~/.omniroute`. | | `npm run uninstall:full` | Αφαιρεί την εφαρμογή ΚΑΙ **διαγράφει μόνιμα όλες τις ρυθμίσεις, τα κλειδιά και τις βάσεις δεδομένων**. | > Σημείωση: Για να εκτελέσετε αυτές τις εντολές, μεταβείτε στον φάκελο του έργου OmniRoute (εάν το κλωνοποιήσατε) και εκτελέστε τες. Εναλλακτικά, εάν είναι εγκατεστημένο καθολικά, μπορείτε απλώς να εκτελέσετε `npm uninstall -g omniroute`. ### Ανάπτυξη σε VPS ```bash git clone https://github.com/diegosouzapw/OmniRoute.git cd OmniRoute && npm install && npm run build export JWT_SECRET="your-secure-secret-change-this" export INITIAL_PASSWORD="your-password" export DATA_DIR="/var/lib/omniroute" export PORT="20128" export HOSTNAME="0.0.0.0" export NODE_ENV="production" export NEXT_PUBLIC_BASE_URL="http://localhost:20128" export API_KEY_SECRET="endpoint-proxy-api-key-secret" npm run start # Ή: pm2 start npm --name omniroute -- start ``` ### Ανάπτυξη με PM2 (Χαμηλή Μνήμη) Για διακομιστές με περιορισμένη RAM, χρησιμοποιήστε την επιλογή ορίου μνήμης: ```bash # Με όριο 512MB (προεπιλογή) pm2 start npm --name omniroute -- start # Ή με προσαρμοσμένο όριο μνήμης OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start # Ή χρησιμοποιώντας το ecosystem.config.js pm2 start ecosystem.config.js ``` Δημιουργήστε το `ecosystem.config.js`: ```javascript module.exports = { apps: [ { name: "omniroute", script: "npm", args: "start", env: { NODE_ENV: "production", OMNIROUTE_MEMORY_MB: "512", JWT_SECRET: "your-secret", INITIAL_PASSWORD: "your-password", }, node_args: "--max-old-space-size=512", max_memory_restart: "300M", }, ], }; ``` ### Docker ```bash # Κατασκευή εικόνας (προεπιλογή = runner-cli με προεγκατεστημένα codex/claude/droid) docker build -t omniroute:cli . # Φορητή λειτουργία (προτεινόμενη) docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli ``` Για λειτουργία ενσωματωμένη στον κεντρικό υπολογιστή με δυαδικά αρχεία CLI, δείτε την ενότητα Docker στην κύρια τεκμηρίωση. ### Void Linux (xbps-src) Οι χρήστες Void Linux μπορούν να δημιουργήσουν πακέτο και να εγκαταστήσουν το OmniRoute εγγενώς χρησιμοποιώντας το πλαίσιο cross-compilation `xbps-src`. Αυτό αυτοματοποιεί τη μεμονωμένη κατασκευή Node.js μαζί με τις απαιτούμενες εγγενείς συνδέσεις `better-sqlite3`.
Προβολή προτύπου xbps-src ```bash # Template file for 'omniroute' pkgname=omniroute version=3.8.0 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="Universal AI gateway with smart routing for multiple LLM providers" maintainer="zenobit " license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" checksum=009400afee90a9f32599d8fe734145cfd84098140b7287990183dde45ae2245b system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false do_build() { # Καθορισμός αρχιτεκτονικής CPU στόχου για node-gyp local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac # 1) Εγκατάσταση όλων των εξαρτήσεων – παράλειψη scripts NODE_ENV=development npm ci --ignore-scripts # 2) Κατασκευή του μεμονωμένου bundle Next.js npm run build # 3) Αντιγραφή στατικών στοιχείων στο standalone cp -r .next/static .next/standalone/.next/static [ -d public ] && cp -r public .next/standalone/public || true # 4) Μεταγλώττιση εγγενούς σύνδεσης better-sqlite3 local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js (cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch") # 5) Τοποθέτηση της μεταγλωττισμένης σύνδεσης στο standalone bundle local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release mkdir -p "$_bs3_release" cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/" # 6) Αφαίρεση πακέτων sharp ειδικών αρχιτεκτονικής rm -rf .next/standalone/node_modules/@img # 7) Αντιγραφή εξαρτήσεων runtime pino που παραλείπει η στατική ανάλυση του Next.js: for _mod in pino-abstract-transport split2 process-warning; do cp -r "node_modules/$_mod" .next/standalone/node_modules/ done } do_check() { npm run test:unit } do_install() { vmkdir usr/lib/omniroute/.next vcopy .next/standalone/. usr/lib/omniroute/.next/standalone # Αποτροπή αφαίρεσης κενών καταλόγων δρομολογητή Next.js app από το hook μετά την εγκατάσταση for _d in \ .next/standalone/.next/server/app/dashboard \ .next/standalone/.next/server/app/dashboard/settings \ .next/standalone/.next/server/app/dashboard/providers; do touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep" done cat > "${WRKDIR}/omniroute" <<'EOF' #!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export APP_LOG_TO_FILE="${APP_LOG_TO_FILE:-false}" mkdir -p "${DATA_DIR}" exec node /usr/lib/omniroute/.next/standalone/server.js "$@" EOF vbin "${WRKDIR}/omniroute" } post_install() { vlicense LICENSE } ```
### Μεταβλητές Περιβάλλοντος | Μεταβλητή | Προεπιλογή | Περιγραφή | | --------------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `JWT_SECRET` | `omniroute-default-secret-change-me` | Μυστικό υπογραφής JWT (**αλλάξτε σε παραγωγή**) | | `INITIAL_PASSWORD` | `CHANGEME` | Κωδικός πρόσβασης πρώτης σύνδεσης | | `DATA_DIR` | `~/.omniroute` | Κατάλογος δεδομένων (db, χρήση, αρχεία καταγραφής) | | `PORT` | προεπιλογή framework | Θύρα υπηρεσίας (`20128` στα παραδείγματα) | | `HOSTNAME` | προεπιλογή framework | Κεντρικός υπολογιστής δέσμευσης (Docker προεπιλέγει `0.0.0.0`) | | `NODE_ENV` | προεπιλογή runtime | Ορίστε `production` για ανάπτυξη | | `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | Δημόσιο βασικό URL που εμφανίζεται στο dashboard και εκτίθεται στον διακομιστή (αντικαθιστά το παλαιό `BASE_URL`) | | `NEXT_PUBLIC_CLOUD_URL` | `https://omniroute.dev` | Βασικό URL endpoint συγχρονισμού cloud (αντικαθιστά το παλαιό `CLOUD_URL`) | | `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | Μυστικό HMAC για τα παραγόμενα κλειδιά API | | `REQUIRE_API_KEY` | `false` | Επιβολή κλειδιού API Bearer στο `/v1/*` | | `ALLOW_API_KEY_REVEAL` | `false` | Επιτρέπει σε πιστοποιημένους χρήστες dashboard να αποκαλύπτουν πλήρεις αποθηκευμένες τιμές κλειδιών API κατ' απαίτηση | | `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | Συχνότητα ανανέωσης από τον διακομιστή για δεδομένα Ορίων Παροχέα σε προσωρινή αποθήκευση· τα κουμπιά ανανέωσης UI εξακολουθούν να ενεργοποιούν χειροκίνητο συγχρονισμό | | `DISABLE_SQLITE_AUTO_BACKUP` | `false` | Απενεργοποίηση αυτόματων στιγμιοτύπων SQLite πριν από εγγραφές/εισαγωγή/επαναφορά· τα χειροκίνητα αντίγραφα ασφαλείας εξακολουθούν να λειτουργούν | | `APP_LOG_TO_FILE` | `true` | Ενεργοποιεί την εξαγωγή αρχείων καταγραφής εφαρμογής και ελέγχου στο δίσκο | | `AUTH_COOKIE_SECURE` | `false` | Επιβολή cookie ταυτοποίησης `Secure` (πίσω από αντίστροφο διακομιστή μεσολάβησης HTTPS) | | `CLOUDFLARED_BIN` | μη ορισμένο | Χρήση υπάρχοντος δυαδικού `cloudflared` αντί για διαχειριζόμενη λήψη | | `CLOUDFLARED_PROTOCOL` | `http2` | Μεταφορά για διαχειριζόμενα Quick Tunnels (`http2`, `quic` ή `auto`) | | `OMNIROUTE_MEMORY_MB` | `512` | Όριο heap Node.js σε MB | | `PROMPT_CACHE_MAX_SIZE` | `50` | Μέγιστες καταχωρήσεις προσωρινής αποθήκευσης prompt | | `SEMANTIC_CACHE_MAX_SIZE` | `100` | Μέγιστες καταχωρήσεις σημασιολογικής προσωρινής αποθήκευσης | Για την πλήρη αναφορά μεταβλητών περιβάλλοντος, δείτε το [README](../README.md). --- ## 📊 Διαθέσιμα Μοντέλα
Προβολή όλων των διαθέσιμων μοντέλων > Η παρακάτω λίστα έχει συνταχθεί από το `open-sse/config/providerRegistry.ts` για την έκδοση v3.8.0. Τα καταλόγοι cloud (Gemini, OpenRouter κ.λπ.) συγχρονίζονται δυναμικά — για τον πλήρη ζωντανό κατάλογο ανοίξτε **Πίνακας Ελέγχου → Πάροχοι → [πάροχος] → Διαθέσιμα Μοντέλα** ή καλέστε `GET /api/models/catalog`. > > Εάν η ενσωματωμένη λίστα ενός παρόχου έχει αποκλίνει, χρησιμοποιήστε **Εισαγωγή από /models** σε αυτή τη σελίδα (ή ενεργοποιήστε **Αυτόματο Συγχρονισμό**) για να αντλήσετε τον ζωντανό upstream κατάλογο. Αυτό επαληθεύτηκε στην έκδοση v3.8.50 για το LLM7.io (`gemini-3.1-flash-lite`) και το UncloseAI (`solidrust/Hermes-3-Llama-3.1-8B-AWQ`)· η ανώνυμη πρόσβαση στο Pollinations παρέμεινε περιορισμένη από upstream κατά τη διάρκεια της ίδιας δοκιμής. **Claude Code (`cc/`)** — Pro/Max OAuth: `cc/claude-opus-4-8`, `cc/claude-opus-4-7`, `cc/claude-opus-4-6`, `cc/claude-opus-4-5-20251101`, `cc/claude-sonnet-4-6`, `cc/claude-sonnet-4-5-20250929`, `cc/claude-haiku-4-5-20251001` **Codex (`cx/`)** — Plus/Pro OAuth: `cx/gpt-5.5` (+ επίπεδα προσπάθειας: `gpt-5.5-xhigh`, `gpt-5.5-high`, `gpt-5.5-medium`, `gpt-5.5-low`), `cx/gpt-5.4`, `cx/gpt-5.4-mini`, `cx/gpt-5.3-codex`, `cx/gpt-5.3-codex-spark` **GitHub Copilot (`gh/`)** — OAuth: `gh/gpt-5.5`, `gh/gpt-5.4`, `gh/gpt-5.4-mini`, `gh/gpt-5-mini`, `gh/gpt-5.3-codex`, `gh/claude-opus-4.7`, `gh/claude-opus-4.6`, `gh/claude-opus-4-5-20251101`, `gh/claude-sonnet-4.6`, `gh/claude-sonnet-4.5`, `gh/claude-haiku-4.5`, `gh/gemini-3.1-pro-preview`, `gh/gemini-3-flash-preview`, `gh/oswe-vscode-prime` **Kiro (`kr/`)** — ΔΩΡΕΑΝ OAuth: χρησιμοποιήστε τον ζωντανό κατάλογο που εμφανίζεται στο **Πίνακας Ελέγχου → Πάροχοι → Kiro → Διαθέσιμα Μοντέλα**. Η διαθεσιμότητα εξαρτάται από τον λογαριασμό και το πλάνο. **Qoder (`if/`)** — ΔΩΡΕΑΝ OAuth: `if/qwen3.8-max-preview`, `if/qwen3.7-max`, `if/qwen3.7-plus`, `if/kimi-k3`, `if/kimi-k2.7-code`, `if/glm-5.2`, `if/deepseek-v4-pro`, `if/deepseek-v4-flash`, `if/minimax-m3` **GLM (`glm/`, `glm-cn/`, `zai/`, `glmt/`)** — $0,2–0,6/1M: `glm/glm-5.1`, `glm/glm-5`, `glm/glm-5-turbo`, `glm/glm-4.7`, `glm/glm-4.7-flash`, `glm/glm-4.6`, `glm/glm-4.6v`, `glm/glm-4.5`, `glm/glm-4.5v`, `glm/glm-4.5-air` **MiniMax (`minimax/`, `minimax-cn/`)** — $0,2/1M: `minimax/MiniMax-M2.7`, `minimax/MiniMax-M2.7-highspeed`, `minimax/MiniMax-M2.5`, `minimax/MiniMax-M2.5-highspeed` **Kimi (`kimi/`, `kimi-coding/`, `kimi-coding-apikey/`)** — $9/μήνα κατ' αποκοπή ή ανά χρήση: `kimi/kimi-k2.6`, `kimi/kimi-k2.5` **DeepSeek (`ds/`)** — Κλειδί API: `ds/deepseek-v4-pro`, `ds/deepseek-v4-flash` **Groq (`groq/`)** — Εξαιρετικά γρήγορο: `groq/llama-3.3-70b-versatile`, `groq/meta-llama/llama-4-maverick-17b-128e-instruct`, `groq/qwen/qwen3-32b`, `groq/openai/gpt-oss-120b` **xAI (`xai/`)** — Grok native: `xai/grok-4.3`, `xai/grok-4.20-multi-agent-0309`, `xai/grok-4.20-0309-reasoning`, `xai/grok-4.20-0309-non-reasoning` **Mistral (`mistral/`)** — Φιλοξενείται στην ΕΕ: `mistral/mistral-large-latest`, `mistral/mistral-medium-3-5`, `mistral/mistral-small-latest`, `mistral/devstral-latest`, `mistral/codestral-latest` **Perplexity (`pplx/`)** — Ενισχυμένο με αναζήτηση: `pplx/sonar-deep-research`, `pplx/sonar-reasoning-pro`, `pplx/sonar-pro`, `pplx/sonar` **Together AI (`together/`)** — Ανοιχτού κώδικα: `together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free` (δωρεάν), `together/meta-llama/Llama-Vision-Free`, `together/deepseek-ai/DeepSeek-R1-Distill-Llama-70B-Free`, `together/deepseek-ai/DeepSeek-R1`, `together/Qwen/Qwen3-235B-A22B`, `together/meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8` **Fireworks AI (`fireworks/`)** — Γρήγορη εκτέλεση: `fireworks/accounts/fireworks/models/kimi-k2p6`, `fireworks/accounts/fireworks/models/minimax-m2p7`, `fireworks/accounts/fireworks/models/qwen3p6-plus`, `fireworks/accounts/fireworks/models/glm-5p1`, `fireworks/accounts/fireworks/models/deepseek-v4-pro` **Cerebras (`cerebras/`)** — Wafer-scale: `cerebras/zai-glm-4.7`, `cerebras/gpt-oss-120b` **Cohere (`cohere/`)** — Εστιασμένο σε RAG: `cohere/command-a-reasoning-08-2025`, `cohere/command-a-vision-07-2025`, `cohere/command-a-03-2025`, `cohere/command-r-08-2024` **NVIDIA NIM (`nvidia/`)** — Επιχειρησιακό: `nvidia/z-ai/glm-5.1`, `nvidia/minimaxai/minimax-m2.7`, `nvidia/google/gemma-4-31b-it`, `nvidia/mistralai/mistral-small-4-119b-2603`, `nvidia/mistralai/mistral-large-3-675b-instruct-2512`, `nvidia/qwen/qwen3.5-397b-a17b`, `nvidia/deepseek-ai/deepseek-v4-pro`, `nvidia/openai/gpt-oss-120b`, `nvidia/nvidia/nemotron-3-super-120b-a12b` **Baidu Qianfan (`qianfan/`)** — ERNIE: `qianfan/ernie-5.1`, `qianfan/ernie-5.0-thinking-latest`, `qianfan/ernie-x1.1` **Ollama Cloud (`ollama-cloud/`)**: `ollama-cloud/deepseek-v4-pro`, `ollama-cloud/deepseek-v4-flash`, `ollama-cloud/kimi-k2.6`, `ollama-cloud/glm-5.1`, `ollama-cloud/minimax-m2.7`, `ollama-cloud/gemma4:31b`, `ollama-cloud/qwen3.5:397b` **Gemini (Google Cloud `gemini/`)**: Συγχρονίζεται ζωντανά ανά κλειδί API από την Google — δεν υπάρχει στατική λίστα. Συνδέστε ένα κλειδί στο **Πίνακας Ελέγχου → Πάροχοι** και στη συνέχεια χρησιμοποιήστε **Διαθέσιμα Μοντέλα** για να εισαγάγετε τον τρέχοντα κατάλογο (π.χ. `gemini/gemini-3-pro`, `gemini/gemini-3-flash`). **Άλλοι συμβατοί πάροχοι** (επιλεγμένοι): `cohere`, `databricks`, `snowflake`, `together`, `vertex`, `alibaba`, `alibaba-cn`, `bedrock` (μέσω `aws-bedrock`), `azure-ai`, `openrouter` (κατάλογος passthrough), `siliconflow`, `hyperbolic`, `huggingface`, `featherless-ai`, `cloudflare-ai`, `scaleway`, `deepinfra`, `vercel-ai-gateway`, `bazaarlink`, `friendliai`, `nous-research`, `reka`, `volcengine`, `ai21`, `gigachat`. Ο καθένας διατηρεί τη δική του λίστα μοντέλων στο `providerRegistry.ts` και μπορεί να συγχρονιστεί αυτόματα όταν ο πάροχος εκθέτει ένα endpoint `/models`. **Σημείωση για τα αναγνωριστικά μοντέλων:** Το OmniRoute χρησιμοποιεί τα native αναγνωριστικά του παρόχου (`claude-opus-4-8`, `gpt-5.5`, `glm-5.1`, `MiniMax-M2.7`, `kimi-k2.5`, `grok-4.20-0309-reasoning`). Ορισμένα αναγνωριστικά περιλαμβάνουν εκδόσεις με τελείες επειδή έτσι τα αναμένει το upstream API. Εάν ένα μοντέλο δεν εμφανίζεται παραπάνω, εκτελέστε `omniroute models --search ` ή χτυπήστε `GET /api/models/catalog` για να επιβεβαιώσετε τη διαθεσιμότητα.
--- ## 🧩 Προηγμένες Λειτουργίες ### Προσαρμοσμένα Μοντέλα Προσθέστε οποιοδήποτε αναγνωριστικό μοντέλου σε οποιονδήποτε πάροχο χωρίς να περιμένετε ενημέρωση της εφαρμογής: ```bash # Μέσω API curl -X POST http://localhost:20128/api/provider-models \ -H "Content-Type: application/json" \ -d '{"provider": "openai", "modelId": "gpt-5.2", "modelName": "GPT-5.2"}' # Λίστα: curl http://localhost:20128/api/provider-models?provider=openai # Αφαίρεση: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2" ``` Ή χρησιμοποιήστε το Dashboard: **Providers → [Provider] → Custom Models**. Σημειώσεις: - Οι πάροχοι OpenRouter και OpenAI/Anthropic-compatible διαχειρίζονται μόνο από τα **Available Models**. Η χειροκίνητη προσθήκη, εισαγωγή και αυτόματος συγχρονισμός καταλήγουν στην ίδια λίστα διαθέσιμων μοντέλων, οπότε δεν υπάρχει ξεχωριστή ενότητα Custom Models για αυτούς τους παρόχους. - Η ενότητα **Custom Models** προορίζεται για παρόχους που δεν εκθέτουν διαχειριζόμενες εισαγωγές διαθέσιμων μοντέλων. ### Αλυσίδωση OmniRoute Peers Ένα άλλο gateway OmniRoute μπορεί να προστεθεί ως πάροχος **Custom OpenAI-compatible**. Χρησιμοποιήστε τη βασική διεύθυνση URL `/v1` του peer και ένα αποκλειστικό κλειδί API ελάχιστων δικαιωμάτων που εκδίδεται από αυτό το peer. Για αμοιβαίες ή πολυ-hop αλυσίδες, ενεργοποιήστε την προαιρετική φρουρά βρόχου σε κάθε gateway: ```bash # gateway-a OMNIROUTE_INSTANCE_ID=gateway-a OMNIROUTE_PEER_URLS=http://gateway-b:20128/v1 OMNIROUTE_PEER_MAX_HOPS=4 ``` ```bash # gateway-b OMNIROUTE_INSTANCE_ID=gateway-b OMNIROUTE_PEER_URLS=http://gateway-a:20128/v1 OMNIROUTE_PEER_MAX_HOPS=4 ``` Μόνο τα αιτήματα που αποστέλλονται σε ρητά επιτρεπόμενη διεύθυνση URL peer λαμβάνουν την κεφαλίδα `X-OmniRoute-Peer-Trace`. Ένα gateway απορρίπτει ένα επαναλαμβανόμενο αναγνωριστικό instance ή εξαντλημένο hop budget με HTTP `508 Loop Detected`· οι κανονικοί upstream πάροχοι δεν λαμβάνουν μεταδεδομένα peer. Η αλυσίδωση peer δεν είναι αντιγραφή βάσης δεδομένων ή failover κεντρικού υπολογιστή. Κάθε gateway διατηρεί ανεξάρτητη κατάσταση SQLite, caches, μετρητές ρυθμού και συνεδρίες. Χρησιμοποιήστε ένα reverse proxy με έλεγχο υγείας ή client failover για διαθεσιμότητα active/passive ή active/active, και ποτέ μην τοποθετείτε μία βάση δεδομένων SQLite σε πολλαπλές ενεργές instances OmniRoute. ### Αποκλειστικές Διαδρομές Παρόχων Δρομολογήστε αιτήματα απευθείας σε συγκεκριμένο πάροχο με επικύρωση μοντέλου: ```bash POST http://localhost:20128/v1/providers/openai/chat/completions POST http://localhost:20128/v1/providers/openai/embeddings POST http://localhost:20128/v1/providers/fireworks/images/generations ``` Το πρόθεμα παρόχου προστίθεται αυτόματα αν λείπει. Μη αντιστοιχισμένα μοντέλα επιστρέφουν `400`. ### Διαμόρφωση Διακομιστή Μεσολάβησης Δικτύου ```bash # Ορισμός καθολικού proxy curl -X PUT http://localhost:20128/api/settings/proxy \ -d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}' # Proxy ανά πάροχο curl -X PUT http://localhost:20128/api/settings/proxy \ -d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}' # Δοκιμή proxy curl -X POST http://localhost:20128/api/settings/proxy/test \ -d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}' ``` **Προτεραιότητα:** Ανά κλειδί → Ανά συνδυασμό → Ανά πάροχο → Καθολική → Περιβάλλον. ### API Καταλόγου Μοντέλων ```bash curl http://localhost:20128/api/models/catalog ``` Επιστρέφει μοντέλα ομαδοποιημένα ανά πάροχο με τύπους (`chat`, `embedding`, `image`). ### Συγχρονισμός Cloud - Συγχρονίστε παρόχους, συνδυασμούς και ρυθμίσεις σε όλες τις συσκευές - Αυτόματος συγχρονισμός στο παρασκήνιο με timeout + γρήγορη αποτυχία - Προτιμήστε `NEXT_PUBLIC_BASE_URL`/`NEXT_PUBLIC_CLOUD_URL` από την πλευρά του διακομιστή σε παραγωγικό περιβάλλον ### Cloudflare Quick Tunnel - Διαθέσιμο στο **Dashboard → Endpoints** για Docker και άλλες αυτο-φιλοξενούμενες αναπτύξεις - Δημιουργεί μια προσωρινή διεύθυνση URL `https://*.trycloudflare.com` που προωθεί στο τρέχον OpenAI-compatible `/v1` endpoint σας - Η πρώτη ενεργοποίηση εγκαθιστά το `cloudflared` μόνο όταν χρειάζεται· οι επόμενες επανεκκινήσεις επαναχρησιμοποιούν το ίδιο διαχειριζόμενο δυαδικό αρχείο - Τα Quick Tunnels δεν αποκαθίστανται αυτόματα μετά από επανεκκίνηση OmniRoute ή container· ενεργοποιήστε τα ξανά από το dashboard όταν χρειάζεται - Οι διευθύνσεις URL tunnel είναι εφήμερες και αλλάζουν κάθε φορά που διακόπτετε/ξεκινάτε το tunnel - Τα διαχειριζόμενα Quick Tunnels χρησιμοποιούν από προεπιλογή μεταφορά HTTP/2 για να αποφύγουν θορυβώδεις προειδοποιήσεις buffer QUIC UDP σε περιορισμένα containers - Ορίστε `CLOUDFLARED_PROTOCOL=quic` ή `auto` αν θέλετε να παρακάμψετε την επιλογή διαχειριζόμενης μεταφοράς - Ορίστε `CLOUDFLARED_BIN` αν προτιμάτε να χρησιμοποιήσετε προεγκατεστημένο δυαδικό αρχείο `cloudflared` αντί της διαχειριζόμενης λήψης - Τα πάνελ Cloudflare Quick Tunnel, Tailscale Funnel και ngrok Tunnel μπορούν να εμφανιστούν ή να αποκρυφτούν στις **Ρυθμίσεις → Εμφάνιση**. Η απόκρυψη ενός πάνελ δεν διακόπτει ένα τρέχον tunnel. ### Νοημοσύνη LLM Gateway (Φάση 9) - **Σημασιολογική Cache** — Αυτόματη αποθήκευση μη-streaming απαντήσεων με temperature=0 (παράκαμψη με `X-OmniRoute-No-Cache: true`) - **Idempotency Αιτημάτων** — Αφαίρεση διπλότυπων αιτημάτων εντός 5s μέσω κεφαλίδας `Idempotency-Key` ή `X-Request-Id` - **Παρακολούθηση Προόδου** — Προαιρετικά SSE `event: progress` events μέσω κεφαλίδας `X-OmniRoute-Progress: true` --- ### Playground Μεταφραστή Πρόσβαση μέσω **Dashboard → Translator**. Αποσφαλματώστε και οπτικοποιήστε τον τρόπο με τον οποίο το OmniRoute μεταφράζει αιτήματα API μεταξύ παρόχων. | Λειτουργία | Σκοπός | | ---------------- | --------------------------------------------------------------------------------------------------- | | **Playground** | Επιλέξτε μορφές πηγής/στόχου, επικολλήστε ένα αίτημα και δείτε αμέσως τη μεταφρασμένη έξοδο | | **Chat Tester** | Αποστολή ζωντανών μηνυμάτων chat μέσω του proxy και επιθεώρηση του πλήρους κύκλου αίτησης/απόκρισης | | **Test Bench** | Εκτελέστε δοκιμές παρτίδας σε πολλαπλούς συνδυασμούς μορφών για επαλήθευση ορθότητας μετάφρασης | | **Live Monitor** | Παρακολουθήστε μεταφράσεις σε πραγματικό χρόνο καθώς τα αιτήματα διέρχονται από το proxy | **Περιπτώσεις χρήσης:** - Αποσφαλμάτωση του λόγου αποτυχίας συγκεκριμένου συνδυασμού client/παρόχου - Επαλήθευση ότι τα thinking tags, οι κλήσεις εργαλείων και τα system prompts μεταφράζονται σωστά - Σύγκριση διαφορών μορφής μεταξύ μορφών OpenAI, Claude, Gemini και Responses API --- ### Στρατηγικές Δρομολόγησης Διαμόρφωση μέσω **Dashboard → Settings → Routing**. Το dashboard εκθέτει τις έξι πιο χρησιμοποιούμενες στρατηγικές· οι συνδυασμοί και ο auto-router υποστηρίζουν εσωτερικά ένα ευρύτερο σύνολο. **Στρατηγικές ορατές στο Dashboard (δρομολόγηση σε επίπεδο λογαριασμού):** | Στρατηγική | Περιγραφή | | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | | **Fill First** | Χρησιμοποιεί λογαριασμούς με σειρά προτεραιότητας — ο κύριος λογαριασμός χειρίζεται όλα τα αιτήματα έως ότου δεν είναι διαθέσιμος | | **Round Robin** | Εναλλάσσεται μεταξύ όλων των λογαριασμών με ρυθμιζόμενο όριο sticky (προεπιλογή: 3 κλήσεις ανά λογαριασμό) | | **P2C (Power of Two Choices)** | Επιλέγει 2 τυχαίους λογαριασμούς και δρομολογεί στον πιο υγιή — εξισορροπεί το φορτίο με επίγνωση υγείας | | **Random** | Επιλέγει τυχαία έναν λογαριασμό για κάθε αίτημα χρησιμοποιώντας τον αλγόριθμο Fisher-Yates | | **Least Used** | Δρομολογεί στον λογαριασμό με το παλαιότερο timestamp `lastUsedAt`, κατανέμοντας ομοιόμορφα την κίνηση | | **Cost Optimized** | Δρομολογεί στον λογαριασμό με τη χαμηλότερη τιμή προτεραιότητας, βελτιστοποιώντας για τους φθηνότερους παρόχους | **Προηγμένες στρατηγικές συνδυασμού και auto** (ρυθμιζόμενες ανά συνδυασμό ή μέσω προθεμάτων `auto/*` — δείτε [AUTO-COMBO.md](../routing/AUTO-COMBO.md)): - `priority` — αυστηρή σειρά, χωρίς ποτέ round-robin - `weighted` — αναλογική κατανομή κίνησης βάσει βαρών ανά μοντέλο - `fill-first` — εξάντληση του πρώτου μοντέλου μέχρι να φτάσουν τα όρια - `round-robin` / `strict-random` / `random` - `p2c` (Power of Two Choices) - `least-used` και `cost-optimized` - `auto` — βαθμολογία-driven σε όλους τους υποψηφίους - `lkgp` (Last Known Good Provider) — καρφιτσώνει στον τελευταίο επιτυχή πάροχο, μετά εναλλάσσεται στους κανόνες - `context-optimized` — επιλέγει το μοντέλο με το μεγαλύτερο ελεύθερο παράθυρο context - `context-relay` — αλυσιδώνει μοντέλα μεγάλου context για επόμενες σειρές συνομιλίας #### Εξωτερική Κεφαλίδα Sticky Session Για εξωτερική συσχέτιση συνεδρίας (για παράδειγμα, agents Claude Code/Codex πίσω από reverse proxies), αποστείλετε: ```http X-Session-Id: your-session-key ``` Το OmniRoute αποδέχεται επίσης `x_session_id` και επιστρέφει το ενεργό κλειδί συνεδρίας στο `X-OmniRoute-Session-Id`. Αν χρησιμοποιείτε Nginx και αποστέλλετε κεφαλίδες με κάτω παύλα, ενεργοποιήστε: ```nginx underscores_in_headers on; ``` #### Wildcard Ψευδώνυμα Μοντέλων Δημιουργήστε wildcard μοτίβα για αναχαρτογράφηση ονομάτων μοντέλων: ``` Pattern: claude-sonnet-* → Target: cc/claude-sonnet-4-6 Pattern: gpt-* → Target: gh/gpt-5.3-codex ``` Τα wildcards υποστηρίζουν `*` (οποιοιδήποτε χαρακτήρες) και `?` (μεμονωμένος χαρακτήρας). #### Αλυσίδες Εφεδρείας Ορίστε καθολικές αλυσίδες εφεδρείας που εφαρμόζονται σε όλα τα αιτήματα: ``` Chain: production-fallback 1. cc/claude-opus-4-7 2. gh/gpt-5.3-codex 3. glm/glm-4.7 ``` --- ### Ανθεκτικότητα & Circuit Breakers Διαμόρφωση μέσω **Dashboard → Settings → Resilience**. Το OmniRoute υλοποιεί ανθεκτικότητα σε επίπεδο παρόχου με πέντε συστατικά: 1. **Ουρά Αιτημάτων & Pacing** — Διαμόρφωση αιτημάτων σε επίπεδο συστήματος: - **Requests Per Minute (RPM)** — Μέγιστα αιτήματα ανά λεπτό ανά λογαριασμό - **Min Time Between Requests** — Ελάχιστο διάστημα σε milliseconds μεταξύ αιτημάτων - **Max Concurrent Requests** — Μέγιστα ταυτόχρονα αιτήματα ανά λογαριασμό 2. **Connection Cooldown** — Διαμόρφωση ανά τύπο auth για μεμονωμένη σύνδεση μετά από επαναλήψιμες αποτυχίες: - **Base Cooldown** — Προεπιλεγμένο παράθυρο cooldown για επαναλήψιμες αποτυχίες upstream - **Use Upstream Retry Hints** — Τιμά αυθεντικές υποδείξεις `Retry-After` ή reset όταν παρέχονται - **Max Backoff Steps** — Μέγιστο επίπεδο εκθετικής αναδρομής για επαναλαμβανόμενες αποτυχίες 3. **Provider Circuit Breaker** — Παρακολουθεί αποτυχίες παρόχου από άκρο σε άκρο, σημειώνει έναν πάροχο ως υποβαθμισμένο στο ρυθμιζόμενο κατώφλι προειδοποίησης, και ανοίγει τον breaker όταν φτάσει το ρυθμιζόμενο κατώφλι αποτυχίας: - **Degradation Threshold** — Διαδοχικές αποτυχίες παρόχου πριν την είσοδο σε `DEGRADED` - **Failure Threshold** — Διαδοχικές αποτυχίες παρόχου πριν την είσοδο σε `OPEN` - **Reset Timeout** — Χρονικό παράθυρο πριν δοκιμαστεί ξανά ο πάροχος - **CLOSED** (Υγιής) — Τα αιτήματα ρέουν κανονικά - **DEGRADED** — Τα αιτήματα εξακολουθούν να ρέουν ενώ παρακολουθούνται αυξημένες αποτυχίες - **OPEN** — Ο πάροχος αποκλείεται προσωρινά μετά από επαναλαμβανόμενες αποτυχίες - **HALF_OPEN** — Δοκιμή αν ο πάροχος έχει ανακάμψει Τα `429` rate limits εμβέλειας σύνδεσης παραμένουν στο **Connection Cooldown** και δεν μετράνε στον breaker παρόχου. Η κατάσταση runtime του provider breaker εμφανίζεται μόνο στο **Dashboard → Health**. 4. **Wait For Cooldown** — Αν κάθε υποψήφια σύνδεση βρίσκεται ήδη σε cooldown, το OmniRoute μπορεί να περιμένει το νωρίτερο cooldown και να επαναλάβει αυτόματα το ίδιο αίτημα client. 5. **Αυτόματη Ανίχνευση Rate Limit** — Όταν οι upstream πάροχοι επιστρέφουν ρητά παράθυρα αναμονής, αυτές οι υποδείξεις παρακάμπτουν το τοπικό connection cooldown όταν η ρύθμιση είναι ενεργοποιημένη. **Συμβουλή:** Χρησιμοποιήστε τη σελίδα **Health** για επιθεώρηση και επαναφορά ζωντανών provider breakers μετά από διακοπή. Η σελίδα Resilience αλλάζει μόνο τη διαμόρφωση. --- ### Εξαγωγή / Εισαγωγή Βάσης Δεδομένων Διαχειριστείτε αντίγραφα ασφαλείας βάσης δεδομένων στο **Dashboard → Settings → System & Storage**. | Ενέργεια | Περιγραφή | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Export Database** | Λήψη της τρέχουσας βάσης δεδομένων SQLite ως αρχείο `.sqlite` | | **Export All (.tar.gz)** | Λήψη πλήρους αρχείου backup που περιλαμβάνει: βάση δεδομένων, ρυθμίσεις, συνδυασμούς, συνδέσεις παρόχων (χωρίς διαπιστευτήρια), μεταδεδομένα κλειδιών API | | **Import Database** | Ανεβάστε αρχείο `.sqlite` για αντικατάσταση της τρέχουσας βάσης δεδομένων. Αντίγραφο ασφαλείας πριν την εισαγωγή δημιουργείται αυτόματα εκτός αν `DISABLE_SQLITE_AUTO_BACKUP=true` | ```bash # API: Εξαγωγή βάσης δεδομένων curl -o backup.sqlite http://localhost:20128/api/db-backups/export # API: Εξαγωγή όλων (πλήρες αρχείο) curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll # API: Εισαγωγή βάσης δεδομένων curl -X POST http://localhost:20128/api/db-backups/import \ -F "file=@backup.sqlite" ``` **Επικύρωση Εισαγωγής:** Το εισαγόμενο αρχείο επικυρώνεται για ακεραιότητα (έλεγχος pragma SQLite), απαιτούμενους πίνακες (`provider_connections`, `provider_nodes`, `combos`, `api_keys`) και μέγεθος (μέγ. 100MB). **Περιπτώσεις Χρήσης:** - Μετεγκατάσταση OmniRoute μεταξύ μηχανών - Δημιουργία εξωτερικών αντιγράφων ασφαλείας για ανάκτηση από καταστροφή - Κοινή χρήση διαμορφώσεων μεταξύ μελών ομάδας (εξαγωγή όλων → κοινή χρήση αρχείου) --- ### Dashboard Ρυθμίσεων Η σελίδα ρυθμίσεων είναι οργανωμένη σε **7 καρτέλες** για εύκολη πλοήγηση: | Καρτέλα | Περιεχόμενα | | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **General** | Εργαλεία αποθήκευσης συστήματος, προεπιλεγμένη συμπεριφορά, ορατότητα tunnel Endpoint | | **Appearance** | Έλεγχοι θέματος (ανοιχτό/σκοτεινό/σύστημα), ορατότητα πλαϊνής μπάρας, εναλλαγές πάνελ για κάρτες tunnel Cloudflare/Tailscale/ngrok | | **AI** | Προϋπολογισμός thinking (passthrough / auto-strip / custom / adaptive — δείτε [THINKING_BUDGET.md](./THINKING_BUDGET.md)), καθολικό system prompt, στατιστικά prompt cache | | **Security** | Ρυθμίσεις σύνδεσης/κωδικού πρόσβασης, έλεγχος πρόσβασης IP, auth API για `/models`, αποκλεισμός παρόχων, φύλακας έγχυσης prompt | | **Routing** | Καθολική στρατηγική δρομολόγησης (Fill First / Round Robin / P2C / Random / Least Used / Cost Optimized), wildcard ψευδώνυμα μοντέλων, αλυσίδες εφεδρείας, προεπιλογές συνδυασμών | | **Resilience** | Ουρά αιτημάτων, connection cooldown, διαμόρφωση provider breaker και συμπεριφορά wait-for-cooldown | | **Advanced** | Καθολική διαμόρφωση proxy (HTTP/SOCKS5), παρακάμψεις proxy ανά πάροχο | Το General δεν επαναλαμβάνει πλέον αναγνώσιμες-μόνο σημειώσεις καταγραφής και cache. Οι ρυθμίσεις διατήρησης και βελτιστοποίησης βάσης δεδομένων αποθηκεύονται μέσω `/api/settings/database`· η χειροκίνητη εκκαθάριση cache χρησιμοποιεί `DELETE /api/cache`. Τα ανώτατα όρια γραμμών στους πίνακες αρχείων καταγραφής αιτημάτων και proxy ελέγχονται από `CALL_LOGS_TABLE_MAX_ROWS` και `PROXY_LOGS_TABLE_MAX_ROWS`. --- ### Διαχείριση Κόστους & Προϋπολογισμού Πρόσβαση μέσω **Dashboard → Costs**. | Καρτέλα | Σκοπός | | ----------- | -------------------------------------------------------------------------------------------------------------------------------- | | **Budget** | Ορισμός ορίων δαπανών ανά κλειδί API με ημερήσιους/εβδομαδιαίους/μηνιαίους προϋπολογισμούς και παρακολούθηση σε πραγματικό χρόνο | | **Pricing** | Προβολή και επεξεργασία καταχωρήσεων τιμολόγησης μοντέλων — κόστος ανά 1K token εισόδου/εξόδου ανά πάροχο | ```bash # API: Ορισμός προϋπολογισμού curl -X POST http://localhost:20128/api/usage/budget \ -H "Content-Type: application/json" \ -d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}' # API: Λήψη τρέχουσας κατάστασης προϋπολογισμού curl http://localhost:20128/api/usage/budget ``` **Παρακολούθηση Κόστους:** Κάθε αίτημα καταγράφει χρήση tokens και υπολογίζει το κόστος χρησιμοποιώντας τον πίνακα τιμολόγησης. Δείτε αναλύσεις στο **Dashboard → Usage** ανά πάροχο, μοντέλο και κλειδί API. --- ### Μεταγραφή Ήχου Το OmniRoute υποστηρίζει μεταγραφή ήχου μέσω του OpenAI-compatible endpoint: ```bash POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data # Παράδειγμα με curl curl -X POST http://localhost:20128/v1/audio/transcriptions \ -H "Authorization: Bearer your-api-key" \ -F "file=@audio.mp3" \ -F "model=openai/whisper-1" ``` Το `deepgram/nova-3` είναι η εγγενής διαδρομή Deepgram και χρειάζεται κλειδί API Deepgram. Αν έχει διαμορφωθεί μόνο το OpenRouter, χρησιμοποιήστε `openrouter/deepgram/nova-3`. Πάροχοι **Speech-to-Text (μεταγραφή)**: - `openai/` (whisper-compatible) - `groq/` (Groq Whisper Turbo) - `deepgram/` (οικογένεια Nova) - `assemblyai/` - `nvidia/` (Parakeet, Canary) - `huggingface/` (παραλλαγές whisper) - `qwen/` Πάροχοι **Text-to-Speech (`POST /v1/audio/speech`)**: - `openai/` (tts-1, tts-1-hd) - `hyperbolic/` - `deepgram/` (Aura) - `nvidia/` (Magpie TTS) - `elevenlabs/` - `huggingface/` - `inworld/` - `cartesia/` - `playht/` - `kie/` - `aws-polly/` - `xiaomi-mimo/` - `coqui/`, `tortoise/` - `qwen/` Υποστηριζόμενες μορφές ήχου για μεταγραφή: `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`. Οι μορφές εξόδου TTS εξαρτώνται από τον πάροχο (mp3, wav, opus, pcm, mulaw). --- ### Στρατηγικές Εξισορρόπησης Συνδυασμών Διαμορφώστε εξισορρόπηση ανά συνδυασμό στο **Dashboard → Combos → Create/Edit → Strategy**. | Στρατηγική | Περιγραφή | | ------------------ | ------------------------------------------------------------------------------------------ | | **Round-Robin** | Εναλλάσσεται διαδοχικά μεταξύ μοντέλων | | **Priority** | Πάντα δοκιμάζει το πρώτο μοντέλο· εναλλάσσεται μόνο σε σφάλμα | | **Random** | Επιλέγει τυχαίο μοντέλο από τον συνδυασμό για κάθε αίτημα | | **Weighted** | Δρομολογεί αναλογικά βάσει εκχωρημένων βαρών ανά μοντέλο | | **Least-Used** | Δρομολογεί στο μοντέλο με τα λιγότερα πρόσφατα αιτήματα (χρησιμοποιεί μετρικές συνδυασμού) | | **Cost-Optimized** | Δρομολογεί στο φθηνότερο διαθέσιμο μοντέλο (χρησιμοποιεί πίνακα τιμολόγησης) | Οι καθολικές προεπιλογές συνδυασμών μπορούν να οριστούν στο **Dashboard → Settings → Routing → Combo Defaults**. Τα timeouts στόχου συνδυασμού κληρονομούν από προεπιλογή το τρέχον timeout αιτήματος. Χρησιμοποιήστε **Target timeout (seconds)** στις προεπιλογές συνδυασμού ή σε μεμονωμένο συνδυασμό μόνο όταν ένα μικρότερο όριο ανά στόχο πρέπει να προκαλεί ταχύτερη εφεδρεία. Οι βελτιστοποιήσεις συνδυασμού μηδενικής λανθάνουσας είναι προαιρετικές. Αφήστε τις **Zero-latency optimizations** απενεργοποιημένες για να αποτρέψετε αυτές τις λειτουργίες λανθάνουσας από το να αγωνίζονται με στόχους εφεδρείας, να παραλείπουν στόχους βάσει ιστορικού TTFT, ή να συμπιέζουν αιτήματα εφεδρείας· η ενεργοποίησή τους επιτρέπει διαμορφωμένο hedging, προβλεπτικές παραλείψεις TTFT και προληπτική συμπίεση εφεδρείας για να ανταλλάξει πιστότητα δρομολόγησης/αιτήματος με χαμηλότερη λανθάνουσα ουράς. Απενεργοποιήστε το **Reasoning token buffer** όταν οι upstream πάροχοι απαιτούν αυστηρά όρια `max_tokens` / `maxOutputTokens`. Όταν είναι ενεργοποιημένο, η δρομολόγηση συνδυασμού προσθέτει χώρο reasoning-model μόνο για μοντέλα με γνωστό ανώτατο όριο εξόδου και αφήνει το όριο token του client αμετάβλητο όταν η ασφαλής buffered τιμή θα υπερέβαινε αυτό το όριο. Αν το όριο του client είναι ήδη πάνω από γνωστό ανώτατο όριο, το OmniRoute το περιορίζει σε αυτό το ανώτατο όριο πριν αποστείλει το upstream αίτημα. --- ### Dashboard Υγείας Πρόσβαση μέσω **Dashboard → Health**. Επισκόπηση υγείας συστήματος σε πραγματικό χρόνο με 6 κάρτες: | Κάρτα | Τι Εμφανίζει | | --------------------- | ------------------------------------------------------------------------- | | **System Status** | Χρόνος λειτουργίας, έκδοση, χρήση μνήμης, κατάλογος δεδομένων | | **Provider Health** | Κατάσταση runtime καθολικού circuit breaker παρόχου | | **Rate Limits** | Ενεργά connection cooldowns ανά λογαριασμό με υπολειπόμενο χρόνο | | **Active Lockouts** | Ενεργοί αποκλεισμοί εμβέλειας μοντέλου και προσωρινές εξαιρέσεις | | **Signature Cache** | Στατιστικά cache αφαίρεσης διπλότυπων (ενεργά κλειδιά, ποσοστό επιτυχίας) | | **Latency Telemetry** | Συγκέντρωση λανθάνουσας p50/p95/p99 ανά πάροχο | **Συμβουλή:** Η σελίδα Health ανανεώνεται αυτόματα κάθε 10 δευτερόλεπτα. Χρησιμοποιήστε την κάρτα circuit breaker για να εντοπίσετε ποιοι πάροχοι αντιμετωπίζουν προβλήματα. --- ## 🤖 Αυτόματη Δρομολόγηση (Χωρίς Ρύθμιση) Το OmniRoute διαθέτει έναν **αυτόματο δρομολογητή βαθμολογίας** που επιλέγει το καλύτερο μοντέλο για κάθε αίτημα από όλους τους συνδεδεμένους παρόχους — χωρίς συνδυασμό προς συντήρηση. Απλώς στείλτε το αίτημα με ένα από τα προθέματα `auto/*` και το OmniRoute θα συναρμολογήσει έναν εικονικό συνδυασμό εν κινήσει, βαθμολογώντας τους υποψηφίους βάσει καθυστέρησης, κόστους, ποσοστού επιτυχίας, καταλληλότητας πλαισίου, καταλληλότητας μοντέλου για την εργασία, πρόσφατων αποτυχιών, ορίου χρήσης και κατάστασης διακόπτη κυκλώματος. | Πρόθεμα | Βελτιστοποιεί για | | -------------- | ------------------------------------------------------------------------------------------------------------------ | | `auto` | Ισορροπημένη προεπιλογή (καθυστέρηση × κόστος × ποσοστό επιτυχίας) | | `auto/coding` | Εργασίες κώδικα: προτιμά Claude, GPT-5, GLM, Kimi, Qwen Coder, DeepSeek coders | | `auto/cheap` | Χαμηλότερο $/token, αποδέχεται υψηλότερη καθυστέρηση | | `auto/fast` | Χαμηλότερη καθυστέρηση, αγνοεί το κόστος | | `auto/offline` | Τοπικοί πάροχοι μόνο (Ollama, vLLM, llama.cpp) — χρήσιμο για απομονωμένες εγκαταστάσεις | | `auto/smart` | Ποιότητα συλλογισμού πρώτα (Opus, GPT-5 xhigh, R1, GLM 5.1 reasoning) | | `auto/lkgp` | "Τελευταίος Γνωστός Καλός Πάροχος" — καρφιτσώνει στον τελευταίο επιτυχή πάροχο, έπειτα εφαρμόζει κανόνες εφεδρείας | Παράδειγμα: ```bash curl -X POST http://localhost:20128/v1/chat/completions \ -H "Authorization: Bearer $OMNIROUTE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "auto/coding", "messages": [{ "role": "user", "content": "Refactor this Python function" }], "stream": true }' ``` Ο αυτόματος δρομολογητής περιγράφεται πλήρως στο [AUTO-COMBO.md](../routing/AUTO-COMBO.md) — συμπεριλαμβανομένου του τρόπου ρύθμισης βαρών βαθμολόγησης, αποκλεισμού παρόχων και επιθεώρησης αποφάσεων δρομολόγησης στο **Dashboard → Auto Combo**. --- ## 🔌 Ενσωμάτωση MCP & A2A Το OmniRoute είναι ταυτόχρονα **διακομιστής MCP** (Model Context Protocol) και **διακομιστής A2A** (Agent-to-Agent JSON-RPC 2.0). Οποιοδήποτε IDE ή περιβάλλον εκτέλεσης πράκτορα που είναι συμβατό με MCP μπορεί να καλεί εργαλεία του OmniRoute απευθείας — χωρίς επιπλέον περιτύλιγμα. ### Μεταφορές MCP - **SSE**: `http://localhost:20128/api/mcp/sse` - **Streamable HTTP**: `http://localhost:20128/api/mcp/stream` - **stdio**: `omniroute --mcp` (για πρόσθετα IDE που προτιμούν stdio) ### Σύνδεση του Claude Desktop Επεξεργαστείτε το `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) ή το αντίστοιχο αρχείο σε Windows/Linux: ```json { "mcpServers": { "omniroute": { "command": "omniroute", "args": ["--mcp"] } } } ``` ### Σύνδεση Cursor / Continue / VS Code MCP Χρησιμοποιήστε τη διεύθυνση SSE `http://localhost:20128/api/mcp/sse` και ένα κλειδί API Bearer που δημιουργήθηκε στο **Dashboard → API Keys**. ### Εμβέλειες Το MCP ορίζει αυτήν τη στιγμή 32 ονομαστικές εμβέλειες. Κάθε κλειδί Bearer μπορεί να περιοριστεί σε συγκεκριμένες εμβέλειες — δείτε το [MCP-SERVER.md](../frameworks/MCP-SERVER.md) για το αυθεντικό ευρετήριο εμβελειών και εργαλείων, και το [A2A-SERVER.md](../frameworks/A2A-SERVER.md) για το σχήμα JSON-RPC. --- ## 🧠 Σύστημα Δεξιοτήτων Το OmniRoute παρέχει ένα επεκτάσιμο **πλαίσιο δεξιοτήτων** (`src/lib/skills/`) ώστε οι agents και το endpoint A2A να μπορούν να εκτελούν εξειδικευμένες ρουτίνες (π.χ. `code-review`, `summarize`, `extract-facts`, `web-research`). - **Marketplace UI** — Περιήγηση και εγκατάσταση δεξιοτήτων από **Dashboard → Skills** - **Εμβέλειες ανά κλειδί** — Περιορισμός των κλειδιών API που μπορούν να καλούν συγκεκριμένες δεξιότητες - **Προσαρμοσμένες δεξιότητες** — Τοποθετήστε ένα αρχείο TypeScript στον φάκελο `src/lib/a2a/skills/`, καταχωρίστε το, και γίνεται αμέσως κλητό μέσω A2A Πλήρης αναφορά: [SKILLS.md](../frameworks/SKILLS.md). --- ## 💾 Σύστημα Μνήμης Το OmniRoute διατηρεί **μακροπρόθεσμη συνομιλιακή μνήμη** με υβριδική ανάκτηση: - **SQLite FTS5** για αναζήτηση με λέξεις-κλειδιά σε προηγούμενες συνομιλίες - **Qdrant vector store** (προαιρετικό) για σημασιολογική ανάκληση - **Αυτόματη εξαγωγή γεγονότων** — οντότητες, προτιμήσεις και αποφάσεις συνοψίζονται μετά από κάθε συνεδρία και αποθηκεύονται στον πίνακα `memory_facts` - Οι μνήμες εντοπίζονται ανά κλειδί API και ανά συνεδρία Διαχειριστείτε τις μνήμες στο **Dashboard → Memory** (αναζήτηση, επεξεργασία, εξαγωγή, εκκαθάριση). Η επιφάνεια HTTP (`/api/memory/*`) επιτρέπει στους agents να ωθούν και να αναζητούν γεγονότα μέσω προγράμματος — δείτε [MEMORY.md](../frameworks/MEMORY.md). --- ## 🔔 Webhooks Εγγραφείτε σε συμβάντα του OmniRoute για παρακολούθηση και αυτοματισμό σε πραγματικό χρόνο. - Δημιουργήστε ένα webhook στο **Dashboard → Webhooks** με URL προορισμού και μυστικό υπογραφής HMAC - Διαθέσιμα συμβάντα: `request.completed`, `request.failed`, `provider.unavailable`, `budget.exceeded`, `combo.switched`, `circuit_breaker.opened`, `circuit_breaker.closed` - Κάθε payload περιλαμβάνει `X-OmniRoute-Signature` (HMAC-SHA256) για επαλήθευση - Επαναλήψεις: 3 προσπάθειες με εκθετική καθυστέρηση, έπειτα ουρά νεκρών γραμμάτων Πλήρες σχήμα στο [WEBHOOKS.md](../frameworks/WEBHOOKS.md). --- ## ☁️ Cloud Agents Το OmniRoute ενσωματώνεται με cloud agents κωδικοποίησης (**OpenAI Codex Cloud**, **Devin**, **Jules**, **Antigravity**) ώστε να μπορείτε να αναθέτετε εργασίες μεγάλης διάρκειας από το ίδιο dashboard που διαχειρίζεται την τοπική σας δρομολόγηση. - Δημιουργήστε εργασίες στο **Dashboard → Cloud Agents** ή μέσω `POST /api/v1/agents/tasks` - Παρακολουθήστε κατάσταση, αρχεία καταγραφής και artifacts ανά εργασία - Χρησιμοποιήστε το δικό σας κλειδί API ανά πάροχο — τα διαπιστευτήρια δεν εγκαταλείπουν ποτέ την παρουσία του OmniRoute Πλήρης αναφορά: [CLOUD_AGENT.md](../frameworks/CLOUD_AGENT.md). --- ## 🛠️ Προγραμματιστική Διαχείριση Μπορείτε να διαχειριστείτε κάθε πόρο του OmniRoute (παρόχους, combos, κλειδιά, ρυθμίσεις) μέσω HTTP χρησιμοποιώντας ένα **Bearer κλειδί με την εμβέλεια `manage`**. Δημιουργήστε το κλειδί στο **Dashboard → API Keys → New Key → Scope: manage**, και στη συνέχεια: ```bash # Λίστα παρόχων curl http://localhost:20128/api/providers \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" # Προσθήκη σύνδεσης παρόχου curl -X POST http://localhost:20128/api/providers \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "provider": "openai", "apiKey": "sk-...", "name": "main" }' # Δημιουργία combo curl -X POST http://localhost:20128/api/combos \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "premium", "strategy": "priority", "models": [{ "model": "cc/claude-opus-4-7" }, { "model": "glm/glm-5.1" }] }' # Λίστα/δημιουργία κλειδιών API curl http://localhost:20128/api/keys -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" curl -X POST http://localhost:20128/api/keys -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -d '{ "name": "ci-bot", "scopes": ["chat"] }' ``` Δείτε το [API_REFERENCE.md](../reference/API_REFERENCE.md) για τον πλήρη κατάλογο endpoints και τα σχήματα αιτημάτων/αποκρίσεων. --- ## 💻 Εσωτερικό CLI Το OmniRoute διαθέτει ένα εσωτερικό CLI (`omniroute …`) για εγκατάσταση, διαγνωστικά και έλεγχο χρόνου εκτέλεσης. Αυτό είναι **ξεχωριστό από τη σελίδα "CLI Tools" στον πίνακα ελέγχου**, η οποία διαμορφώνει CLIs τρίτων (Claude Code, Cursor, Codex, Cline, …) ώστε να επικοινωνούν με το OmniRoute. ```bash omniroute setup # Διαδραστικός οδηγός (κωδικός πρόσβασης, πάροχοι, combos) omniroute setup --non-interactive # Κατάλληλο για CI omniroute doctor # Διαγνωστικά υγείας (data dir, DB, πάροχοι, θύρες) omniroute providers available # Λίστα υποστηριζόμενων παρόχων omniroute providers list # Λίστα διαμορφωμένων συνδέσεων omniroute providers test # Δοκιμή σύνδεσης παρόχου σε πραγματικό χρόνο omniroute combos list # Λίστα combos omniroute combos switch # Ορισμός προεπιλεγμένου combo omniroute models # Λίστα διαθέσιμων μοντέλων (--json, --search) omniroute keys add | list | remove # Διαχείριση κλειδιών API από το τερματικό omniroute backup # Στιγμιότυπο διαμόρφωσης + DB omniroute restore [] # Επαναφορά από στιγμιότυπο omniroute health # Λεπτομερής υγεία (breakers, cache, μνήμη) omniroute quota # Χρήση ορίου παρόχου omniroute mcp status # Κατάσταση διακομιστή MCP omniroute a2a status # Κατάσταση διακομιστή A2A omniroute tunnel list|create|stop # Tunnels Cloudflare/Tailscale/ngrok omniroute reset-password # Επαναφορά κωδικού πρόσβασης διαχειριστή omniroute --mcp # Εκκίνηση διακομιστή MCP μέσω stdio omniroute --port 3000 # Εκκίνηση διακομιστή σε προσαρμοσμένη θύρα ``` Συμβουλή: συνδυάστε το `omniroute doctor --json` με το εργαλείο παρακολούθησής σας για ειδοποιήσεις σε μη υγιείς συνδέσεις παρόχων. --- ## 🖥️ Εφαρμογή Desktop (Electron) Το OmniRoute διατίθεται ως εγγενής εφαρμογή desktop για Windows, macOS και Linux. ### Εγκατάσταση ```bash # Από τον κατάλογο electron: cd electron npm install # Λειτουργία ανάπτυξης (σύνδεση σε εκτελούμενο διακομιστή Next.js dev): npm run dev # Λειτουργία παραγωγής (χρησιμοποιεί standalone build): npm start ``` ### Δημιουργία Εγκαταστατών ```bash cd electron npm run build # Τρέχουσα πλατφόρμα npm run build:win # Windows (.exe NSIS) npm run build:mac # macOS (.dmg universal) npm run build:linux # Linux (.AppImage) ``` Έξοδος → `electron/dist-electron/` ### Βασικά Χαρακτηριστικά | Χαρακτηριστικό | Περιγραφή | | ----------------------------------- | ---------------------------------------------------------------------- | | **Ετοιμότητα Διακομιστή** | Ελέγχει τον διακομιστή πριν εμφανίσει το παράθυρο (χωρίς κενή οθόνη) | | **System Tray** | Ελαχιστοποίηση στο tray, αλλαγή θύρας, έξοδος από το μενού tray | | **Διαχείριση Θύρας** | Αλλαγή θύρας διακομιστή από το tray (επανεκκίνηση διακομιστή αυτόματα) | | **Πολιτική Ασφάλειας Περιεχομένου** | Περιοριστικό CSP μέσω επικεφαλίδων session | | **Μοναδική Παρουσία** | Μόνο μία παρουσία εφαρμογής μπορεί να εκτελείται ταυτόχρονα | | **Λειτουργία Εκτός Σύνδεσης** | Ο ενσωματωμένος διακομιστής Next.js λειτουργεί χωρίς internet | ### Μεταβλητές Περιβάλλοντος | Μεταβλητή | Προεπιλογή | Περιγραφή | | --------------------- | ---------- | ------------------------------- | | `OMNIROUTE_PORT` | `20128` | Θύρα διακομιστή | | `OMNIROUTE_MEMORY_MB` | `512` | Όριο heap Node.js (64–16384 MB) | 📖 Πλήρης τεκμηρίωση: [`electron/README.md`](../../electron/README.md)