# 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)