# 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) · 🇬🇷 [el](../../../el/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) · 🇰🇭 [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) · 🇬🇷 [el](../../../el/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) · 🇰🇭 [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)
- [ღრუბლოვანი აგენტები](#-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 | გამოყენების მიხედვით | არ არის | ულტრასწრაფი ინფერენსისთვის |
| | xAI (Grok) | გამოყენების მიხედვით | არ არის | Grok 4-ის მსჯელობისთვის |
| | Mistral | გამოყენების მიხედვით | არ არის | ევროკავშირში განთავსებული მოდელებისთვის |
| | Perplexity | გამოყენების მიხედვით | არ არის | ძიებით გაუმჯობესებული ამოცანებისთვის |
| | Together AI | გამოყენების მიხედვით | არ არის | ღია კოდის მოდელებისთვის |
| | Fireworks AI | გამოყენების მიხედვით | არ არის | სწრაფი FLUX სურათებისთვის |
| | Cerebras | გამოყენების მიხედვით | არ არის | ვაფლის მასშტაბის სიჩქარისთვის |
| | 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 ტოკენი/თვე | პროგნოზირებადი ხარჯისთვის |
| **🆓 უფასო** | Qoder | $0 | მოქმედებს პროვაიდერის ლიმიტები | გადაამოწმეთ მიმდინარე კატალოგი |
| | Kiro | $0 | ~50 კრედიტი/თვე | უფასო Claude-ისთვის |
---
## 🎯 გამოყენების შემთხვევები
### შემთხვევა 1: „მე მაქვს Claude Pro-ს გამოწერა“
**პრობლემა:** კვოტა გამოუყენებლად იწურება, ინტენსიური კოდირებისას კი მოქმედებს სიხშირის ლიმიტები
```
კომბინაცია: "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 კოდირებისთვის
```
კომბინაცია: "zero-cost"
1. if/kimi-k2.7-code (მითითებულია უფასო წვდომა; შესაძლოა მოქმედებდეს სიხშირის ლიმიტები)
2. kr/qwen3-coder-next (Kiro-ს უფასო სარეზერვო ვარიანტი)
თვიური ღირებულება: $0
ხარისხი: თქვენი სამუშაო დატვირთვისთვის გადაამოწმეთ მოდელი, ლიმიტები, კონფიდენციალურობა და SLA
```
### შემთხვევა 3: „მჭირდება კოდირება 24/7 რეჟიმში, შეფერხებების გარეშე“
**პრობლემა:** ვადები მაქვს და შეფერხებებს ვერ დავუშვებ
```
კომბინაცია: "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 დონე ზრდის მდგრადობას; ზედა დონის სერვისების ხელმისაწვდომობა გარანტირებული არ არის
თვიური ღირებულება: $20-200 (გამოწერები) + $10-20 (სარეზერვო ვარიანტი)
```
### შემთხვევა 4: „მსურს უფასო AI OpenClaw-ში“
**პრობლემა:** მჭირდება AI ასისტენტი შეტყობინებების აპებში, სრულიად უფასოდ
```
კომბინაცია: "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...
```
---
## 📖 პროვაიდერის დაყენება
CSV ან JSON ფაილიდან API გასაღების კავშირების მასობრივად დასამატებლად გამოიყენეთ **მართვის პანელი → პროვაიდერები → ფაილიდან იმპორტი**. სვეტების რიგითობა ფიქსირებულია (`provider,name,apiKey,baseUrl,priority`); `provider` უკვე უნდა არსებობდეს, როგორც მართვადი პროვაიდერი ან თავსებადი კვანძი. იხილეთ [პროვაიდერების იმპორტი CSV ან JSON ფაილიდან](../providers/CSV-IMPORT.md).
### 🔐 სააბონენტო პროვაიდერები
#### Claude Code (Pro/Max)
```bash
მართვის პანელი → პროვაიდერები → Claude Code-ის დაკავშირება
→ OAuth ავტორიზაცია → ტოკენის ავტომატური განახლება
→ 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-ში ავტორიზებული ხართ, და ერთწლიანი ტოკენი ჩასვით **Setup Token** ჩანართში. იხილეთ [Claude Code დაყენების ტოკენით](../providers/CLAUDE_CODE_SETUP_TOKEN.md).
Claude-ისა და Claude Code-თან თავსებადი მარშრუტები Opus და Sonnet
მოდელებისთვის ინარჩუნებს აზროვნების `max` ძალისხმევას. Haiku მოდელები `max` ძალისხმევის დონეს არ იღებს, ამიტომ OmniRoute
ამ მოთხოვნას ზემოთ გაგზავნამდე აზროვნების მაღალ ბიუჯეტამდე ამცირებს.
#### 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-ჯერ მეტ კვოტას 7-ჯერ ნაკლებ ფასად! ყოველდღიურად ნულდება დილის 10:00 საათზე.
#### MiniMax M2.1 (5-საათიანი განულება, $0.20/1M)
1. დარეგისტრირდით: [MiniMax](https://www.minimax.io)
2. მიიღეთ API გასაღები → მართვის პანელი → API გასაღების დამატება
**გამოყენება:** `minimax/MiniMax-M2.1` — **პროფესიონალური რჩევა:** ყველაზე იაფი ვარიანტია გრძელი კონტექსტისთვის (1M ტოკენი)!
#### Kimi K2 (ფიქსირებული $9/თვეში)
1. გამოიწერეთ: [Moonshot AI](https://platform.kimi.ai?aff=omniroute)
2. მიიღეთ API გასაღები → მართვის პანელი → API გასაღების დამატება
**გამოყენება:** `kimi/kimi-k2.5` — **პროფესიონალური რჩევა:** ფიქსირებული $9/თვეში 10M ტოკენისთვის = ეფექტური ღირებულება $0.90/1M!
#### Baidu Qianfan / ERNIE
1. დარეგისტრირდით: [Baidu AI Cloud Qianfan](https://cloud.baidu.com/product/wenxinworkshop)
2. შექმენით Qianfan API გასაღები → მართვის პანელი → API გასაღების დამატება: პროვაიდერი: `qianfan`
**გამოყენება:** `qianfan/ernie-5.1`, `qianfan/ernie-x1.1` ან Qianfan-ის სხვა OpenAI-თან თავსებადი მოდელის ID.
### 🆓 უფასო პროვაიდერები
ავთენტიფიკაციის არმომთხოვნ უფასო პროვაიდერებს თავიანთ გვერდზე **ავთენტიფიკაცია საჭირო არ არის** პარამეტრთან ჩამრთველი აქვთ.
მისი გამორთვა პროვაიდერს გათიშავს, წაშლის მას პროვაიდერების კონფიგურირებული/კომპაქტური ხედებიდან და
მის მოდელებს `/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
```
---
## 🎨 კომბინაციები
კომბინაციის ბარათების თანმიმდევრობა შეგიძლიათ პირდაპირ **მართვის პანელი → კომბინაციები** განყოფილებაში შეცვალოთ, თითოეულ ბარათზე არსებული სახელურის გადათრევით. თანმიმდევრობა ინახება SQLite-ში და ხელახლა ჩატვირთვისას აღდგება.
### მაგალითი 1: გამოწერის მაქსიმალურად გამოყენება → იაფი სარეზერვო ვარიანტი
```
მართვის პანელი → კომბინაციები → ახლის შექმნა
სახელი: premium-coding
მოდელები:
1. cc/claude-opus-4-7 (ძირითადი გამოწერა)
2. glm/glm-4.7 (იაფი სარეზერვო ვარიანტი, $0.6/1M)
3. minimax/MiniMax-M2.7 (ყველაზე იაფი სათადარიგო ვარიანტი, $0.3/1M)
CLI-ში გამოყენება: premium-coding
```
### მაგალითი 2: მხოლოდ უფასო (ნულოვანი ღირებულება)
```
სახელი: free-combo
მოდელები:
1. if/kimi-k2.7-code (მითითებულია უფასო წვდომა; შესაძლოა მოქმედებდეს პროვაიდერის შეზღუდვები)
2. kr/qwen3-coder-next (Kiro-ს უფასო სათადარიგო ვარიანტი)
ღირებულება: ამჟამად მითითებულია, როგორც $0; პირობები და ხელმისაწვდომობა შესაძლოა შეიცვალოს
```
---
## 🔧 CLI-ს ინტეგრაცია
### Cursor IDE
**Cursor-ის OmniRoute-ის კლიენტად გამოყენება** (Cursor-ის ჩატის OmniRoute-ის გავლით მარშრუტიზაცია):
```
პარამეტრები → მოდელები → გაფართოებული:
OpenAI API-ის საბაზისო URL: http://localhost:20128/v1
OpenAI API-ის გასაღები: [OmniRoute-ის მართვის პანელიდან]
მოდელი: cc/claude-opus-4-7
```
**OmniRoute-ის Cursor-ის პროვაიდერად გამოყენება** (OmniRoute მიმართავს Cursor-ის ზედა დონის სერვისს): უპირატესობა მიანიჭეთ
**მართვის პანელი → პროვაიდერები → Cursor → 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-თან თავსებადი ძირეული საბოლოო წერტილი. `ANTHROPIC_BASE_URL`-ს `/v1` არ დაუმატოთ.
### 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" }]
}
}
}
}
```
**ან გამოიყენეთ მართვის პანელი:** CLI-ის ხელსაწყოები → OpenClaw → ავტომატური კონფიგურაცია
### Cline / Continue / RooCode
```
პროვაიდერი: OpenAI-თან თავსებადი
საბაზისო URL: http://localhost:20128/v1
API-ის გასაღები: [მართვის პანელიდან]
მოდელი: 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`-დან.
### სისტემურ პანელში მუშაობის რეჟიმი
გაუშვით OmniRoute სისტემურ პანელში:
```bash
omniroute serve --tray
```
ბრძანება მუშაობას ასრულებს მას შემდეგ, რაც სერვერი და სისტემური პანელის ხატულა მზად იქნება.
სერვერი ტერმინალის გარეშე აგრძელებს მუშაობას.
სისტემურ პანელში მუშაობის რეჟიმი მხარდაჭერილია macOS-ზე, Windows-ზე და გრაფიკულ Linux-სესიებში. ამ რეჟიმში მართვის პანელი ავტომატურად არ იხსნება.
შემდეგი მოქმედებებისთვის გამოიყენეთ სისტემური პანელის მენიუ:
- გახსენით მართვის პანელი.
- გახსენით `/dashboard/logs`.
- შეცვალეთ ავტომატური გაშვების პარამეტრი.
- გააჩერეთ OmniRoute.
არ გამოიყენოთ `--tray` შემდეგ პარამეტრებთან ერთად:
- `--daemon`
- `--log`
- `--no-recovery`
ამ რეჟიმებს პროცესზე ფლობის განსხვავებული მოდელები სჭირდება.
ჩართეთ ავტომატური გაშვება სისტემაში მომდევნო შესვლისას:
```bash
omniroute autostart enable
```
ავტომატური გაშვება macOS-ზე, Windows-ზე და გრაფიკულ Linux-სესიებში სისტემურ პანელში მუშაობის რეჟიმს იყენებს. გრაფიკული გარემოს გარეშე 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-ის პაკეტირება და ნატიურად ინსტალაცია `xbps-src` კროსკომპილაციის ფრეიმვორკის გამოყენებით. ეს ავტომატიზაციას უკეთებს Node.js-ის დამოუკიდებელ აგებას საჭირო `better-sqlite3` ნატიურ ბაინდინგებთან ერთად.
xbps-src-ის შაბლონის ნახვა
```bash
# შაბლონის ფაილი '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() {
# node-gyp-ისთვის სამიზნე CPU-ის არქიტექტურის განსაზღვრა
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) ყველა დამოკიდებულების ინსტალაცია – სკრიპტების გამოტოვებით
NODE_ENV=development npm ci --ignore-scripts
# 2) Next.js-ის დამოუკიდებელი პაკეტის აგება
npm run build
# 3) სტატიკური რესურსების დამოუკიდებელ პაკეტში კოპირება
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) კომპილირებული ბაინდინგის დამოუკიდებელ პაკეტში მოთავსება
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) Next.js-ის სტატიკური ანალიზის მიერ გამოტოვებული pino-ს გაშვების გარემოს დამოკიდებულებების კოპირება:
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-ის აპის როუტერის ცარიელი დირექტორიების წაშლის თავიდან აცილება
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` | მონაცემთა დირექტორია (მონაცემთა ბაზა, გამოყენების მონაცემები, ჟურნალები) |
| `PORT` | ფრეიმვორკის ნაგულისხმევი მნიშვნელობა | სერვისის პორტი (მაგალითებში — `20128`) |
| `HOSTNAME` | ფრეიმვორკის ნაგულისხმევი მნიშვნელობა | მისაბმელი ჰოსტი (Docker-ის ნაგულისხმევი მნიშვნელობაა `0.0.0.0`) |
| `NODE_ENV` | შესრულების გარემოს ნაგულისხმევი მნიშვნელობა | განთავსებისთვის მიუთითეთ `production` |
| `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | საჯარო საბაზისო URL, რომელიც აისახება მართვის პანელზე და ხელმისაწვდომია სერვერისთვის (ანაცვლებს მოძველებულ `BASE_URL`-ს) |
| `NEXT_PUBLIC_CLOUD_URL` | `https://omniroute.dev` | ღრუბელთან სინქრონიზაციის ბოლო წერტილის საბაზისო URL (ანაცვლებს მოძველებულ `CLOUD_URL`-ს) |
| `API_KEY_SECRET` | `endpoint-proxy-api-key-secret` | HMAC-ის საიდუმლო გასაღები გენერირებული API გასაღებებისთვის |
| `REQUIRE_API_KEY` | `false` | `/v1/*`-ზე Bearer API გასაღების სავალდებულო გამოყენება |
| `ALLOW_API_KEY_REVEAL` | `false` | ავტორიზებულ მართვის პანელის მომხმარებლებს მოთხოვნისამებრ შენახული API გასაღებების სრული მნიშვნელობების ნახვის უფლება |
| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | პროვაიდერის ლიმიტების კეშირებული მონაცემების სერვერის მხრიდან განახლების პერიოდულობა; ინტერფეისის განახლების ღილაკები კვლავ ხელით სინქრონიზაციას იწვევს |
| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | ჩაწერის/იმპორტის/აღდგენის წინ SQLite-ის ავტომატური სარეზერვო ასლების შექმნის გამორთვა; ხელით სარეზერვო ასლების შექმნა კვლავ მუშაობს |
| `APP_LOG_TO_FILE` | `true` | რთავს აპლიკაციისა და აუდიტის ჟურნალების დისკზე ჩაწერას |
| `AUTH_COOKIE_SECURE` | `false` | ავტორიზაციის ქუქის `Secure` ატრიბუტის იძულებით გამოყენება (HTTPS უკუ-პროქსის უკან) |
| `CLOUDFLARED_BIN` | არ არის დაყენებული | მართული ჩამოტვირთვის ნაცვლად არსებული `cloudflared` ბინარული ფაილის გამოყენება |
| `CLOUDFLARED_PROTOCOL` | `http2` | მართული Quick Tunnels-ის ტრანსპორტი (`http2`, `quic` ან `auto`) |
| `OMNIROUTE_MEMORY_MB` | `512` | Node.js-ის heap-ის ლიმიტი MB-ში |
| `PROMPT_CACHE_MAX_SIZE` | `50` | მოთხოვნების კეშის ჩანაწერების მაქსიმალური რაოდენობა |
| `SEMANTIC_CACHE_MAX_SIZE` | `100` | სემანტიკური კეშის ჩანაწერების მაქსიმალური რაოდენობა |
გარემოს ცვლადების სრული ცნობარისთვის იხილეთ [README](../README.md).
---
## 📊 ხელმისაწვდომი მოდელები
ყველა ხელმისაწვდომი მოდელის ნახვა
> ქვემოთ მოცემული სია შერჩეულია `open-sse/config/providerRegistry.ts`-დან v3.8.0-ისთვის. ღრუბლოვანი კატალოგები (Gemini, OpenRouter და სხვ.) დინამიკურად სინქრონდება — სრული მიმდინარე კატალოგის სანახავად გახსენით **Dashboard → Providers → [provider] → Available Models** ან გამოიძახეთ `GET /api/models/catalog`.
>
> თუ პროვაიდერის ჩაშენებული სია მოძველდა, გამოიყენეთ **Import from /models** ამ გვერდზე (ან ჩართეთ **Auto-Sync**), რათა მიიღოთ აქტუალური გარე კატალოგი. ეს შემოწმდა v3.8.50-ში LLM7.io-სთვის (`gemini-3.1-flash-lite`) და UncloseAI-სთვის (`solidrust/Hermes-3-Llama-3.1-8B-AWQ`); იმავე ტესტირებისას Pollinations-ის ანონიმური წვდომა კვლავ გარე სერვისის მიერ იყო შეზღუდული.
**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: გამოიყენეთ მიმდინარე კატალოგი, რომელიც ნაჩვენებია **Dashboard → Providers → Kiro → Available Models** განყოფილებაში. ხელმისაწვდომობა დამოკიდებულია ანგარიშსა და გეგმაზე.
**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: `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/`)** — ვაფლის მასშტაბის: `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/`)**: Google-იდან API გასაღების მიხედვით მიმდინარე რეჟიმში სინქრონდება — სტატიკური სია არ არსებობს. დააკავშირეთ გასაღები **Dashboard → Providers**-ში, შემდეგ კი მიმდინარე კატალოგის იმპორტისთვის გამოიყენეთ **Available Models** (მაგ., `gemini/gemini-3-pro`, `gemini/gemini-3-flash`).
**სხვა თავსებადი პროვაიდერები** (შერჩეული): `cohere`, `databricks`, `snowflake`, `together`, `vertex`, `alibaba`, `alibaba-cn`, `bedrock` (`aws-bedrock`-ის მეშვეობით), `azure-ai`, `openrouter` (გამჭოლი კატალოგი), `siliconflow`, `hyperbolic`, `huggingface`, `featherless-ai`, `cloudflare-ai`, `scaleway`, `deepinfra`, `vercel-ai-gateway`, `bazaarlink`, `friendliai`, `nous-research`, `reka`, `volcengine`, `ai21`, `gigachat`. თითოეული საკუთარ მოდელების სიას ინახავს `providerRegistry.ts`-ში და შეიძლება ავტომატურად სინქრონდეს, როდესაც პროვაიდერი `/models` საბოლოო წერტილს ხელმისაწვდომს ხდის.
**შენიშვნა მოდელის ID-ების შესახებ:** OmniRoute იყენებს პროვაიდერის ნატიურ ID-ებს (`claude-opus-4-8`, `gpt-5.5`, `glm-5.1`, `MiniMax-M2.7`, `kimi-k2.5`, `grok-4.20-0309-reasoning`). ზოგიერთი ID შეიცავს წერტილით გამოყოფილ ვერსიებს, რადგან გარე 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-ის ტიპი**: იმ ბოლო წერტილების ოჯახი, რომელსაც კარიბჭე ემსახურება (ჩატის დასრულებები, პასუხები, ვექტორული წარმოდგენები, აუდიო, სურათები).
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-თან თავსებადი** პროვაიდერი. გამოიყენეთ თანამონაწილის `/v1` საბაზისო URL და მის მიერ გაცემული, მინიმალური პრივილეგიების მქონე გამოყოფილი 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
```
`X-OmniRoute-Peer-Trace` სათაურს მხოლოდ იმ თანამონაწილის URL-ზე გაგზავნილი მოთხოვნები იღებს, რომელიც ნებადართულთა სიაში აშკარად არის მითითებული. კარიბჭე განმეორებულ ინსტანციის 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`).
### ღრუბლოვანი სინქრონიზაცია
- პროვაიდერების, კომბინაციებისა და პარამეტრების სინქრონიზაცია მოწყობილობებს შორის
- ავტომატური ფონური სინქრონიზაცია დროის ლიმიტითა და სწრაფი შეწყვეტით
- საწარმოო გარემოში უპირატესობა მიანიჭეთ სერვერის მხარის `NEXT_PUBLIC_BASE_URL`/`NEXT_PUBLIC_CLOUD_URL`-ს
### Cloudflare-ის სწრაფი გვირაბი
- ხელმისაწვდომია **Dashboard → Endpoints**-ში Docker-ისა და სხვა თვითჰოსტირებული განთავსებებისთვის
- ქმნის დროებით `https://*.trycloudflare.com` URL-ს, რომელიც გადამისამართდება თქვენს მიმდინარე OpenAI-თან თავსებად `/v1` საბოლოო წერტილზე
- პირველად ჩართვისას `cloudflared` ინსტალირდება მხოლოდ საჭიროების შემთხვევაში; შემდგომი გადატვირთვები იმავე მართულ ბინარულ ფაილს იყენებს
- Quick Tunnels ავტომატურად არ აღდგება OmniRoute-ის ან კონტეინერის გადატვირთვის შემდეგ; საჭიროების შემთხვევაში ხელახლა ჩართეთ ისინი დაფიდან
- გვირაბის URL-ები დროებითია და გვირაბის ყოველი შეჩერების/გაშვებისას იცვლება
- მართული Quick Tunnels ნაგულისხმევად იყენებს HTTP/2 ტრანსპორტს, რათა რესურსებით შეზღუდულ კონტეინერებში თავიდან აიცილოს QUIC UDP ბუფერთან დაკავშირებული ხმაურიანი გაფრთხილებები
- დააყენეთ `CLOUDFLARED_PROTOCOL=quic` ან `auto`, თუ გსურთ მართული ტრანსპორტის არჩევანის გადაფარვა
- დააყენეთ `CLOUDFLARED_BIN`, თუ მართული ჩამოტვირთვის ნაცვლად წინასწარ დაინსტალირებული `cloudflared` ბინარული ფაილის გამოყენება გირჩევნიათ
- Cloudflare Quick Tunnel-ის, Tailscale Funnel-ისა და ngrok Tunnel-ის პანელების ჩვენება ან დამალვა შესაძლებელია **Settings → Appearance**-ში. პანელის დამალვა გაშვებულ გვირაბს არ აჩერებს.
### LLM Gateway-ის ინტელექტუალური ფუნქციები (ფაზა 9)
- **სემანტიკური ქეში** — ავტომატურად ინახავს ქეშში არასტრიმინგულ, temperature=0 პასუხებს (`X-OmniRoute-No-Cache: true`-ით გვერდის ავლა)
- **მოთხოვნების იდემპოტენტურობა** — `Idempotency-Key` ან `X-Request-Id` სათაურის მეშვეობით 5 წამის განმავლობაში ახდენს მოთხოვნების დუბლიკატების აღმოფხვრას
- **პროგრესის თვალყურის დევნება** — სურვილისამებრ SSE `event: progress` მოვლენები `X-OmniRoute-Progress: true` სათაურის მეშვეობით
---
### მთარგმნელის საცდელი გარემო
წვდომა შესაძლებელია **Dashboard → Translator**-ის მეშვეობით. გამართეთ და ვიზუალურად დააკვირდით, როგორ თარგმნის OmniRoute API მოთხოვნებს პროვაიდერებს შორის.
| რეჟიმი | დანიშნულება |
| ---------------------- | ---------------------------------------------------------------------------------------- |
| **საცდელი გარემო** | აირჩიეთ წყაროს/სამიზნის ფორმატები, ჩასვით მოთხოვნა და მყისიერად იხილეთ თარგმნილი შედეგი |
| **ჩატის ტესტერი** | გაგზავნეთ ჩატის შეტყობინებები პროქსის გავლით და შეამოწმეთ მოთხოვნის/პასუხის სრული ციკლი |
| **ტესტირების სტენდი** | გაუშვით პაკეტური ტესტები ფორმატების მრავალ კომბინაციაზე თარგმანის სისწორის შესამოწმებლად |
| **პირდაპირი მონიტორი** | დააკვირდით თარგმანებს რეალურ დროში, როდესაც მოთხოვნები პროქსის გავლით მიედინება |
**გამოყენების შემთხვევები:**
- გაარკვიეთ, რატომ ვერ მუშაობს კლიენტისა და პროვაიდერის კონკრეტული კომბინაცია
- გადაამოწმეთ, რომ აზროვნების ტეგები, ხელსაწყოების გამოძახებები და სისტემური მოთხოვნები სწორად ითარგმნება
- შეადარეთ ფორმატების განსხვავებები OpenAI-ის, Claude-ის, Gemini-ისა და Responses API-ის ფორმატებს შორის
---
### მარშრუტიზაციის სტრატეგიები
კონფიგურაცია შესაძლებელია **Dashboard → Settings → Routing**-ის მეშვეობით. დაფაზე წარმოდგენილია ექვსი ყველაზე ხშირად გამოყენებული სტრატეგია; კომბინაციებსა და ავტომარშრუტიზატორს შიდა დონეზე სტრატეგიების უფრო ფართო ნაკრების მხარდაჭერა აქვს.
**დაფაზე ხილული სტრატეგიები (ანგარიშის დონის მარშრუტიზაცია):**
| სტრატეგია | აღწერა |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **პირველის შევსება** | ანგარიშებს პრიორიტეტული თანმიმდევრობით იყენებს — ძირითადი ანგარიში ყველა მოთხოვნას ამუშავებს, სანამ ხელმისაწვდომია |
| **წრიული განაწილება** | ყველა ანგარიშს ციკლურად გადის კონფიგურირებადი მიბმის ლიმიტით (ნაგულისხმევი: 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` — შემდგომი რაუნდებისთვის გრძელი კონტექსტის მქონე მოდელებს ჯაჭვურად აერთიანებს
#### გარე მიბმული სესიის სათაური
გარე სესიის მიბმისთვის (მაგალითად, Claude Code/Codex აგენტებისთვის უკუპროქსების უკან) გაგზავნეთ:
```http
X-Session-Id: your-session-key
```
OmniRoute ასევე იღებს `x_session_id`-ს და მოქმედ სესიის გასაღებს `X-OmniRoute-Session-Id`-ში აბრუნებს.
თუ Nginx-ს იყენებთ და ქვედა ტირიან სათაურებს აგზავნით, ჩართეთ:
```nginx
underscores_in_headers on;
```
#### მოდელების ვაილდქარდ ფსევდონიმები
შექმენით ვაილდქარდ შაბლონები მოდელების სახელების ხელახლა მისაბმელად:
```
შაბლონი: claude-sonnet-* → სამიზნე: cc/claude-sonnet-4-6
შაბლონი: gpt-* → სამიზნე: gh/gpt-5.3-codex
```
ვაილდქარდები მხარს უჭერს `*`-ს (ნებისმიერი სიმბოლოები) და `?`-ს (ერთი სიმბოლო).
#### სარეზერვო ჯაჭვები
განსაზღვრეთ გლობალური სარეზერვო ჯაჭვები, რომლებიც ყველა მოთხოვნაზე ვრცელდება:
```
ჯაჭვი: production-fallback
1. cc/claude-opus-4-7
2. gh/gpt-5.3-codex
3. glm/glm-4.7
```
---
### პროვაიდერების გავრცელებული კომბინაციები და მარშრუტიზაციის შაბლონები
ქვემოთ მოცემულია OmniRoute-ში მრავალი პროვაიდერის გაერთიანებისა და მათ შორის მარშრუტიზაციის მაგალითები:
#### 1. პროგრამირების აგენტის კომბინაცია: მაღალი დონის მსჯელობა ხარჯის/სიჩქარის მიხედვით სარეზერვო გადართვით
იდეალურია პროგრამირების აგენტებისთვის (OpenCode, Claude Code, Cursor, Cline). თავდაპირველად მოთხოვნებს მოწინავე მსჯელობის მოდელებისკენ მარშრუტიზებს, ხოლო კვოტის ამოწურვის ან შეცდომების შემთხვევაში სწრაფ პროგრამირების მოდელებზე გადადის.
- **დაფა**: Combos → New Combo → Name: `agent-coding` → Strategy: `Priority`
- **მოდელები**:
1. `claude/claude-sonnet-4-6` (ძირითადი პროგრამირების აგენტი)
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"
```
**იმპორტის ვალიდაცია:** იმპორტირებული ფაილი მოწმდება მთლიანობაზე (SQLite pragma შემოწმება), აუცილებელი ცხრილების (`provider_connections`, `provider_nodes`, `combos`, `api_keys`) არსებობასა და ზომაზე (მაქს. 100MB).
**გამოყენების შემთხვევები:**
- OmniRoute-ის გადატანა მოწყობილობებს შორის
- ავარიული აღდგენისთვის გარე სარეზერვო ასლების შექმნა
- კონფიგურაციების გაზიარება გუნდის წევრებს შორის (ყველაფრის ექსპორტი → არქივის გაზიარება)
---
### პარამეტრების მართვის პანელი
მარტივი ნავიგაციისთვის პარამეტრების გვერდი ორგანიზებულია **7 ჩანართად**:
| ჩანართი | შიგთავსი |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **ზოგადი** | სისტემური მეხსიერების ხელსაწყოები, ნაგულისხმევი ქცევა, Endpoint-ტუნელის ხილვადობა |
| **გარეგნობა** | თემის მართვა (ღია/მუქი/სისტემური), გვერდითი ზოლის ხილვადობა, Cloudflare/Tailscale/ngrok-ტუნელების ბარათების პანელების გადამრთველები |
| **AI** | აზროვნების ბიუჯეტი (უცვლელად გადაცემა / ავტომატური მოცილება / მორგებული / ადაპტიური — იხილეთ [THINKING_BUDGET.md](./THINKING_BUDGET.md)), გლობალური სისტემური მოთხოვნა, მოთხოვნების კეშის სტატისტიკა |
| **უსაფრთხოება** | შესვლის/პაროლის პარამეტრები, IP-წვდომის კონტროლი, API-ავთენტიფიკაცია `/models`-ისთვის, პროვაიდერების დაბლოკვა, მოთხოვნის ინექციისგან დაცვა |
| **მარშრუტიზაცია** | გლობალური მარშრუტიზაციის სტრატეგია (პირველის შევსება / წრიული / P2C / შემთხვევითი / ყველაზე ნაკლებად გამოყენებული / ღირებულებით ოპტიმიზებული), მოდელების wildcard-ფსევდონიმები, სარეზერვო ჯაჭვები, კომბინაციების ნაგულისხმევი პარამეტრები |
| **მდგრადობა** | მოთხოვნების რიგი, კავშირის დაყოვნების პერიოდი, პროვაიდერის ამომრთველის კონფიგურაცია და დაყოვნების პერიოდის დასრულების ლოდინის ქცევა |
| **გაფართოებული** | გლობალური პროქსის კონფიგურაცია (HTTP/SOCKS5), თითოეული პროვაიდერისთვის პროქსის ინდივიდუალური ჩანაცვლებები |
ზოგადი ჩანართი აღარ იმეორებს მხოლოდ წაკითხვად ჩანაწერებისა და კეშის შენიშვნებს. მონაცემთა ბაზის შენახვისა და
ოპტიმიზაციის პარამეტრები ინახება `/api/settings/database`-ის მეშვეობით; კეშის ხელით გასუფთავებისთვის გამოიყენება
`DELETE /api/cache`. მოთხოვნებისა და პროქსის ჟურნალის მწკრივების მაქსიმალური რაოდენობა კონტროლდება
`CALL_LOGS_TABLE_MAX_ROWS`-ისა და `PROXY_LOGS_TABLE_MAX_ROWS`-ის მეშვეობით.
---
### ხარჯებისა და ბიუჯეტის მართვა
წვდომა შესაძლებელია **მართვის პანელი → ხარჯები**-დან.
| ჩანართი | დანიშნულება |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **ბიუჯეტი** | დააყენეთ ხარჯვის ლიმიტები თითოეული API-გასაღებისთვის ყოველდღიური/ყოველკვირეული/ყოველთვიური ბიუჯეტებითა და რეალურ დროში თვალყურის დევნებით |
| **ფასწარმოქმნა** | იხილეთ და დაარედაქტირეთ მოდელების ფასების ჩანაწერები — თითოეული პროვაიდერისთვის 1K შემავალ/გამავალ ტოკენზე ღირებულება |
```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
```
**ხარჯების აღრიცხვა:** თითოეული მოთხოვნისთვის აღირიცხება ტოკენების გამოყენება და ღირებულება გამოითვლება ფასების ცხრილის მიხედვით. პროვაიდერის, მოდელისა და API-გასაღების მიხედვით ჩაშლა იხილეთ **მართვის პანელი → გამოყენება**-ში.
---
### აუდიოს ტრანსკრიფცია
OmniRoute მხარს უჭერს აუდიოს ტრანსკრიფციას OpenAI-თან თავსებადი 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-ის ნატიური მარშრუტი და საჭიროებს Deepgram API-გასაღებს.
თუ კონფიგურირებულია მხოლოდ 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).
---
### კომბინაციების დაბალანსების სტრატეგიები
თითოეული კომბინაციის დაბალანსება დააკონფიგურირეთ **მართვის პანელი → კომბინაციები → შექმნა/რედაქტირება → სტრატეგია**-ში.
| სტრატეგია | აღწერა |
| --------------------------------- | ------------------------------------------------------------------------------------------------------- |
| **წრიული** | მოდელებს შორის თანმიმდევრულად მონაცვლეობს |
| **პრიორიტეტული** | ყოველთვის პირველად პირველ მოდელს ცდის; სარეზერვო ვარიანტზე მხოლოდ შეცდომის შემთხვევაში გადადის |
| **შემთხვევითი** | თითოეული მოთხოვნისთვის კომბინაციიდან შემთხვევით მოდელს ირჩევს |
| **შეწონილი** | მარშრუტიზაციას თითოეული მოდელისთვის მინიჭებული წონების პროპორციულად ახორციელებს |
| **ყველაზე ნაკლებად გამოყენებული** | მარშრუტს ბოლო დროს ყველაზე ნაკლები მოთხოვნის მქონე მოდელისკენ მიმართავს (იყენებს კომბინაციის მეტრიკებს) |
| **ღირებულებით ოპტიმიზებული** | მარშრუტს ყველაზე იაფი ხელმისაწვდომი მოდელისკენ მიმართავს (იყენებს ფასების ცხრილს) |
კომბინაციების გლობალური ნაგულისხმევი პარამეტრების დაყენება შესაძლებელია **მართვის პანელი → პარამეტრები → მარშრუტიზაცია → კომბინაციის ნაგულისხმევი პარამეტრები**-ში.
კომბინაციის სამიზნეების timeout-ები ნაგულისხმევად მოთხოვნის მიმდინარე timeout-ს მემკვიდრეობით იღებს. გამოიყენეთ **სამიზნის timeout
(წამები)** კომბინაციის ნაგულისხმევ პარამეტრებში ან ცალკეულ კომბინაციაში მხოლოდ მაშინ, როდესაც თითოეული სამიზნისთვის უფრო მოკლე ლიმიტმა
სარეზერვო ვარიანტზე უფრო სწრაფი გადასვლა უნდა გამოიწვიოს.
ნულოვანი დაყოვნების მქონე კომბინაციების ოპტიმიზაციები მხოლოდ მკაფიოდ ჩართვის შემთხვევაში მოქმედებს. დატოვეთ **ნულოვანი დაყოვნების ოპტიმიზაციები** გამორთული, რათა
ამ დაყოვნების ფუნქციებმა ერთმანეთს არ შეაჯიბროს სარეზერვო სამიზნეები, TTFT-ის
ისტორიის საფუძველზე არ გამოტოვოს სამიზნეები ან არ შეკუმშოს სარეზერვო მოთხოვნები; მისი ჩართვა საშუალებას იძლევა, კონფიგურირებულმა პარალელურმა დაზღვევამ, პროგნოზულმა TTFT
გამოტოვებებმა და პროაქტიულმა სარეზერვო შეკუმშვამ მარშრუტიზაციის/მოთხოვნის სიზუსტე შეამციროს საბოლოო დაყოვნების შესამცირებლად.
გამორთეთ **მსჯელობის ტოკენების ბუფერი**, როდესაც ზემდგომი პროვაიდერები მკაცრ
`max_tokens` / `maxOutputTokens` ლიმიტებს მოითხოვენ. ჩართვისას კომბინირებული მარშრუტიზაცია მსჯელობის მოდელებისთვის
დამატებით რესურსს მხოლოდ ცნობილი გამომავალი ლიმიტის მქონე მოდელებზე ამატებს და კლიენტის ტოკენების ლიმიტს უცვლელად ტოვებს, როდესაც
უსაფრთხო ბუფერირებული მნიშვნელობა ამ ზღვარს გადააჭარბებდა. თუ კლიენტის ლიმიტი უკვე აღემატება ცნობილ ზღვარს,
ზემდგომი მოთხოვნის გაგზავნამდე OmniRoute მას ამ ზღვრამდე ამცირებს.
---
### სისტემის მდგომარეობის დაფა
წვდომა შესაძლებელია მენიუდან **დაფა → მდგომარეობა**. სისტემის მდგომარეობის რეალურ დროში მიმოხილვა 6 ბარათით:
| ბარათი | რას აჩვენებს |
| ----------------------------- | --------------------------------------------------------------------------------------- |
| **სისტემის სტატუსი** | უწყვეტი მუშაობის დრო, ვერსია, მეხსიერების გამოყენება, მონაცემთა დირექტორია |
| **პროვაიდერების მდგომარეობა** | პროვაიდერების გლობალური circuit breaker-ის მიმდინარე მდგომარეობა |
| **სიხშირის ლიმიტები** | აქტიური კავშირების შეყოვნებები თითოეული ანგარიშისთვის, დარჩენილი დროის მითითებით |
| **აქტიური დაბლოკვები** | მოდელის დონეზე მოქმედი აქტიური დაბლოკვები და დროებითი გამორიცხვები |
| **ხელმოწერების ქეში** | დუბლიკატების აღმოფხვრის ქეშის სტატისტიკა (აქტიური გასაღებები, დამთხვევების მაჩვენებელი) |
| **დაყოვნების ტელემეტრია** | p50/p95/p99 დაყოვნების აგრეგაცია თითოეული პროვაიდერისთვის |
**პროფესიონალური რჩევა:** მდგომარეობის გვერდი ავტომატურად ახლდება ყოველ 10 წამში. პრობლემების მქონე პროვაიდერების გამოსავლენად გამოიყენეთ circuit breaker-ის ბარათი.
---
## 🤖 ავტომარშრუტიზაცია (ნულოვანი კონფიგურაცია)
OmniRoute-ს მოჰყვება **შეფასებებზე დაფუძნებული ავტომარშრუტიზატორი**, რომელიც თითოეული მოთხოვნისთვის ყველა დაკავშირებულ პროვაიდერს შორის საუკეთესო მოდელს ირჩევს — ხელით სამართავი კომბინაციის გარეშე. უბრალოდ გაგზავნეთ მოთხოვნა ერთ-ერთი `auto/*` პრეფიქსით და OmniRoute დინამიკურად შექმნის ვირტუალურ კომბინაციას, კანდიდატებს კი შეაფასებს დაყოვნების, ღირებულების, წარმატების მაჩვენებლის, კონტექსტთან შესაბამისობის, ამოცანისთვის მოდელის ვარგისიანობის, ბოლოდროინდელი წარუმატებლობების, კვოტისა და circuit breaker-ის მდგომარეობის მიხედვით.
| პრეფიქსი | ოპტიმიზაციის მიზანი |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `auto` | დაბალანსებული ნაგულისხმევი რეჟიმი (დაყოვნება × ღირებულება × წარმატების მაჩვენებელი) |
| `auto/coding` | პროგრამირების ამოცანები: უპირატესობას ანიჭებს Claude-ს, GPT-5-ს, GLM-ს, Kimi-ს, Qwen Coder-სა და DeepSeek-ის კოდირების მოდელებს |
| `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": "ამ Python ფუნქციის რეფაქტორინგი გააკეთე" }],
"stream": true
}'
```
ავტომარშრუტიზატორი სრულადაა აღწერილი დოკუმენტში [AUTO-COMBO.md](../routing/AUTO-COMBO.md) — მათ შორის, როგორ დაარეგულიროთ შეფასების წონები, შეიტანოთ პროვაიდერები შავ სიაში და შეამოწმოთ მარშრუტიზაციის გადაწყვეტილებები **მართვის პანელი → Auto Combo**-ში.
---
## 🔌 MCP-სა და A2A-ს ინტეგრაცია
OmniRoute ერთდროულად არის **MCP სერვერი** (Model Context Protocol) და **A2A სერვერი** (Agent-to-Agent JSON-RPC 2.0). ნებისმიერ MCP-თავსებად IDE-ს ან აგენტის ჰოსტს შეუძლია OmniRoute-ის ხელსაწყოები პირდაპირ გამოიძახოს — დამატებითი გარსი საჭირო არ არის.
### MCP ტრანსპორტები
- **SSE**: `http://localhost:20128/api/mcp/sse`
- **ნაკადური 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 URL `http://localhost:20128/api/mcp/sse` და Bearer API გასაღები, რომელიც შექმნილია განყოფილებაში **მართვის პანელი → API Keys**.
### წვდომის სფეროები
MCP ამჟამად განსაზღვრავს 32 დასახელებულ წვდომის სფეროს. თითოეული Bearer გასაღები შეიძლება შეიზღუდოს კონკრეტული სფეროებით — წვდომის სფეროებისა და ხელსაწყოების ავტორიტეტული ჩამონათვალისთვის იხილეთ [MCP-SERVER.md](../frameworks/MCP-SERVER.md), ხოლო JSON-RPC სქემისთვის — [A2A-SERVER.md](../frameworks/A2A-SERVER.md).
---
## 🧠 უნარების სისტემა
OmniRoute გთავაზობთ გაფართოებად **უნარების ფრეიმვორქს** (`src/lib/skills/`), რათა აგენტებმა და A2A საბოლოო წერტილმა შეძლონ კონკრეტულ სფეროზე მორგებული პროცედურების გაშვება (მაგ., `code-review`, `summarize`, `extract-facts`, `web-research`).
- **უნარების კატალოგის ინტერფეისი** — დაათვალიერეთ და დააინსტალირეთ უნარები **მართვის პანელი → უნარები**
- **თითოეული გასაღების მოქმედების არეები** — შეზღუდეთ, რომელ API გასაღებებს რომელი უნარების გამოძახება შეუძლიათ
- **მორგებული უნარები** — მოათავსეთ TypeScript ფაილი `src/lib/a2a/skills/`-ში, დაარეგისტრირეთ და ის დაუყოვნებლივ გახდება A2A-ის მეშვეობით გამოძახებადი
სრული ცნობარი: [SKILLS.md](../frameworks/SKILLS.md).
---
## 💾 მეხსიერების სისტემა
OmniRoute ინახავს **გრძელვადიან სასაუბრო მეხსიერებას** ჰიბრიდული მოძიების გამოყენებით:
- **SQLite FTS5** წინა დიალოგებში საკვანძო სიტყვებით ძიებისთვის
- **Qdrant ვექტორული საცავი** (არასავალდებულო) სემანტიკური გახსენებისთვის
- **ფაქტების ავტომატური ამოღება** — თითოეული სესიის შემდეგ ხდება ერთეულების, პრეფერენციებისა და გადაწყვეტილებების შეჯამება და მათი `memory_facts` ცხრილში შენახვა
- მეხსიერების ჩანაწერების მოქმედების არე იზღუდება თითოეული API გასაღებისა და სესიის მიხედვით
მართეთ მეხსიერების ჩანაწერები **მართვის პანელი → მეხსიერება** განყოფილებაში (ძიება, რედაქტირება, ექსპორტი, გასუფთავება). HTTP ინტერფეისი (`/api/memory/*`) აგენტებს საშუალებას აძლევს, პროგრამულად დაამატონ და მოიძიონ ფაქტები — იხილეთ [MEMORY.md](../frameworks/MEMORY.md).
---
## 🔔 ვებჰუკები
გამოიწერეთ OmniRoute-ის მოვლენები რეალურ დროში მონიტორინგისა და ავტომატიზაციისთვის.
- შექმენით ვებჰუკი **მართვის პანელი → ვებჰუკები** განყოფილებაში, მიუთითეთ სამიზნე URL და HMAC ხელმოწერის საიდუმლო
- ხელმისაწვდომი მოვლენები: `request.completed`, `request.failed`, `provider.unavailable`, `budget.exceeded`, `combo.switched`, `circuit_breaker.opened`, `circuit_breaker.closed`
- თითოეული მონაცემთა დატვირთვა გადამოწმებისთვის შეიცავს `X-OmniRoute-Signature`-ს (HMAC-SHA256)
- განმეორებითი მცდელობები: 3 მცდელობა ექსპონენციალური დაყოვნებით, შემდეგ კი გადატანა დაუმუშავებელი შეტყობინებების რიგში
სრული სქემა იხილეთ [WEBHOOKS.md](../frameworks/WEBHOOKS.md)-ში.
---
## ☁️ ღრუბლოვანი აგენტები
OmniRoute ინტეგრირდება ღრუბლოვან პროგრამირების აგენტებთან (**OpenAI Codex Cloud**, **Devin**, **Jules**, **Antigravity**), რათა ხანგრძლივი დავალებების გაგზავნა იმავე მართვის პანელიდან შეძლოთ, რომლითაც ადგილობრივ მარშრუტიზაციას მართავთ.
- შექმენით დავალებები **მართვის პანელი → ღრუბლოვანი აგენტები** განყოფილებაში ან `POST /api/v1/agents/tasks`-ის მეშვეობით
- თვალყური ადევნეთ თითოეული დავალების სტატუსს, ჟურნალებსა და არტეფაქტებს
- გამოიყენეთ საკუთარი API გასაღები თითოეული პროვაიდერისთვის — ავტორიზაციის მონაცემები არასოდეს ტოვებს OmniRoute-ის ინსტანციას
სრული ცნობარი: [CLOUD_AGENT.md](../frameworks/CLOUD_AGENT.md).
---
## 🛠️ პროგრამული მართვა
შეგიძლიათ OmniRoute-ის ყველა რესურსი (პროვაიდერები, კომბინაციები, გასაღებები, პარამეტრები) HTTP-ის მეშვეობით მართოთ, **`manage` მოქმედების არეალის მქონე Bearer გასაღების** გამოყენებით.
დააგენერირეთ გასაღები **მართვის პანელი → API გასაღებები → ახალი გასაღები → მოქმედების არე: 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" }'
# კომბინაციის შექმნა
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).
---
## 💻 შიდა CLI
OmniRoute-ს მოჰყვება შიდა CLI (`omniroute …`) კონფიგურაციისთვის, დიაგნოსტიკისა და გაშვების პროცესის მართვისთვის. ეს **განსხვავდება მართვის პანელში არსებული „CLI Tools“ გვერდისგან**, რომელიც აკონფიგურირებს მესამე მხარის CLI-ებს (Claude Code, Cursor, Codex, Cline, …), რათა მათ OmniRoute-თან კომუნიკაცია შეძლონ.
```bash
omniroute setup # ინტერაქტიული ოსტატი (პაროლი, პროვაიდერები, კომბინაციები)
omniroute setup --non-interactive # მოსახერხებელია CI-სთვის
omniroute doctor # მდგომარეობის დიაგნოსტიკა (მონაცემთა დირექტორია, DB, პროვაიდერები, პორტები)
omniroute providers available # მხარდაჭერილი პროვაიდერების სიის ჩვენება
omniroute providers list # კონფიგურირებული კავშირების სიის ჩვენება
omniroute providers test # პროვაიდერის კავშირის რეალურ დროში შემოწმება
omniroute combos list # კომბინაციების სიის ჩვენება
omniroute combos switch # ნაგულისხმევი კომბინაციის დაყენება
omniroute models # ხელმისაწვდომი მოდელების სიის ჩვენება (--json, --search)
omniroute keys add | list | remove # API გასაღებების მართვა ტერმინალიდან
omniroute backup # კონფიგურაციისა და DB-ის სარეზერვო ასლის შექმნა
omniroute restore [] # სარეზერვო ასლიდან აღდგენა
omniroute health # მდგომარეობის დეტალური ინფორმაცია (ამომრთველები, კეში, მეხსიერება)
omniroute quota # პროვაიდერის კვოტის გამოყენება
omniroute mcp status # MCP სერვერის სტატუსი
omniroute a2a status # A2A სერვერის სტატუსი
omniroute tunnel list|create|stop # Cloudflare/Tailscale/ngrok გვირაბები
omniroute reset-password # ადმინისტრატორის პაროლის გადაყენება
omniroute --mcp # MCP სერვერის გაშვება stdio-ს მეშვეობით
omniroute --port 3000 # სერვერის გაშვება მორგებულ პორტზე
```
რჩევა: გამოიყენეთ `omniroute doctor --json` თქვენს მონიტორინგის ხელსაწყოსთან ერთად, რათა მიიღოთ შეტყობინებები პროვაიდერების გაუმართავი კავშირების შესახებ.
---
## 🖥️ დესკტოპ-აპლიკაცია (Electron)
OmniRoute ხელმისაწვდომია როგორც ნატიური დესკტოპ-აპლიკაცია Windows-ისთვის, macOS-ისა და Linux-ისთვის.
### ინსტალაცია
```bash
# electron დირექტორიიდან:
cd electron
npm install
# დეველოპმენტის რეჟიმი (უკავშირდება გაშვებულ Next.js დეველოპმენტის სერვერს):
npm run dev
# საწარმოო რეჟიმი (იყენებს standalone ანაწყობს):
npm start
```
### ინსტალატორების აგება
```bash
cd electron
npm run build # მიმდინარე პლატფორმა
npm run build:win # Windows (.exe NSIS)
npm run build:mac # macOS (.dmg უნივერსალური)
npm run build:linux # Linux (.AppImage)
```
გამომავალი → `electron/dist-electron/`
### ძირითადი შესაძლებლობები
| შესაძლებლობა | აღწერა |
| ----------------------------------- | ----------------------------------------------------------------------- |
| **სერვერის მზადყოფნა** | ფანჯრის ჩვენებამდე პერიოდულად ამოწმებს სერვერს (ცარიელი ეკრანის გარეშე) |
| **სისტემური ტრეი** | ტრეიში ჩაკეცვა, პორტის შეცვლა, ტრეის მენიუდან გასვლა |
| **პორტის მართვა** | სერვერის პორტის შეცვლა ტრეიდან (სერვერი ავტომატურად გადაიტვირთება) |
| **კონტენტის უსაფრთხოების პოლიტიკა** | შემზღუდავი CSP სესიის სათაურების მეშვეობით |
| **ერთი ეგზემპლარი** | ერთდროულად აპლიკაციის მხოლოდ ერთი ეგზემპლარის გაშვებაა შესაძლებელი |
| **ოფლაინ რეჟიმი** | ჩაშენებული Next.js სერვერი ინტერნეტის გარეშე მუშაობს |
### გარემოს ცვლადები
| ცვლადი | ნაგულისხმევი | აღწერა |
| --------------------- | ------------ | --------------------------------------- |
| `OMNIROUTE_PORT` | `20128` | სერვერის პორტი |
| `OMNIROUTE_MEMORY_MB` | `512` | Node.js-ის heap-ის ლიმიტი (64–16384 MB) |
📖 სრული დოკუმენტაცია: [`electron/README.md`](../../electron/README.md)