# User Guide (Ελληνικά) 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇪🇹 [am](../../../am/docs/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) · 🇧🇦 [bs](../../../bs/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) · 🇳🇬 [ha](../../../ha/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) · 🇦🇲 [hy](../../../hy/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/USER_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/USER_GUIDE.md) · 🇮🇳 [kn](../../../kn/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) · 🇮🇳 [ml](../../../ml/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) · 🇲🇲 [my](../../../my/docs/guides/USER_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/USER_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/USER_GUIDE.md) · 🇮🇳 [pa](../../../pa/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) · 🇱🇰 [si](../../../si/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) · 🇺🇿 [uz](../../../uz/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/guides/USER_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/guides/USER_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/guides/USER_GUIDE.md) --- 🌐 **Languages:** 🇺🇸 [English](../../../../guides/USER_GUIDE.md) · 🇪🇹 [am](../../../am/docs/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) · 🇧🇦 [bs](../../../bs/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) · 🇳🇬 [ha](../../../ha/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) · 🇦🇲 [hy](../../../hy/docs/guides/USER_GUIDE.md) · 🇮🇩 [id](../../../id/docs/guides/USER_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/guides/USER_GUIDE.md) · 🇮🇹 [it](../../../it/docs/guides/USER_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/guides/USER_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/guides/USER_GUIDE.md) · 🇰🇭 [km](../../../km/docs/guides/USER_GUIDE.md) · 🇮🇳 [kn](../../../kn/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) · 🇮🇳 [ml](../../../ml/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) · 🇲🇲 [my](../../../my/docs/guides/USER_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/guides/USER_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/guides/USER_GUIDE.md) · 🇳🇴 [no](../../../no/docs/guides/USER_GUIDE.md) · 🇮🇳 [or](../../../or/docs/guides/USER_GUIDE.md) · 🇮🇳 [pa](../../../pa/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) · 🇱🇰 [si](../../../si/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) · 🇺🇿 [uz](../../../uz/docs/guides/USER_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/guides/USER_GUIDE.md) · 🇳🇬 [yo](../../../yo/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... ``` --- ## 📖 Ρύθμιση παρόχων Για μαζική προσθήκη συνδέσεων κλειδιών API από αρχείο CSV ή JSON, χρησιμοποιήστε τη διαδρομή **Πίνακας ελέγχου → Πάροχοι → Εισαγωγή από αρχείο**. Οι στήλες είναι ταξινομημένες κατά θέση (`provider,name,apiKey,baseUrl,priority`)· το `provider` πρέπει να υπάρχει ήδη ως διαχειριζόμενος πάροχος ή συμβατός κόμβος. Δείτε την ενότητα [Εισαγωγή παρόχων από αρχείο CSV ή JSON](../providers/CSV-IMPORT.md). ### 🔐 Συνδρομητικοί πάροχοι #### Claude Code (Pro/Max) ```bash Πίνακας ελέγχου → Πάροχοι → Σύνδεση Claude Code → Σύνδεση μέσω OAuth → Αυτόματη ανανέωση token → Παρακολούθηση ορίου 5 ωρών + εβδομαδιαίου ορίου Μοντέλα: cc/claude-opus-4-7 cc/claude-sonnet-4-6 cc/claude-haiku-4-5-20251001 ``` **Επαγγελματική συμβουλή:** Χρησιμοποιήστε το Opus για σύνθετες εργασίες και το Sonnet για ταχύτητα. Το OmniRoute παρακολουθεί το όριο ανά μοντέλο! Δεν υπάρχει πρόγραμμα περιήγησης στον κεντρικό υπολογιστή του OmniRoute; Εκτελέστε το `claude setup-token` οπουδήποτε είναι συνδεδεμένο το Claude Code και επικολλήστε το token διάρκειας ενός έτους στην καρτέλα **Setup Token**. Δείτε την ενότητα [Claude Code με setup token](../providers/CLAUDE_CODE_SETUP_TOKEN.md). Οι διαδρομές που είναι συμβατές με Claude και Claude Code διατηρούν την προσπάθεια συλλογισμού `max` για τα μοντέλα Opus και Sonnet. Τα μοντέλα Haiku δεν αποδέχονται το επίπεδο προσπάθειας `max`, επομένως το OmniRoute υποβαθμίζει αυτό το αίτημα σε υψηλό προϋπολογισμό συλλογισμού πριν το στείλει στον upstream πάροχο. #### OpenAI Codex (Plus/Pro) ```bash Πίνακας ελέγχου → Πάροχοι → Σύνδεση Codex → Σύνδεση μέσω OAuth (θύρα 1455) → Επαναφορά ανά 5 ώρες + εβδομαδιαία επαναφορά Μοντέλα: cx/gpt-5.5 cx/gpt-5.4 cx/gpt-5.3-codex cx/gpt-5.3-codex-spark ``` #### GitHub Copilot ```bash Πίνακας ελέγχου → Πάροχοι → Σύνδεση GitHub → OAuth μέσω GitHub → Μηνιαία επαναφορά (την 1η κάθε μήνα) Μοντέλα: 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. Πίνακας ελέγχου → Προσθήκη κλειδιού API: Πάροχος: `glm`, Κλειδί API: `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 → Πίνακας ελέγχου → Προσθήκη κλειδιού API **Χρήση:** `minimax/MiniMax-M2.1` — **Επαγγελματική συμβουλή:** Η φθηνότερη επιλογή για μεγάλο context (1M tokens)! #### Kimi K2 ($9/μήνα σταθερά) 1. Εγγραφείτε σε συνδρομή: [Moonshot AI](https://platform.kimi.ai?aff=omniroute) 2. Αποκτήστε κλειδί API → Πίνακας ελέγχου → Προσθήκη κλειδιού API **Χρήση:** `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. Δημιουργήστε ένα κλειδί API Qianfan → Πίνακας ελέγχου → Προσθήκη κλειδιού API: Πάροχος: `qianfan` **Χρήση:** `qianfan/ernie-5.1`, `qianfan/ernie-x1.1` ή άλλο αναγνωριστικό μοντέλου Qianfan συμβατού με OpenAI. ### 🆓 ΔΩΡΕΑΝ πάροχοι Οι δωρεάν πάροχοι χωρίς έλεγχο ταυτότητας διαθέτουν έναν διακόπτη δίπλα στην επιλογή **Δεν απαιτείται έλεγχος ταυτότητας** στη σελίδα του παρόχου τους. Η απενεργοποίησή του απενεργοποιεί τον συγκεκριμένο πάροχο, τον αφαιρεί από τις διαμορφωμένες/συμπτυγμένες προβολές των Παρόχων και αφαιρεί τα μοντέλα του από το `/v1/models`. #### Qoder (9 ΔΩΡΕΑΝ μοντέλα) ```bash Πίνακας ελέγχου → Σύνδεση Qoder → Σύνδεση μέσω 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 ``` #### Kiro (Claude ΔΩΡΕΑΝ) ```bash Πίνακας ελέγχου → Σύνδεση Kiro → AWS Builder ID ή Google/GitHub → ~50 πιστώσεις/μήνα Μοντέλα: 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` για να επιβεβαιώσετε τη διαθεσιμότητα.
--- ## 🧩 Προηγμένες λειτουργίες ### Προσαρμοσμένα μοντέλα Προσθέστε οποιοδήποτε ID μοντέλου σε οποιονδήποτε πάροχο χωρίς να περιμένετε ενημέρωση της εφαρμογής: ```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" ``` Ή χρησιμοποιήστε τον Πίνακα ελέγχου: **Πάροχοι → [Πάροχος] → Προσαρμοσμένα μοντέλα**. Σημειώσεις: - Η διαχείριση του OpenRouter και των παρόχων που είναι συμβατοί με OpenAI/Anthropic γίνεται αποκλειστικά από τα **Διαθέσιμα μοντέλα**. Η μη αυτόματη προσθήκη, η εισαγωγή και ο αυτόματος συγχρονισμός καταλήγουν όλα στην ίδια λίστα διαθέσιμων μοντέλων, επομένως δεν υπάρχει ξεχωριστή ενότητα Προσαρμοσμένων μοντέλων για αυτούς τους παρόχους. - Η ενότητα **Προσαρμοσμένα μοντέλα** προορίζεται για παρόχους που δεν προσφέρουν διαχειριζόμενες εισαγωγές διαθέσιμων μοντέλων. ### Προσαρμοσμένοι πάροχοι συμβατοί με το OpenAI Οποιαδήποτε πύλη υποστηρίζει το OpenAI API (ένας αυτοφιλοξενούμενος διακομιστής μεσολάβησης, το vLLM ή ένας συναθροιστής τρίτου μέρους) μπορεί να προστεθεί ως ξεχωριστός κόμβος παρόχου: 1. **Πάροχοι → Προσθήκη συμβατού με OpenAI**. 2. **Όνομα**: μια ετικέτα εμφάνισης για τον κόμβο. 3. **Πρόθεμα**: το όνομα δρομολόγησης. Οι πελάτες καλούν τα μοντέλα ως `/`, επομένως ένας κόμβος με πρόθεμα `mygw` εξυπηρετεί το `mygw/gpt-4o-mini`. Απαιτείται· δεν υπάρχει περιορισμός χαρακτήρων. 4. **Τύπος API**: η οικογένεια τελικών σημείων που εξυπηρετεί η πύλη (Chat Completions, Responses, Embeddings, ήχος, εικόνες). 5. **Βασικό URL**: η ρίζα του API, έως και το `/v1` (για παράδειγμα `https://gateway.example.com/v1`), όχι η πλήρης διαδρομή `/chat/completions`. Οι πύλες με μη τυπικές διαδρομές τις ορίζουν στις **Προηγμένες ρυθμίσεις** (διαδρομή συνομιλίας, διαδρομή μοντέλων). 6. Το πεδίο **Κλειδί API (για έλεγχο)** ελέγχει μόνο τη σύνδεση. Αφού δημιουργήσετε τον κόμβο, ανοίξτε τον και χρησιμοποιήστε την **Προσθήκη σύνδεσης** για να αποθηκεύσετε το κλειδί που θα χρησιμοποιούν τα αιτήματα. Ο κόμβος λαμβάνει ένα εσωτερικό ID της μορφής `openai-compatible--`· δεν χρειάζεται ποτέ να το πληκτρολογήσετε, καθώς το πρόθεμα είναι το δημόσιο όνομα. #### Δεσμευμένα προθέματα Ένα πρόθεμα δεν μπορεί να είναι το ID ή το ψευδώνυμο ενός ενσωματωμένου παρόχου (για παράδειγμα `openai`, `cf`), ούτε το ID ενός καταργημένου παρόχου. Ο επιλυτής μοντέλων ελέγχει τα ενσωματωμένα ID και ψευδώνυμα πριν από τους προσαρμοσμένους κόμβους, επομένως ένας κόμβος που χρησιμοποιεί ένα από αυτά τα προθέματα δεν θα λάμβανε ποτέ κίνηση: το `/model` θα κατευθυνόταν στον ενσωματωμένο πάροχο ή θα αποτύγχανε με ασφαλή τρόπο αν αυτός ο πάροχος είχε καταργηθεί. Η δημιουργία ή η επεξεργασία κόμβου με τέτοιο πρόθεμα απορρίπτεται με το μήνυμα: ```text prefix: Το "" είναι δεσμευμένο πρόθεμα παρόχου — επιλέξτε διαφορετικό πρόθεμα (τα δεσμευμένα ID/ψευδώνυμα δεν μπορούν να χρησιμοποιηθούν για προσαρμοσμένους κόμβους, επειδή αιτήματα όπως το /model δρομολογούνται σε έναν ενσωματωμένο πάροχο ή αποτυγχάνουν με ασφαλή τρόπο όταν αυτός έχει καταργηθεί) ``` Επιλέξτε ένα διακριτό πρόθεμα (`mygw`, `acme-proxy`). Αν τα αιτήματα προς έναν προσαρμοσμένο κόμβο αποτυγχάνουν με σφάλμα που αναφέρει έναν ενσωματωμένο πάροχο ή τα διαπιστευτήριά του, ελέγξτε αν το πρόθεμα του κόμβου είναι δεσμευμένο: οι κόμβοι που αποθηκεύτηκαν πριν από την εφαρμογή αυτού του κανόνα εξακολουθούν να είναι αποθηκευμένοι, αλλά το πρόθεμά τους δρομολογεί στον ενσωματωμένο πάροχο. Επεξεργαστείτε τον κόμβο και δώστε του ένα νέο πρόθεμα. ### Αλυσιδωτή σύνδεση ομότιμων OmniRoute Μια άλλη πύλη OmniRoute μπορεί να προστεθεί ως **Προσαρμοσμένος πάροχος συμβατός με OpenAI**. Χρησιμοποιήστε το βασικό URL `/v1` του ομότιμου κόμβου και ένα αποκλειστικό κλειδί API ελάχιστων δικαιωμάτων, το οποίο έχει εκδοθεί από αυτόν τον ομότιμο κόμβο. Για αμφίδρομες ή πολυαλματικές αλυσίδες, ενεργοποιήστε την προαιρετική προστασία βρόχου σε κάθε πύλη: ```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 ομότιμου κόμβου το οποίο περιλαμβάνεται ρητά στη λίστα επιτρεπόμενων λαμβάνουν την κεφαλίδα `X-OmniRoute-Peer-Trace`. Μια πύλη απορρίπτει ένα επαναλαμβανόμενο ID παρουσίας ή έναν εξαντλημένο προϋπολογισμό αλμάτων με HTTP `508 Loop Detected`· οι συνήθεις ανάντη πάροχοι δεν λαμβάνουν μεταδεδομένα ομότιμων κόμβων. Η αλυσιδωτή σύνδεση ομότιμων κόμβων δεν αποτελεί αναπαραγωγή βάσης δεδομένων ούτε ανακατεύθυνση λόγω αστοχίας κεντρικού υπολογιστή. Κάθε πύλη διατηρεί ανεξάρτητη κατάσταση SQLite, κρυφές μνήμες, μετρητές ορίων και συνεδρίες. Χρησιμοποιήστε έναν αντίστροφο διακομιστή μεσολάβησης με ελέγχους εύρυθμης λειτουργίας ή ανακατεύθυνση πελάτη λόγω αστοχίας για διαθεσιμότητα ενεργού/παθητικού ή ενεργού/ενεργού τύπου και μην προσαρτάτε ποτέ μία βάση δεδομένων SQLite σε πολλαπλές εκτελούμενες παρουσίες 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 # Ορισμός καθολικού διακομιστή μεσολάβησης curl -X PUT http://localhost:20128/api/settings/proxy \ -d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}' # Διακομιστής μεσολάβησης ανά πάροχο curl -X PUT http://localhost:20128/api/settings/proxy \ -d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}' # Δοκιμή διακομιστή μεσολάβησης 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 - Συγχρονισμός παρόχων, συνδυασμών και ρυθμίσεων μεταξύ συσκευών - Αυτόματος συγχρονισμός στο παρασκήνιο με χρονικό όριο + άμεση αποτυχία - Προτιμήστε τα `NEXT_PUBLIC_BASE_URL`/`NEXT_PUBLIC_CLOUD_URL` από την πλευρά του διακομιστή στο περιβάλλον παραγωγής ### Γρήγορη σήραγγα Cloudflare - Διαθέσιμο στο **Dashboard → Endpoints** για Docker και άλλες αυτοφιλοξενούμενες εγκαταστάσεις - Δημιουργεί μια προσωρινή διεύθυνση URL `https://*.trycloudflare.com` που προωθεί στο τρέχον συμβατό με OpenAI endpoint `/v1` - Κατά την πρώτη ενεργοποίηση, εγκαθιστά το `cloudflared` μόνο όταν απαιτείται· οι επόμενες επανεκκινήσεις επαναχρησιμοποιούν το ίδιο διαχειριζόμενο εκτελέσιμο αρχείο - Τα Quick Tunnels δεν επαναφέρονται αυτόματα μετά από επανεκκίνηση του OmniRoute ή του container· ενεργοποιήστε τα ξανά από το dashboard όταν χρειάζεται - Οι διευθύνσεις URL των tunnel είναι προσωρινές και αλλάζουν κάθε φορά που διακόπτετε/εκκινείτε το tunnel - Τα διαχειριζόμενα Quick Tunnels χρησιμοποιούν από προεπιλογή μεταφορά HTTP/2, ώστε να αποφεύγονται οι ενοχλητικές προειδοποιήσεις για το buffer UDP του QUIC σε container με περιορισμένους πόρους - Ορίστε το `CLOUDFLARED_PROTOCOL=quic` ή `auto` εάν θέλετε να παρακάμψετε την επιλογή διαχειριζόμενης μεταφοράς - Ορίστε το `CLOUDFLARED_BIN` εάν προτιμάτε να χρησιμοποιήσετε ένα προεγκατεστημένο εκτελέσιμο αρχείο `cloudflared` αντί για τη διαχειριζόμενη λήψη - Τα πάνελ Cloudflare Quick Tunnel, Tailscale Funnel και ngrok Tunnel μπορούν να εμφανίζονται ή να αποκρύπτονται στο **Settings → Appearance**. Η απόκρυψη ενός πάνελ δεν διακόπτει ένα tunnel που εκτελείται. ### Ευφυΐα LLM Gateway (Φάση 9) - **Σημασιολογική κρυφή μνήμη** — Αποθηκεύει αυτόματα στην κρυφή μνήμη αποκρίσεις χωρίς streaming και με temperature=0 (παράκαμψη με `X-OmniRoute-No-Cache: true`) - **Ιδιοδυναμία αιτημάτων** — Καταργεί τα διπλότυπα αιτήματα εντός 5 δευτερολέπτων μέσω της κεφαλίδας `Idempotency-Key` ή `X-Request-Id` - **Παρακολούθηση προόδου** — Προαιρετικά συμβάντα SSE `event: progress` μέσω της κεφαλίδας `X-OmniRoute-Progress: true` --- ### Περιβάλλον δοκιμών μεταφραστή Πρόσβαση μέσω **Dashboard → Translator**. Εντοπίστε σφάλματα και απεικονίστε τον τρόπο με τον οποίο το OmniRoute μεταφράζει αιτήματα API μεταξύ παρόχων. | Λειτουργία | Σκοπός | | ---------------- | -------------------------------------------------------------------------------------------------------- | | **Playground** | Επιλέξτε μορφές προέλευσης/προορισμού, επικολλήστε ένα αίτημα και δείτε αμέσως τη μεταφρασμένη έξοδο | | **Chat Tester** | Στείλτε ζωντανά μηνύματα συνομιλίας μέσω του proxy και εξετάστε ολόκληρο τον κύκλο αιτήματος/απόκρισης | | **Test Bench** | Εκτελέστε μαζικές δοκιμές σε πολλούς συνδυασμούς μορφών, για να επαληθεύσετε την ορθότητα της μετάφρασης | | **Live Monitor** | Παρακολουθήστε μεταφράσεις σε πραγματικό χρόνο καθώς τα αιτήματα διέρχονται μέσω του proxy | **Περιπτώσεις χρήσης:** - Εντοπίστε γιατί αποτυγχάνει ένας συγκεκριμένος συνδυασμός client/παρόχου - Επαληθεύστε ότι τα tag συλλογισμού, οι κλήσεις εργαλείων και τα system prompt μεταφράζονται σωστά - Συγκρίνετε τις διαφορές μορφής μεταξύ των μορφών OpenAI, Claude, Gemini και Responses API --- ### Στρατηγικές δρομολόγησης Διαμόρφωση μέσω **Dashboard → Settings → Routing**. Το dashboard εμφανίζει τις έξι συχνότερα χρησιμοποιούμενες στρατηγικές· οι συνδυασμοί και ο αυτόματος δρομολογητής υποστηρίζουν εσωτερικά ένα ευρύτερο σύνολο. **Στρατηγικές που εμφανίζονται στο dashboard (δρομολόγηση σε επίπεδο λογαριασμού):** | Στρατηγική | Περιγραφή | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | **Πρώτα η πλήρωση** | Χρησιμοποιεί τους λογαριασμούς κατά σειρά προτεραιότητας — ο κύριος λογαριασμός διαχειρίζεται όλα τα αιτήματα μέχρι να μην είναι διαθέσιμος | | **Κυκλική εναλλαγή** | Εναλλάσσεται μεταξύ όλων των λογαριασμών με διαμορφώσιμο όριο διατήρησης (προεπιλογή: 3 κλήσεις ανά λογαριασμό) | | **P2C (Ισχύς δύο επιλογών)** | Επιλέγει 2 τυχαίους λογαριασμούς και δρομολογεί στον υγιέστερο — εξισορροπεί τον φόρτο λαμβάνοντας υπόψη την κατάστασή τους | | **Τυχαία** | Επιλέγει τυχαία έναν λογαριασμό για κάθε αίτημα χρησιμοποιώντας ανακάτεμα Fisher-Yates | | **Λιγότερο χρησιμοποιημένος** | Δρομολογεί στον λογαριασμό με την παλαιότερη χρονική σήμανση `lastUsedAt`, κατανέμοντας ομοιόμορφα την κίνηση | | **Βελτιστοποίηση κόστους** | Δρομολογεί στον λογαριασμό με τη χαμηλότερη τιμή προτεραιότητας, βελτιστοποιώντας για τους παρόχους με το χαμηλότερο κόστος | **Προηγμένες στρατηγικές συνδυασμών και αυτόματης δρομολόγησης** (διαμορφώνονται ανά συνδυασμό ή μέσω προθεμάτων `auto/*` — δείτε το [AUTO-COMBO.md](../routing/AUTO-COMBO.md)): - `priority` — αυστηρή σειρά, χωρίς ποτέ να εφαρμόζεται κυκλική εναλλαγή - `weighted` — αναλογικός διαμοιρασμός κίνησης βάσει βαρών ανά μοντέλο - `fill-first` — εξαντλεί το πρώτο μοντέλο μέχρι να επιτευχθούν τα όρια - `round-robin` / `strict-random` / `random` - `p2c` (Ισχύς δύο επιλογών) - `least-used` και `cost-optimized` - `auto` — καθοδηγείται από βαθμολογία μεταξύ όλων των υποψηφίων - `lkgp` (Τελευταίος γνωστός λειτουργικός πάροχος) — διατηρεί τον τελευταίο επιτυχημένο πάροχο και, στη συνέχεια, επιστρέφει στους κανόνες - `context-optimized` — επιλέγει το μοντέλο με το μεγαλύτερο ελεύθερο παράθυρο περιεχομένου - `context-relay` — συνδέει διαδοχικά μοντέλα μεγάλου περιεχομένου για επόμενους γύρους #### Εξωτερική κεφαλίδα διατήρησης συνεδρίας Για εξωτερική συσχέτιση συνεδρίας (για παράδειγμα, agent Claude Code/Codex πίσω από reverse proxy), στείλτε: ```http X-Session-Id: your-session-key ``` Το OmniRoute δέχεται επίσης το `x_session_id` και επιστρέφει το ενεργό κλειδί συνεδρίας στο `X-OmniRoute-Session-Id`. Εάν χρησιμοποιείτε Nginx και στέλνετε κεφαλίδες με κάτω παύλες, ενεργοποιήστε: ```nginx underscores_in_headers on; ``` #### Ψευδώνυμα μοντέλων με χαρακτήρες wildcard Δημιουργήστε μοτίβα wildcard για την αντιστοίχιση ονομάτων μοντέλων: ``` Μοτίβο: claude-sonnet-* → Προορισμός: cc/claude-sonnet-4-6 Μοτίβο: gpt-* → Προορισμός: gh/gpt-5.3-codex ``` Τα wildcard υποστηρίζουν `*` (οποιοιδήποτε χαρακτήρες) και `?` (ένας χαρακτήρας). #### Αλυσίδες εναλλακτικών επιλογών Ορίστε καθολικές αλυσίδες εναλλακτικών επιλογών που εφαρμόζονται σε όλα τα αιτήματα: ``` Αλυσίδα: production-fallback 1. cc/claude-opus-4-7 2. gh/gpt-5.3-codex 3. glm/glm-4.7 ``` --- ### Συνήθεις συνδυασμοί παρόχων και μοτίβα δρομολόγησης Ακολουθούν παραδείγματα μοτίβων για τον συνδυασμό πολλών παρόχων και τη δρομολόγηση μεταξύ τους στο OmniRoute: #### 1. Συνδυασμός agent προγραμματισμού: Προηγμένος συλλογισμός με εναλλακτική βάσει κόστους/ταχύτητας Ιδανικό για agent προγραμματισμού (OpenCode, Claude Code, Cursor, Cline). Δρομολογεί αρχικά σε κορυφαία μοντέλα συλλογισμού και μεταβαίνει σε γρήγορα μοντέλα προγραμματισμού όταν εξαντλείται το όριο ή προκύπτουν σφάλματα. - **Dashboard**: Combos → New Combo → Name: `agent-coding` → Strategy: `Priority` - **Μοντέλα**: 1. `claude/claude-sonnet-4-6` (Κύριος agent προγραμματισμού) 2. `openai/gpt-4o` (Δευτερεύουσα εναλλακτική επιλογή υψηλής χωρητικότητας) 3. `deepseek/deepseek-v4-flash` (Εναλλακτική επιλογή υψηλής αποδοτικότητας και χαμηλού κόστους) ```bash # Παράδειγμα μέσω API curl -X POST http://localhost:20128/api/combos \ -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "agent-coding", "strategy": "priority", "models": [ { "model": "claude/claude-sonnet-4-6" }, { "model": "openai/gpt-4o" }, { "model": "deepseek/deepseek-v4-flash" } ] }' ``` #### 2. Συνδυασμός Αυτόματης Εφεδρείας Δωρεάν Βαθμίδας Συνδέει διαδοχικά πολλούς παρόχους δωρεάν βαθμίδας και παρόχους χωρίς κλειδί, ώστε να μεγιστοποιείται η διαθεσιμότητα χωρίς κόστος API. - **Στρατηγική**: `Least Used` ή `Round Robin` (κατανέμει τον φόρτο μεταξύ των ποσοστώσεων) - **Μοντέλα**: 1. `groq/llama-3.3-70b-versatile` 2. `gemini/gemini-2.5-flash` 3. `cerebras/gpt-oss-120b` ```bash # Παράδειγμα μέσω CLI omniroute combo create free-stack \ --models "groq/llama-3.3-70b-versatile,gemini/gemini-2.5-flash,cerebras/gpt-oss-120b" \ --strategy round-robin ``` #### 3. Πολυτροπική Ροή Εργασίας / Ροή Εργασίας Όρασης και Κειμένου Συνδυάζει εξειδικευμένα μοντέλα όρασης με παραγωγή κειμένου υψηλής ταχύτητας για ροές εργασίας που περιλαμβάνουν κατανόηση εικόνων και παραγωγή κώδικα. - **Μοτίβο**: Ένας συνδυασμός `Priority` που παραθέτει πρώτα τα μοντέλα με δυνατότητες όρασης και τελευταίο ένα μοντέλο κειμένου/κώδικα υψηλής διεκπεραιωτικής ικανότητας. - **Μοντέλα**: 1. `gemini/gemini-2.5-pro` (Ισχυρή κατανόηση εικόνων/πολυτροπικού περιεχομένου) 2. `openai/gpt-4o` (Ισορροπημένη χρήση όρασης και εργαλείων) 3. `deepseek/deepseek-v4-flash` (Παραγωγή κειμένου/κώδικα) --- ### Ανθεκτικότητα και Διακόπτες Κυκλώματος Ρυθμίστε τα μέσω **Πίνακας Ελέγχου → Ρυθμίσεις → Ανθεκτικότητα**. Το OmniRoute υλοποιεί ανθεκτικότητα σε επίπεδο παρόχου με πέντε στοιχεία: 1. **Ουρά Αιτημάτων και Ρύθμιση Ρυθμού** — Διαμόρφωση αιτημάτων σε επίπεδο συστήματος: - **Αιτήματα Ανά Λεπτό (RPM)** — Μέγιστος αριθμός αιτημάτων ανά λεπτό και ανά λογαριασμό - **Ελάχιστος Χρόνος Μεταξύ Αιτημάτων** — Ελάχιστο διάστημα σε χιλιοστά του δευτερολέπτου μεταξύ αιτημάτων - **Μέγιστα Ταυτόχρονα Αιτήματα** — Μέγιστος αριθμός ταυτόχρονων αιτημάτων ανά λογαριασμό 2. **Χρόνος Αναμονής Σύνδεσης** — Ρύθμιση ανά τύπο ελέγχου ταυτότητας για μία σύνδεση μετά από αποτυχίες που επιδέχονται επανάληψη: - **Βασικός Χρόνος Αναμονής** — Προεπιλεγμένο χρονικό διάστημα αναμονής για αποτυχίες ανάντη υπηρεσιών που επιδέχονται επανάληψη - **Χρήση Υποδείξεων Επανάληψης από Ανάντη Υπηρεσίες** — Τηρεί τις έγκυρες υποδείξεις `Retry-After` ή επαναφοράς, όταν παρέχονται - **Μέγιστα Βήματα Εκθετικής Καθυστέρησης** — Μέγιστο επίπεδο εκθετικής καθυστέρησης για επαναλαμβανόμενες αποτυχίες 3. **Διακόπτης Κυκλώματος Παρόχου** — Παρακολουθεί τις ολοκληρωμένες αποτυχίες του παρόχου, επισημαίνει έναν πάροχο ως υποβαθμισμένο όταν συμπληρωθεί το ρυθμισμένο όριο προειδοποίησης και ανοίγει τον διακόπτη όταν συμπληρωθεί το ρυθμισμένο όριο αποτυχιών: - **Όριο Υποβάθμισης** — Διαδοχικές αποτυχίες παρόχου πριν από τη μετάβαση σε `DEGRADED` - **Όριο Αποτυχιών** — Διαδοχικές αποτυχίες παρόχου πριν από τη μετάβαση σε `OPEN` - **Χρονικό Όριο Επαναφοράς** — Χρονικό διάστημα πριν από την εκ νέου δοκιμή του παρόχου - **CLOSED** (Υγιής) — Τα αιτήματα διεκπεραιώνονται κανονικά - **DEGRADED** — Τα αιτήματα εξακολουθούν να διεκπεραιώνονται, ενώ παρακολουθούνται οι αυξημένες αποτυχίες - **OPEN** — Ο πάροχος αποκλείεται προσωρινά μετά από επαναλαμβανόμενες αποτυχίες - **HALF_OPEN** — Γίνεται δοκιμή για να διαπιστωθεί αν ο πάροχος έχει ανακάμψει Τα όρια ρυθμού `429` που αφορούν συγκεκριμένη σύνδεση παραμένουν στον **Χρόνο Αναμονής Σύνδεσης** και δεν προσμετρώνται στον διακόπτη του παρόχου. Η κατάσταση εκτέλεσης του διακόπτη παρόχου εμφανίζεται μόνο στο **Πίνακας Ελέγχου → Υγεία**. 4. **Αναμονή για τη Λήξη του Χρόνου Αναμονής** — Αν κάθε υποψήφια σύνδεση βρίσκεται ήδη σε χρόνο αναμονής, το OmniRoute μπορεί να περιμένει μέχρι να λήξει ο συντομότερος χρόνος αναμονής και να επαναλάβει αυτόματα το ίδιο αίτημα πελάτη. 5. **Αυτόματη Ανίχνευση Ορίου Ρυθμού** — Όταν οι ανάντη πάροχοι επιστρέφουν ρητά χρονικά διαστήματα αναμονής, αυτές οι υποδείξεις παρακάμπτουν τον τοπικό χρόνο αναμονής σύνδεσης, εφόσον η ρύθμιση είναι ενεργοποιημένη. **Επαγγελματική Συμβουλή:** Χρησιμοποιήστε τη σελίδα **Υγεία** για να επιθεωρείτε και να επαναφέρετε τους ενεργούς διακόπτες παρόχων μετά από μια διακοπή λειτουργίας. Η σελίδα Ανθεκτικότητα αλλάζει μόνο τις ρυθμίσεις. --- ### Εξαγωγή / Εισαγωγή Βάσης Δεδομένων Διαχειριστείτε τα αντίγραφα ασφαλείας της βάσης δεδομένων από το **Πίνακας Ελέγχου → Ρυθμίσεις → Σύστημα και Αποθήκευση**. | Ενέργεια | Περιγραφή | | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Εξαγωγή Βάσης Δεδομένων** | Πραγματοποιεί λήψη της τρέχουσας βάσης δεδομένων SQLite ως αρχείο `.sqlite` | | **Εξαγωγή Όλων (.tar.gz)** | Πραγματοποιεί λήψη ενός πλήρους αρχείου αντιγράφου ασφαλείας που περιλαμβάνει: βάση δεδομένων, ρυθμίσεις, συνδυασμούς, συνδέσεις παρόχων (χωρίς διαπιστευτήρια), μεταδεδομένα κλειδιών API | | **Εισαγωγή Βάσης Δεδομένων** | Μεταφορτώνει ένα αρχείο `.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 μεταξύ υπολογιστών - Δημιουργία εξωτερικών αντιγράφων ασφαλείας για αποκατάσταση μετά από καταστροφή - Κοινή χρήση ρυθμίσεων μεταξύ μελών της ομάδας (εξαγωγή όλων → κοινή χρήση αρχείου) --- ### Πίνακας Ελέγχου Ρυθμίσεων Η σελίδα ρυθμίσεων είναι οργανωμένη σε **7 καρτέλες** για εύκολη πλοήγηση: | Καρτέλα | Περιεχόμενα | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Γενικά** | Εργαλεία αποθήκευσης συστήματος, προεπιλεγμένη συμπεριφορά, ορατότητα σηράγγων Endpoint | | **Εμφάνιση** | Στοιχεία ελέγχου θέματος (φωτεινό/σκοτεινό/συστήματος), ορατότητα πλευρικής γραμμής, εναλλαγές πλαισίων για τις κάρτες σηράγγων Cloudflare/Tailscale/ngrok | | **AI** | Προϋπολογισμός συλλογισμού (passthrough / αυτόματη αφαίρεση / προσαρμοσμένος / προσαρμοζόμενος — δείτε [THINKING_BUDGET.md](./THINKING_BUDGET.md)), καθολική προτροπή συστήματος, στατιστικά cache προτροπών | | **Ασφάλεια** | Ρυθμίσεις σύνδεσης/κωδικού πρόσβασης, έλεγχος πρόσβασης IP, έλεγχος ταυτότητας API για το `/models`, αποκλεισμός παρόχων, προστασία από έγχυση προτροπών | | **Δρομολόγηση** | Καθολική στρατηγική δρομολόγησης (Fill First / Round Robin / P2C / Random / Least Used / Cost Optimized), ψευδώνυμα μοντέλων με χαρακτήρες wildcard, αλυσίδες εφεδρείας, προεπιλογές combo | | **Ανθεκτικότητα** | Ουρά αιτημάτων, χρόνος αναμονής επανασύνδεσης, ρύθμιση breaker παρόχου και συμπεριφορά αναμονής για τη λήξη του χρόνου αναμονής | | **Για προχωρημένους** | Καθολική ρύθμιση proxy (HTTP/SOCKS5), παρακάμψεις proxy ανά πάροχο | Η ενότητα «Γενικά» δεν αναπαράγει πλέον τις σημειώσεις μόνο για ανάγνωση σχετικά με την καταγραφή και την cache. Οι ρυθμίσεις διατήρησης και βελτιστοποίησης της βάσης δεδομένων αποθηκεύονται μέσω του `/api/settings/database`· η μη αυτόματη εκκαθάριση της cache χρησιμοποιεί το `DELETE /api/cache`. Τα όρια γραμμών των αρχείων καταγραφής αιτημάτων και proxy ελέγχονται από τα `CALL_LOGS_TABLE_MAX_ROWS` και `PROXY_LOGS_TABLE_MAX_ROWS`. --- ### Διαχείριση Κόστους & Προϋπολογισμού Πρόσβαση μέσω **Πίνακας ελέγχου → Κόστη**. | Καρτέλα | Σκοπός | | ------------------ | -------------------------------------------------------------------------------------------------------------------------------- | | **Προϋπολογισμός** | Ορισμός ορίων δαπανών ανά κλειδί API με ημερήσιους/εβδομαδιαίους/μηνιαίους προϋπολογισμούς και παρακολούθηση σε πραγματικό χρόνο | | **Τιμολόγηση** | Προβολή και επεξεργασία καταχωρίσεων τιμολόγησης μοντέλων — κόστος ανά 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 ``` **Παρακολούθηση κόστους:** Κάθε αίτημα καταγράφει τη χρήση token και υπολογίζει το κόστος χρησιμοποιώντας τον πίνακα τιμολόγησης. Δείτε αναλύσεις στην ενότητα **Πίνακας ελέγχου → Χρήση** ανά πάροχο, μοντέλο και κλειδί API. --- ### Μεταγραφή Ήχου Το OmniRoute υποστηρίζει μεταγραφή ήχου μέσω του endpoint που είναι συμβατό με το OpenAI: ```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`. Πάροχοι **μετατροπής ομιλίας σε κείμενο (μεταγραφή)**: - `openai/` (συμβατό με whisper) - `groq/` (Groq Whisper Turbo) - `deepgram/` (οικογένεια Nova) - `assemblyai/` - `nvidia/` (Parakeet, Canary) - `huggingface/` (παραλλαγές whisper) - `qwen/` Πάροχοι **μετατροπής κειμένου σε ομιλία (`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). --- ### Στρατηγικές Εξισορρόπησης Combo Ρυθμίστε την εξισορρόπηση ανά combo στην ενότητα **Πίνακας ελέγχου → Combos → Δημιουργία/Επεξεργασία → Στρατηγική**. | Στρατηγική | Περιγραφή | | -------------------------------------- | ----------------------------------------------------------------------------------------- | | **Round-Robin** | Εναλλάσσεται διαδοχικά μεταξύ των μοντέλων | | **Προτεραιότητα** | Δοκιμάζει πάντα πρώτα το πρώτο μοντέλο· χρησιμοποιεί εφεδρικό μόνο σε περίπτωση σφάλματος | | **Τυχαία** | Επιλέγει ένα τυχαίο μοντέλο από το combo για κάθε αίτημα | | **Σταθμισμένη** | Δρομολογεί αναλογικά βάσει των βαρών που έχουν εκχωρηθεί ανά μοντέλο | | **Λιγότερο χρησιμοποιημένο** | Δρομολογεί στο μοντέλο με τα λιγότερα πρόσφατα αιτήματα (χρησιμοποιεί μετρικές combo) | | **Βελτιστοποιημένη ως προς το κόστος** | Δρομολογεί στο φθηνότερο διαθέσιμο μοντέλο (χρησιμοποιεί τον πίνακα τιμολόγησης) | Οι καθολικές προεπιλογές combo μπορούν να οριστούν στην ενότητα **Πίνακας ελέγχου → Ρυθμίσεις → Δρομολόγηση → Προεπιλογές Combo**. Τα χρονικά όρια προορισμού combo κληρονομούν από προεπιλογή το τρέχον χρονικό όριο αιτήματος. Χρησιμοποιήστε το **Χρονικό όριο προορισμού (δευτερόλεπτα)** στις προεπιλογές combo ή σε ένα μεμονωμένο combo μόνο όταν ένα μικρότερο όριο ανά προορισμό πρέπει να ενεργοποιεί ταχύτερη εφεδρική μετάβαση. Οι βελτιστοποιήσεις combo μηδενικής καθυστέρησης είναι προαιρετικές. Αφήστε τις **Βελτιστοποιήσεις μηδενικής καθυστέρησης** απενεργοποιημένες για να αποτρέψετε αυτές τις λειτουργίες καθυστέρησης από το να συναγωνίζονται εφεδρικούς προορισμούς, να παρακάμπτουν προορισμούς βάσει του ιστορικού TTFT ή να συμπιέζουν εφεδρικά αιτήματα· η ενεργοποίησή τους επιτρέπει τη ρυθμισμένη αντιστάθμιση, τις προγνωστικές παρακάμψεις TTFT και την προληπτική συμπίεση εφεδρικών αιτημάτων, ανταλλάσσοντας την πιστότητα δρομολόγησης/αιτήματος με χαμηλότερη καθυστέρηση ουράς. Απενεργοποιήστε το **Reasoning token buffer** όταν οι ανάντη πάροχοι απαιτούν αυστηρά όρια `max_tokens` / `maxOutputTokens`. Όταν είναι ενεργοποιημένο, η συνδυαστική δρομολόγηση προσθέτει επιπλέον περιθώριο για μοντέλα συλλογισμού μόνο σε μοντέλα με γνωστό ανώτατο όριο εξόδου και αφήνει αμετάβλητο το όριο token του πελάτη όταν η ασφαλής τιμή με το περιθώριο υπερβαίνει αυτό το ανώτατο όριο. Εάν το όριο του πελάτη είναι ήδη υψηλότερο από ένα γνωστό ανώτατο όριο, το OmniRoute το περιορίζει σε αυτό το ανώτατο όριο πριν στείλει το αίτημα στον ανάντη πάροχο. --- ### Πίνακας ελέγχου εύρυθμης λειτουργίας Αποκτήστε πρόσβαση μέσω **Πίνακας ελέγχου → Εύρυθμη λειτουργία**. Επισκόπηση της εύρυθμης λειτουργίας του συστήματος σε πραγματικό χρόνο με 6 κάρτες: | Κάρτα | Τι εμφανίζει | | ------------------------------ | ------------------------------------------------------------------------------- | | **Κατάσταση συστήματος** | Χρόνος λειτουργίας, έκδοση, χρήση μνήμης, κατάλογος δεδομένων | | **Εύρυθμη λειτουργία παρόχων** | Κατάσταση χρόνου εκτέλεσης του καθολικού μηχανισμού διακοπής κυκλώματος παρόχων | | **Όρια ρυθμού** | Ενεργοί χρόνοι αναμονής συνδέσεων ανά λογαριασμό, με τον χρόνο που απομένει | | **Ενεργοί αποκλεισμοί** | Ενεργοί αποκλεισμοί ανά μοντέλο και προσωρινές εξαιρέσεις | | **Κρυφή μνήμη υπογραφών** | Στατιστικά κρυφής μνήμης αποδιπλοποίησης (ενεργά κλειδιά, ποσοστό επιτυχιών) | | **Τηλεμετρία καθυστέρησης** | Συγκεντρωτικά στοιχεία καθυστέρησης p50/p95/p99 ανά πάροχο | **Επαγγελματική συμβουλή:** Η σελίδα εύρυθμης λειτουργίας ανανεώνεται αυτόματα κάθε 10 δευτερόλεπτα. Χρησιμοποιήστε την κάρτα του μηχανισμού διακοπής κυκλώματος για να εντοπίσετε ποιοι πάροχοι αντιμετωπίζουν προβλήματα. --- ## 🤖 Αυτόματη Δρομολόγηση (Χωρίς Ρύθμιση) Το 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)