Skip to content

Latest commit

 

History

History
1303 lines (934 loc) · 75.7 KB

USER_GUIDE.md

File metadata and controls

1303 lines (934 loc) · 75.7 KB

User Guide (Suomi)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW

Kattava opas palveluntarjoajien määrittämiseen, yhdistelmien luomiseen, CLI-työkalujen integrointiin ja OmniRouten käyttöönottoon.


Sisällysluettelo


💰 Hinnoittelu yhdellä silmäyksellä

Taso Palveluntarjoaja Hinta Kiintiön nollaus Sopii parhaiten
💳 TILAUS Claude Code (Pro) $20/kk 5 h + viikoittain Nykyisille tilaajille
Codex (Plus/Pro) $20–200/kk 5 h + viikoittain OpenAI-käyttäjille
GitHub Copilot $10–19/kk Kuukausittain GitHub-käyttäjille
🔑 API-AVAIN DeepSeek Käytön mukaan Ei nollausta Edulliseen päättelyyn
Groq Käytön mukaan Ei nollausta Erittäin nopeaan inferenssiin
xAI (Grok) Käytön mukaan Ei nollausta Grok 4 -päättelyyn
Mistral Käytön mukaan Ei nollausta EU:ssa isännöityihin malleihin
Perplexity Käytön mukaan Ei nollausta Hakua hyödyntäviin tehtäviin
Together AI Käytön mukaan Ei nollausta Avoimen lähdekoodin malleihin
Fireworks AI Käytön mukaan Ei nollausta Nopeaan FLUX-kuvien luontiin
Cerebras Käytön mukaan Ei nollausta Piikiekkotason nopeuteen
Cohere Käytön mukaan Ei nollausta Command R+ RAG -käyttöön
NVIDIA NIM Käytön mukaan Ei nollausta Yritysmalleihin
Baidu Qianfan Käytön mukaan Ei nollausta ERNIE-malleihin
💰 EDULLINEN GLM-4.7 $0.6/1M Päivittäin klo 10 Edulliseksi varavaihtoehdoksi
MiniMax M2.1 $0.2/1M Liukuva 5 tunnin jakso Halvimmaksi vaihtoehdoksi
Kimi K2 Kiinteä $9/kk 10M tokenia/kk Ennakoitaviin kustannuksiin
🆓 ILMAINEN Qoder $0 Palveluntarjoajan rajoitusten mukaisesti Tarkista nykyinen mallivalikoima
Kiro $0 ~50 krediittiä/kk Ilmaiseen Claude-käyttöön

🎯 Käyttötapaukset

Tapaus 1: "Minulla on Claude Pro -tilaus"

Ongelma: Kiintiö vanhenee käyttämättömänä, ja käyttörajoitukset tulevat vastaan intensiivisen ohjelmoinnin aikana

Yhdistelmä: "maximize-claude"
  1. cc/claude-opus-4-7        (hyödynnä tilaus kokonaan)
  2. glm/glm-4.7               (edullinen varavaihtoehto kiintiön loputtua)
  3. if/qwen3.8-max-preview       (ilmainen varavaihtoehto hätätilanteisiin)

Kuukausikustannus: $20 (tilaus) + ~$5 (varavaihtoehto) = yhteensä $25
verrattuna $20 + käyttörajoitusten saavuttamisen aiheuttama turhautuminen

Tapaus 2: "En halua lainkaan kustannuksia"

Ongelma: Tilauksiin ei ole varaa, mutta tarvitsen luotettavaa tekoälyä ohjelmointiin

Yhdistelmä: "zero-cost"
  1. if/kimi-k2.7-code          (ilmoitettu ilmainen käyttö; käyttörajoituksia saatetaan soveltaa)
  2. kr/qwen3-coder-next        (ilmainen Kiro-varavaihtoehto)

Kuukausikustannus: $0
Laatu: varmista mallin soveltuvuus, rajoitukset, tietosuoja ja SLA omalle työkuormallesi

Tapaus 3: "Tarvitsen ohjelmointiapua ympäri vuorokauden ilman keskeytyksiä"

Ongelma: Määräajat painavat päälle, eikä käyttökatkoihin ole varaa

Yhdistelmä: "always-on"
  1. cc/claude-opus-4-7        (paras laatu)
  2. cx/gpt-5.5                (toinen tilaus)
  3. glm/glm-4.7               (edullinen, nollautuu päivittäin)
  4. minimax/MiniMax-M2.1      (halvin, nollautuu 5 tunnin välein)
  5. if/deepseek-v4-flash       (ilmoitettu ilmainen käyttö; käyttörajoituksia saatetaan soveltaa)

Tulos: 5 varajärjestelmätasoa parantaa vikasietoisuutta; taustapalvelujen saatavuutta ei taata
Kuukausikustannus: $20–200 (tilaukset) + $10–20 (varavaihtoehto)

Tapaus 4: "Haluan ILMAISEN tekoälyn OpenClaw'ssa"

Ongelma: Tarvitsen tekoälyavustajan viestisovelluksiin täysin ilmaiseksi

Yhdistelmä: "openclaw-free"
  1. if/qwen3.8-max-preview     (ilmoitettu ilmainen käyttö; käyttörajoituksia saatetaan soveltaa)
  2. if/deepseek-v4-flash       (ilmoitettu ilmainen käyttö; käyttörajoituksia saatetaan soveltaa)
  3. if/kimi-k2.7-code          (ilmoitettu ilmainen käyttö; käyttörajoituksia saatetaan soveltaa)

Kuukausikustannus: $0
Käyttö seuraavien kautta: WhatsApp, Telegram, Slack, Discord, iMessage, Signal...

📖 Palveluntarjoajan määritys

Voit lisätä API-avainyhteyksiä joukkona CSV- tai JSON-tiedostosta valitsemalla Hallintapaneeli → Palveluntarjoajat → Tuo tiedostosta. Sarakkeiden järjestys on kiinteä (provider,name,apiKey,baseUrl,priority); provider-arvon on vastattava jo olemassa olevaa hallittua palveluntarjoajaa tai yhteensopivaa solmua. Katso Palveluntarjoajien tuominen CSV- tai JSON-tiedostosta.

🔐 Tilauspohjaiset palveluntarjoajat

Claude Code (Pro/Max)

Hallintapaneeli → Palveluntarjoajat → Yhdistä Claude Code
→ OAuth-kirjautuminen → Tunnuksen automaattinen päivitys
→ 5 tunnin ja viikoittaisen kiintiön seuranta

Mallit:
  cc/claude-opus-4-7
  cc/claude-sonnet-4-6
  cc/claude-haiku-4-5-20251001

Ammattilaisvinkki: Käytä Opusta monimutkaisiin tehtäviin ja Sonnetia nopeutta vaativiin tehtäviin. OmniRoute seuraa kiintiötä mallikohtaisesti!

Claude- ja Claude Code -yhteensopivat reitit säilyttävät Opus- ja Sonnet-mallien max-päättelypanoksen. Haiku-mallit eivät hyväksy max-panostasoa, joten OmniRoute alentaa pyynnön suureksi päättelybudjetiksi ennen sen lähettämistä ylävirran palveluun.

OpenAI Codex (Plus/Pro)

Hallintapaneeli → Palveluntarjoajat → Yhdistä Codex
→ OAuth-kirjautuminen (portti 1455)
→ Nollaus 5 tunnin välein ja viikoittain

Mallit:
  cx/gpt-5.5
  cx/gpt-5.4
  cx/gpt-5.3-codex
  cx/gpt-5.3-codex-spark

GitHub Copilot

Hallintapaneeli → Palveluntarjoajat → Yhdistä GitHub
→ OAuth GitHubin kautta
→ Nollaus kuukausittain (kuukauden 1. päivänä)

Mallit:
  gh/gpt-5.5
  gh/gpt-5.4
  gh/claude-sonnet-4.6
  gh/claude-opus-4.7
  gh/gemini-3.1-pro-preview

💰 Edulliset palveluntarjoajat

GLM-4.7 (päivittäinen nollaus, $0.6/1M)

  1. Rekisteröidy: Zhipu AI
  2. Hanki API-avain Coding Plan -tilauksesta
  3. Hallintapaneeli → Lisää API-avain: Palveluntarjoaja: glm, API-avain: your-key

Käyttö: glm/glm-4.7 — Ammattilaisvinkki: Coding Plan tarjoaa kolminkertaisen kiintiön seitsemäsosalla hinnasta! Nollaus päivittäin klo 10.00.

MiniMax M2.1 (nollaus 5 tunnin välein, $0.20/1M)

  1. Rekisteröidy: MiniMax
  2. Hanki API-avain → Hallintapaneeli → Lisää API-avain

Käyttö: minimax/MiniMax-M2.1 — Ammattilaisvinkki: Edullisin vaihtoehto pitkälle kontekstille (1M tokenia)!

Kimi K2 (kiinteästi $9/kuukausi)

  1. Tilaa: Moonshot AI
  2. Hanki API-avain → Hallintapaneeli → Lisää API-avain

Käyttö: kimi/kimi-k2.5 — Ammattilaisvinkki: Kiinteä $9/kuukausi 10M tokenista = todellinen hinta $0.90/1M!

Baidu Qianfan / ERNIE

  1. Rekisteröidy: Baidu AI Cloud Qianfan
  2. Luo Qianfan API -avain → Hallintapaneeli → Lisää API-avain: Palveluntarjoaja: qianfan

Käyttö: qianfan/ernie-5.1, qianfan/ernie-x1.1 tai jokin muu Qianfanin OpenAI-yhteensopiva mallitunnus.

🆓 ILMAISET palveluntarjoajat

Todennusta edellyttämättömillä ilmaisilla palveluntarjoajilla on kytkin niiden palveluntarjoajasivulla kohdan Todennusta ei vaadita vieressä. Sen poistaminen käytöstä poistaa kyseisen palveluntarjoajan käytöstä ja Palveluntarjoajat-näkymän määritettyjen palveluntarjoajien luettelosta ja tiiviistä näkymästä sekä poistaa sen mallit /v1/models-luettelosta.

Qoder (9 ILMAISTA mallia)

Hallintapaneeli → Yhdistä Qoder → OAuth-kirjautuminen → Käyttöön sovelletaan palveluntarjoajan nykyisiä rajoituksia

Mallit: 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 ILMAISEKSI)

Hallintapaneeli → Yhdistä Kiro → AWS Builder ID tai Google/GitHub → ~50 krediittiä kuukaudessa

Mallit: kr/claude-sonnet-4.5, kr/claude-haiku-4.5

🎨 Yhdistelmät

Voit järjestää yhdistelmäkortit uudelleen suoraan kohdassa Hallintapaneeli → Yhdistelmät vetämällä kunkin kortin kahvasta. Järjestys tallennetaan SQLite-tietokantaan ja palautetaan uudelleenlatauksen yhteydessä.

Esimerkki 1: Maksimoi tilauksen käyttö → Edullinen varamalli

Hallintapaneeli → Yhdistelmät → Luo uusi

Nimi: premium-coding
Mallit:
  1. cc/claude-opus-4-7 (Ensisijainen tilausmalli)
  2. glm/glm-4.7 (Edullinen varamalli, $0.6/1M)
  3. minimax/MiniMax-M2.7 (Halvin varavaihtoehto, $0.3/1M)

Käyttö CLI:ssä: premium-coding

Esimerkki 2: Vain ilmaiset (ei kustannuksia)

Nimi: free-combo
Mallit:
  1. if/kimi-k2.7-code (ilmoitettu maksuton käyttöoikeus; palveluntarjoajan rajoituksia voidaan soveltaa)
  2. kr/qwen3-coder-next (Kiron maksuton varavaihtoehto)

Kustannus: ilmoitettu tällä hetkellä arvoksi $0; ehdot ja saatavuus voivat muuttua

🔧 CLI-integraatio

Cursor IDE

Cursorin käyttäminen OmniRoute-asiakasohjelmana (reititä Cursor-keskustelut OmniRouten kautta):

Asetukset → Mallit → Lisäasetukset:
  OpenAI API:n perus-URL: http://localhost:20128/v1
  OpenAI API -avain: [OmniRoute-hallintapaneelista]
  Malli: cc/claude-opus-4-7

OmniRouten käyttäminen Cursor-palveluntarjoajana (OmniRoute kutsuu Cursor-ylävirtaa): suosi vaihtoehtoa Hallintapaneeli → Palveluntarjoajat → Cursor → Kirjaudu Cursorilla. Katso Dockerissa docs/providers/CURSOR-DOCKER.md.

Claude Code

Muokkaa tiedostoa ~/.claude/settings.json:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:20128",
    "ANTHROPIC_AUTH_TOKEN": "your-omniroute-api-key"
  }
}

Käytä tässä Claude-yhteensopivaa juuripäätepistettä. Älä lisää polkua /v1 muuttujaan ANTHROPIC_BASE_URL.

Codex CLI

export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"

OpenClaw

Muokkaa tiedostoa ~/.openclaw/openclaw.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" }]
      }
    }
  }
}

Tai käytä hallintapaneelia: CLI-työkalut → OpenClaw → Automaattinen määritys

Cline / Continue / RooCode

Palveluntarjoaja: OpenAI-yhteensopiva
Perus-URL: http://localhost:20128/v1
API-avain: [hallintapaneelista]
Malli: cc/claude-opus-4-7

🚀 Käyttöönotto

Globaali npm-asennus (suositus)

npm install -g omniroute

# Luo määrityshakemisto
mkdir -p ~/.omniroute

# Luo .env-tiedosto (katso .env.example)
cp .env.example ~/.omniroute/.env

# Käynnistä palvelin
omniroute
# Tai mukautetulla portilla:
omniroute --port 3000

CLI lataa .env-tiedoston automaattisesti sijainnista ~/.omniroute/.env tai ./.env.

Ilmoitusaluetila

Käynnistä OmniRoute järjestelmän ilmoitusalueella:

omniroute serve --tray

Komento päättyy, kun palvelin ja ilmoitusaluekuvake ovat valmiina.

Palvelin jatkaa toimintaansa ilman päätettä.

Ilmoitusaluetilaa tuetaan macOS:ssä, Windowsissa ja graafisissa Linux-istunnoissa. Ilmoitusaluetila ei avaa hallintapaneelia automaattisesti.

Käytä ilmoitusaluevalikkoa seuraaviin toimintoihin:

  • Avaa hallintapaneeli.
  • Avaa /dashboard/logs.
  • Muuta automaattisen käynnistyksen asetusta.
  • Pysäytä OmniRoute.

Älä käytä valitsinta --tray yhdessä seuraavien valitsimien kanssa:

  • --daemon
  • --log
  • --no-recovery

Nämä tilat edellyttävät erilaista prosessin omistajuutta.

Ota käynnistys käyttöön koneen seuraavan sisäänkirjautumisen yhteydessä:

omniroute autostart enable

Automaattinen käynnistys käyttää ilmoitusaluetilaa macOS:ssä, Windowsissa ja graafisissa Linux-istunnoissa. Graafista käyttöliittymää vailla oleva Linux käyttää olemassa olevaa systemd-käyttäjäpalvelua.

Poista sisäänkirjautumisen yhteydessä tapahtuva käynnistys käytöstä:

omniroute autostart disable

Asennuksen poistaminen

Kun et enää tarvitse OmniRoutea, tarjoamme kaksi nopeaa komentosarjaa siistiä poistamista varten:

Komento Toiminto
npm run uninstall Poistaa järjestelmäsovelluksen, mutta säilyttää tietokantasi ja määrityksesi hakemistossa ~/.omniroute.
npm run uninstall:full Poistaa sovelluksen JA hävittää kaikki määritykset, avaimet ja tietokannat pysyvästi.

Huomautus: Suorita nämä komennot siirtymällä OmniRoute-projektikansioon (jos kloonasit sen) ja suorittamalla ne siellä. Jos asensit sen globaalisti, voit vaihtoehtoisesti suorittaa komennon npm uninstall -g omniroute.

VPS-käyttöönotto

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
# Tai: pm2 start npm --name omniroute -- start

PM2-käyttöönotto (vähäinen muistinkäyttö)

Käytä muistirajoitusvalintaa palvelimilla, joilla on rajallisesti RAM-muistia:

# 512MB:n rajoituksella (oletus)
pm2 start npm --name omniroute -- start

# Tai mukautetulla muistirajoituksella
OMNIROUTE_MEMORY_MB=512 pm2 start npm --name omniroute -- start

# Tai käyttämällä tiedostoa ecosystem.config.js
pm2 start ecosystem.config.js

Luo ecosystem.config.js:

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

# Koosta levykuva (oletus = runner-cli, jossa codex/claude/droid on esiasennettu)
docker build -t omniroute:cli .

# Siirrettävä tila (suositus)
docker run -d --name omniroute -p 20128:20128 --env-file ./.env -v omniroute-data:/app/data omniroute:cli

Katso CLI-binäärit sisältävää isäntäjärjestelmään integroitua tilaa koskevat tiedot päädokumentaation Docker-osiosta.

Void Linux (xbps-src)

Void Linuxin käyttäjät voivat paketoida ja asentaa OmniRouten natiivisti käyttämällä xbps-src-ristiinkäännöskehystä. Tämä automatisoi itsenäisen Node.js-koontiversion luomisen sekä tarvittavat natiivit better-sqlite3-sidokset.

Näytä xbps-src-mallipohja
# Mallipohjatiedosto paketille 'omniroute'
pkgname=omniroute
version=3.8.0
revision=1
hostmakedepends="nodejs python3 make"
depends="openssl"
short_desc="Yleiskäyttöinen tekoäly-yhdyskäytävä älykkäällä reitityksellä useille LLM-palveluntarjoajille"
maintainer="zenobit <zenobit@disroot.org>"
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() {
	# Määritä node-gypin kohdesuoritinarkkitehtuuri
	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) Asenna kaikki riippuvuudet – ohita komentosarjat
	NODE_ENV=development npm ci --ignore-scripts

	# 2) Kokoa itsenäinen Next.js-paketti
	npm run build

	# 3) Kopioi staattiset resurssit itsenäiseen pakettiin
	cp -r .next/static .next/standalone/.next/static
	[ -d public ] && cp -r public .next/standalone/public || true

	# 4) Käännä better-sqlite3:n natiivi sidos
	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) Sijoita käännetty sidos itsenäiseen pakettiin
	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) Poista arkkitehtuurikohtaiset sharp-paketit
	rm -rf .next/standalone/node_modules/@img

	# 7) Kopioi Next.js:n staattisen analyysin ohittamat pinon suorituksenaikaiset riippuvuudet:
	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

	# Estä asennuksen jälkeistä käsittelijää poistamasta tyhjiä Next.js-sovellusreitittimen hakemistoja
	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
}

Ympäristömuuttujat

Muuttuja Oletusarvo Kuvaus
JWT_SECRET omniroute-default-secret-change-me JWT-allekirjoituksen salaisuus (vaihda tuotantoympäristössä)
INITIAL_PASSWORD CHANGEME Ensimmäisen kirjautumisen salasana
DATA_DIR ~/.omniroute Datahakemisto (tietokanta, käyttötilastot, lokit)
PORT kehyksen oletusarvo Palvelun portti (esimerkeissä 20128)
HOSTNAME kehyksen oletusarvo Kuunteluosoite (Dockerin oletusarvo on 0.0.0.0)
NODE_ENV ajonaikainen oletusarvo Aseta käyttöönottoa varten arvoksi production
NEXT_PUBLIC_BASE_URL http://localhost:20128 Koontinäytössä näkyvä ja palvelimelle välitettävä julkinen perus-URL (korvaa vanhan BASE_URL-muuttujan)
NEXT_PUBLIC_CLOUD_URL https://omniroute.dev Pilvisynkronoinnin päätepisteen perus-URL (korvaa vanhan CLOUD_URL-muuttujan)
API_KEY_SECRET endpoint-proxy-api-key-secret Luotujen API-avainten HMAC-salaisuus
REQUIRE_API_KEY false Vaadi Bearer API -avain reitillä /v1/*
ALLOW_API_KEY_REVEAL false Salli todennettujen koontinäytön käyttäjien näyttää tallennettujen API-avainten täydet arvot pyynnöstä
PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES 70 Välimuistiin tallennettujen palveluntarjoajarajojen palvelinpuolen päivitysväli; käyttöliittymän päivityspainikkeet käynnistävät edelleen manuaalisen synkronoinnin
DISABLE_SQLITE_AUTO_BACKUP false Poista automaattiset SQLite-tilannevedokset käytöstä ennen kirjoitusta, tuontia tai palautusta; manuaaliset varmuuskopiot toimivat edelleen
APP_LOG_TO_FILE true Ottaa käyttöön sovellus- ja auditointilokien kirjoittamisen levylle
AUTH_COOKIE_SECURE false Pakota todennusevästeen Secure-asetus (HTTPS-käänteisvälityspalvelimen takana)
CLOUDFLARED_BIN ei asetettu Käytä olemassa olevaa cloudflared-binääriä hallitun latauksen sijaan
CLOUDFLARED_PROTOCOL http2 Hallittujen Quick Tunnels -tunneleiden siirtoprotokolla (http2, quic tai auto)
OMNIROUTE_MEMORY_MB 512 Node.js-keon enimmäiskoko megatavuina
PROMPT_CACHE_MAX_SIZE 50 Kehotevälimuistin merkintöjen enimmäismäärä
SEMANTIC_CACHE_MAX_SIZE 100 Semanttisen välimuistin merkintöjen enimmäismäärä

Täydellinen ympäristömuuttujien luettelo on README-tiedostossa.


📊 Saatavilla olevat mallit

Näytä kaikki saatavilla olevat mallit

Alla oleva luettelo on koottu tiedostosta open-sse/config/providerRegistry.ts versiolle v3.8.0. Pilvipalvelujen malliluettelot (Gemini, OpenRouter jne.) synkronoidaan dynaamisesti — saat koko ajantasaisen luettelon avaamalla Hallintapaneeli → Palveluntarjoajat → [palveluntarjoaja] → Saatavilla olevat mallit tai kutsumalla päätepistettä GET /api/models/catalog.

Jos palveluntarjoajan sisäinen luettelo ei ole enää ajan tasalla, nouda ajantasainen luettelo ylävirrasta käyttämällä kyseisellä sivulla toimintoa Tuo kohteesta /models (tai ottamalla käyttöön Automaattinen synkronointi). Tämä vahvistettiin versiossa v3.8.50 palveluille LLM7.io (gemini-3.1-flash-lite) ja UncloseAI (solidrust/Hermes-3-Llama-3.1-8B-AWQ); Pollinations-palvelun anonyymi käyttö pysyi ylävirran rajoittamana saman testikierroksen aikana.

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 (+ päättelytasot: 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/) — ILMAINEN OAuth: käytä ajantasaista luetteloa kohdassa Hallintapaneeli → Palveluntarjoajat → Kiro → Saatavilla olevat mallit. Saatavuus riippuu tilistä ja tilauksesta.

Qoder (if/) — ILMAINEN 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 $ / 1 milj.: 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 $ / 1 milj.: 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/) — kiinteä 9 $/kk tai käytön mukaan: kimi/kimi-k2.6, kimi/kimi-k2.5

DeepSeek (ds/) — API-avain: ds/deepseek-v4-pro, ds/deepseek-v4-flash

Groq (groq/) — Erittäin nopea: 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/) — Natiivi 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/) — Isännöity EU:ssa: mistral/mistral-large-latest, mistral/mistral-medium-3-5, mistral/mistral-small-latest, mistral/devstral-latest, mistral/codestral-latest

Perplexity (pplx/) — Hakutoiminnoilla täydennetty: pplx/sonar-deep-research, pplx/sonar-reasoning-pro, pplx/sonar-pro, pplx/sonar

Together AI (together/) — Avoin lähdekoodi: together/meta-llama/Llama-3.3-70B-Instruct-Turbo-Free (ilmainen), 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/) — Nopea inferenssi: 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/) — Kiekkomittakaava: cerebras/zai-glm-4.7, cerebras/gpt-oss-120b

Cohere (cohere/) — RAG-painotteinen: 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/) — Yrityskäyttöön: 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/): Synkronoidaan ajantasaisesti Googlelta API-avaimen perusteella — ei staattista luetteloa. Yhdistä avain kohdassa Hallintapaneeli → Palveluntarjoajat ja tuo sitten nykyinen luettelo käyttämällä toimintoa Saatavilla olevat mallit (esim. gemini/gemini-3-pro, gemini/gemini-3-flash).

Muut yhteensopivat palveluntarjoajat (valikoima): cohere, databricks, snowflake, together, vertex, alibaba, alibaba-cn, bedrock (aws-bedrock-palvelun kautta), azure-ai, openrouter (luettelon läpivienti), siliconflow, hyperbolic, huggingface, featherless-ai, cloudflare-ai, scaleway, deepinfra, vercel-ai-gateway, bazaarlink, friendliai, nous-research, reka, volcengine, ai21, gigachat. Kukin ylläpitää omaa malliluetteloaan tiedostossa providerRegistry.ts, ja luettelo voidaan synkronoida automaattisesti, kun palveluntarjoaja tarjoaa /models-päätepisteen.

Huomautus mallitunnuksista: OmniRoute käyttää palveluntarjoajien natiiveja tunnuksia (claude-opus-4-8, gpt-5.5, glm-5.1, MiniMax-M2.7, kimi-k2.5, grok-4.20-0309-reasoning). Jotkin tunnukset sisältävät pisteillä erotettuja versioita, koska ylävirran API odottaa niitä tässä muodossa. Jos mallia ei ole lueteltu yllä, vahvista sen saatavuus suorittamalla omniroute models --search <term> tai kutsumalla päätepistettä GET /api/models/catalog.


🧩 Edistyneet ominaisuudet

Mukautetut mallit

Lisää mikä tahansa mallitunnus mille tahansa palveluntarjoajalle odottamatta sovelluspäivitystä:

# API:n kautta
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"}'

# Luettelo: curl http://localhost:20128/api/provider-models?provider=openai
# Poista: curl -X DELETE "http://localhost:20128/api/provider-models?provider=openai&model=gpt-5.2"

Tai käytä hallintapaneelia: Palveluntarjoajat → [Palveluntarjoaja] → Mukautetut mallit.

Huomautukset:

  • OpenRouter- sekä OpenAI-/Anthropic-yhteensopivia palveluntarjoajia hallitaan vain kohdasta Saatavilla olevat mallit. Manuaalisesti lisätyt, tuodut ja automaattisesti synkronoidut mallit päätyvät kaikki samaan saatavilla olevien mallien luetteloon, joten näillä palveluntarjoajilla ei ole erillistä Mukautetut mallit -osiota.
  • Mukautetut mallit -osio on tarkoitettu palveluntarjoajille, jotka eivät tarjoa hallittua saatavilla olevien mallien tuontia.

OmniRoute-vertaisyhdyskäytävien ketjuttaminen

Toinen OmniRoute-yhdyskäytävä voidaan lisätä mukautetuksi OpenAI-yhteensopivaksi palveluntarjoajaksi. Käytä vertaisyhdyskäytävän /v1-perus-URL-osoitetta ja sen myöntämää erillistä, vähimpien oikeuksien periaatteen mukaista API-avainta.

Ota valinnainen silmukkasuojaus käyttöön jokaisessa yhdyskäytävässä vastavuoroisia tai monen hypyn ketjuja varten:

# gateway-a
OMNIROUTE_INSTANCE_ID=gateway-a
OMNIROUTE_PEER_URLS=http://gateway-b:20128/v1
OMNIROUTE_PEER_MAX_HOPS=4
# gateway-b
OMNIROUTE_INSTANCE_ID=gateway-b
OMNIROUTE_PEER_URLS=http://gateway-a:20128/v1
OMNIROUTE_PEER_MAX_HOPS=4

Vain nimenomaisesti sallittujen vertaisyhdyskäytävien luetteloon lisättyyn URL-osoitteeseen lähetetyt pyynnöt saavat X-OmniRoute-Peer-Trace-otsakkeen. Yhdyskäytävä hylkää toistuvan instanssitunnuksen tai loppuun käytetyn hyppykiintiön HTTP-virheellä 508 Loop Detected; tavalliset ylävirran palveluntarjoajat eivät saa vertaistietoja.

Vertaisyhdyskäytävien ketjuttaminen ei ole tietokannan replikointia tai isäntäpalvelimen vikasietoista vaihtoa. Kukin yhdyskäytävä ylläpitää itsenäistä SQLite-tilaa, välimuisteja, nopeusrajoituslaskureita ja istuntoja. Käytä terveystarkistettua käänteistä välityspalvelinta tai asiakaspuolen vikasietoista vaihtoa aktiivinen/passiivinen- tai aktiivinen/aktiivinen-saatavuuteen, äläkä koskaan liitä yhtä SQLite-tietokantaa useaan käynnissä olevaan OmniRoute-instanssiin.

Palveluntarjoajakohtaiset reitit

Reititä pyynnöt suoraan tietylle palveluntarjoajalle mallin tarkistuksen kanssa:

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

Palveluntarjoajan etuliite lisätään automaattisesti, jos se puuttuu. Yhteensopimattomat mallit palauttavat virheen 400.

Verkon välityspalvelimen määritys

# Aseta yleinen välityspalvelin
curl -X PUT http://localhost:20128/api/settings/proxy \
  -d '{"global": {"type":"http","host":"proxy.example.com","port":"8080"}}'

# Palveluntarjoajakohtainen välityspalvelin
curl -X PUT http://localhost:20128/api/settings/proxy \
  -d '{"providers": {"openai": {"type":"socks5","host":"proxy.example.com","port":"1080"}}}'

# Testaa välityspalvelin
curl -X POST http://localhost:20128/api/settings/proxy/test \
  -d '{"proxy":{"type":"socks5","host":"proxy.example.com","port":"1080"}}'

Ensisijaisuusjärjestys: Avainkohtainen → Yhdistelmäkohtainen → Palveluntarjoajakohtainen → Yleinen → Ympäristö.

Malliluettelon API

curl http://localhost:20128/api/models/catalog

Palauttaa mallit palveluntarjoajittain ryhmiteltyinä ja tyypeillä (chat, embedding, image).

Pilvisynkronointi

  • Synkronoi palveluntarjoajat, yhdistelmät ja asetukset laitteiden välillä
  • Automaattinen taustasynkronointi aikakatkaisulla ja nopealla virheenkäsittelyllä
  • Suosi tuotannossa palvelinpuolen NEXT_PUBLIC_BASE_URL-/NEXT_PUBLIC_CLOUD_URL-muuttujia

Cloudflare Quick Tunnel

  • Saatavilla kohdassa Hallintapaneeli → Päätepisteet Dockerille ja muille itse isännöidyille käyttöönotoille
  • Luo väliaikaisen https://*.trycloudflare.com-URL-osoitteen, joka välittää liikenteen nykyiseen OpenAI-yhteensopivaan /v1-päätepisteeseesi
  • Ensimmäinen käyttöönotto asentaa cloudflared-ohjelman vain tarvittaessa; myöhemmät uudelleenkäynnistykset käyttävät samaa hallittua binääritiedostoa
  • Quick Tunnel -tunneleita ei palauteta automaattisesti OmniRouten tai säilön uudelleenkäynnistyksen jälkeen; ota ne tarvittaessa uudelleen käyttöön hallintapaneelista
  • Tunnelien URL-osoitteet ovat tilapäisiä ja vaihtuvat aina, kun pysäytät tai käynnistät tunnelin
  • Hallitut Quick Tunnel -tunnelit käyttävät oletusarvoisesti HTTP/2-siirtoprotokollaa, jotta rajoitetuissa säilöissä vältetään häiritsevät QUIC UDP -puskurivaroitukset
  • Aseta CLOUDFLARED_PROTOCOL=quic tai auto, jos haluat ohittaa hallitun siirtoprotokollan valinnan
  • Aseta CLOUDFLARED_BIN, jos haluat käyttää esiasennettua cloudflared-binääritiedostoa hallitun latauksen sijaan
  • Cloudflare Quick Tunnel-, Tailscale Funnel- ja ngrok Tunnel -paneelit voidaan näyttää tai piilottaa kohdassa Asetukset → Ulkoasu. Paneelin piilottaminen ei pysäytä käynnissä olevaa tunnelia.

LLM-yhdyskäytävän älykkyys (vaihe 9)

  • Semanttinen välimuisti — Tallentaa automaattisesti välimuistiin suoratoistamattomat vastaukset, joiden temperature=0 (ohita otsakkeella X-OmniRoute-No-Cache: true)
  • Pyyntöjen idempotenssi — Poistaa päällekkäiset pyynnöt 5 sekunnin sisällä Idempotency-Key- tai X-Request-Id-otsakkeen avulla
  • Edistymisen seuranta — Valinnaiset SSE:n event: progress-tapahtumat X-OmniRoute-Progress: true-otsakkeen avulla

Käännösten testausympäristö

Käytä kohdasta Hallintapaneeli → Kääntäjä. Virheenkorjaa ja visualisoi, miten OmniRoute muuntaa API-pyyntöjä palveluntarjoajien välillä.

Tila Tarkoitus
Testausympäristö Valitse lähde- ja kohdemaannot, liitä pyyntö ja näe muunnettu tulos välittömästi
Keskustelutestaaja Lähetä reaaliaikaisia keskusteluviestejä välityspalvelimen kautta ja tarkastele koko pyyntö-vastaussykliä
Testipenkki Suorita erätestejä useilla muotoyhdistelmillä käännösten oikeellisuuden varmistamiseksi
Reaaliaikainen seuranta Seuraa reaaliaikaisia muunnoksia pyyntöjen kulkiessa välityspalvelimen kautta

Käyttötapaukset:

  • Selvitä, miksi tietty asiakasohjelman ja palveluntarjoajan yhdistelmä epäonnistuu
  • Varmista, että ajattelutunnisteet, työkalukutsut ja järjestelmäkehotteet muunnetaan oikein
  • Vertaa OpenAI-, Claude-, Gemini- ja Responses API -muotojen eroja

Reititysstrategiat

Määritä kohdassa Hallintapaneeli → Asetukset → Reititys. Hallintapaneelissa näkyvät kuusi käytetyintä strategiaa. Yhdistelmät ja automaattinen reititin tukevat sisäisesti laajempaa valikoimaa.

Hallintapaneelissa näkyvät strategiat (tilitason reititys):

Strategia Kuvaus
Täytä ensimmäinen Käyttää tilejä prioriteettijärjestyksessä — ensisijainen tili käsittelee kaikki pyynnöt, kunnes se ei ole käytettävissä
Vuorottelu Kiertää kaikkien tilien välillä määritettävällä pysyvyysrajalla (oletus: 3 kutsua tiliä kohden)
P2C (kahden vaihtoehdon voima) Valitsee 2 satunnaista tiliä ja reitittää terveempään — tasapainottaa kuormaa ottaen tilien tilan huomioon
Satunnainen Valitsee jokaiselle pyynnölle satunnaisen tilin Fisher–Yates-sekoituksella
Vähiten käytetty Reitittää tilille, jolla on vanhin lastUsedAt-aikaleima, jakaen liikenteen tasaisesti
Kustannusoptimoitu Reitittää tilille, jolla on pienin prioriteettiarvo, optimoiden edullisimpien palveluntarjoajien käyttöä

Edistyneet yhdistelmä- ja automaattiset strategiat (määritettävissä yhdistelmäkohtaisesti tai auto/*-etuliitteillä — katso AUTO-COMBO.md):

  • priority — tiukka järjestys, ei koskaan vuorottele
  • weighted — liikenteen suhteellinen jako mallikohtaisten painotusten perusteella
  • fill-first — käyttää ensimmäistä mallia, kunnes rajat saavutetaan
  • round-robin / strict-random / random
  • p2c (kahden vaihtoehdon voima)
  • least-used ja cost-optimized
  • auto — pisteytykseen perustuva valinta kaikkien ehdokkaiden joukosta
  • lkgp (viimeisin toimivaksi todettu palveluntarjoaja) — lukitsee käytön viimeisimpään onnistuneeseen palveluntarjoajaan ja käyttää sitten sääntöjen mukaista varavalintaa
  • context-optimized — valitsee mallin, jolla on suurin vapaa konteksti-ikkuna
  • context-relay — ketjuttaa suuren konteksti-ikkunan malleja jatkovuoroja varten

Ulkoinen pysyvän istunnon otsake

Jos tarvitset ulkoista istuntopysyvyyttä (esimerkiksi Claude Code-/Codex-agentit käänteisten välityspalvelinten takana), lähetä:

X-Session-Id: istuntoavaimesi

OmniRoute hyväksyy myös x_session_id-otsakkeen ja palauttaa käytössä olevan istuntoavaimen X-OmniRoute-Session-Id-otsakkeessa.

Jos käytät Nginxiä ja lähetät alaviivallisia otsakkeita, ota käyttöön:

underscores_in_headers on;

Jokerimerkkejä käyttävät mallialiakset

Luo jokerimerkkikuvioita mallien nimien uudelleenmääritystä varten:

Kuvio: claude-sonnet-*     →  Kohde: cc/claude-sonnet-4-6
Kuvio: gpt-*               →  Kohde: gh/gpt-5.3-codex

Jokerimerkeistä tuetaan merkkejä * (mitkä tahansa merkit) ja ? (yksi merkki).

Varaketjut

Määritä yleiset varaketjut, joita käytetään kaikissa pyynnöissä:

Ketju: production-fallback
  1. cc/claude-opus-4-7
  2. gh/gpt-5.3-codex
  3. glm/glm-4.7

Vikasietoisuus ja katkaisijat

Määritä kohdassa Hallintapaneeli → Asetukset → Vikasietoisuus.

OmniRoute toteuttaa palveluntarjoajatason vikasietoisuuden viidellä osalla:

  1. Pyyntöjono ja tahdistus — järjestelmätason pyyntöliikenteen hallinta:

    • Pyyntöjä minuutissa (RPM) — pyyntöjen enimmäismäärä minuutissa tiliä kohden
    • Pyyntöjen vähimmäisväli — pyyntöjen välinen vähimmäisaika millisekunteina
    • Samanaikaisten pyyntöjen enimmäismäärä — samanaikaisten pyyntöjen enimmäismäärä tiliä kohden
  2. Yhteyden jäähdytysjakso — todennustyyppikohtainen määritys yksittäiselle yhteydelle uudelleenyrityksen sallivien virheiden jälkeen:

    • Perusjäähdytysjakso — oletusarvoinen jäähdytysjakso uudelleenyrityksen salliville ylävirran virheille
    • Käytä ylävirran uudelleenyritysohjeita — noudattaa luotettavia Retry-After-otsakkeita tai nollausohjeita, kun niitä annetaan
    • Takaisinkytkentävaiheiden enimmäismäärä — eksponentiaalisen odotusajan enimmäistaso toistuville virheille
  3. Palveluntarjoajan katkaisija — seuraa palveluntarjoajan päästä päähän -virheitä, merkitsee palveluntarjoajan heikentyneeksi määritetyn varoituskynnyksen ylittyessä ja avaa katkaisijan, kun määritetty virhekynnys saavutetaan:

    • Heikentymiskynnys — peräkkäisten palveluntarjoajavirheiden määrä ennen DEGRADED-tilaan siirtymistä
    • Virhekynnys — peräkkäisten palveluntarjoajavirheiden määrä ennen OPEN-tilaan siirtymistä
    • Nollauksen aikakatkaisu — aika ennen palveluntarjoajan testaamista uudelleen
    • CLOSED (toimintakuntoinen) — pyynnöt kulkevat normaalisti
    • DEGRADED — pyynnöt kulkevat edelleen samalla, kun lisääntyneitä virheitä seurataan
    • OPEN — palveluntarjoaja estetään väliaikaisesti toistuvien virheiden jälkeen
    • HALF_OPEN — testataan, onko palveluntarjoaja palautunut

    Yhteyskohtaiset 429-nopeusrajoitukset pysyvät Yhteyden jäähdytysjaksossa, eikä niitä lasketa mukaan palveluntarjoajan katkaisijaan.

    Palveluntarjoajan katkaisijan ajonaikainen tila näkyy vain kohdassa Hallintapaneeli → Tila.

  4. Odota jäähdytysjaksoa — jos jokainen ehdokasyhteys on jo jäähdytysjaksolla, OmniRoute voi odottaa aikaisimman jäähdytysjakson päättymistä ja yrittää samaa asiakaspyyntöä automaattisesti uudelleen.

  5. Nopeusrajoituksen automaattinen tunnistus — kun ylävirran palveluntarjoajat palauttavat täsmällisiä odotusaikoja, nämä ohjeet ohittavat paikallisen yhteyden jäähdytysjakson asetuksen ollessa käytössä.

Ammattilaisen vinkki: Tarkastele ja nollaa aktiiviset palveluntarjoajien katkaisijat käyttökatkon jälkeen Tila-sivulla. Vikasietoisuus-sivu muuttaa vain määrityksiä.


Tietokannan vienti/tuonti

Hallitse tietokannan varmuuskopioita kohdassa Hallintapaneeli → Asetukset → Järjestelmä ja tallennustila.

Toiminto Kuvaus
Vie tietokanta Lataa nykyisen SQLite-tietokannan .sqlite-tiedostona
Vie kaikki (.tar.gz) Lataa täydellisen varmuuskopioarkiston, joka sisältää tietokannan, asetukset, yhdistelmät, palveluntarjoajayhteydet (ei tunnistetietoja) ja API-avainten metatiedot
Tuo tietokanta Lataa palvelimelle .sqlite-tiedoston, joka korvaa nykyisen tietokannan. Tuontia edeltävä varmuuskopio luodaan automaattisesti, ellei DISABLE_SQLITE_AUTO_BACKUP=true
# API: Vie tietokanta
curl -o backup.sqlite http://localhost:20128/api/db-backups/export

# API: Vie kaikki (täydellinen arkisto)
curl -o backup.tar.gz http://localhost:20128/api/db-backups/exportAll

# API: Tuo tietokanta
curl -X POST http://localhost:20128/api/db-backups/import \
  -F "file=@backup.sqlite"

Tuonnin validointi: Tuodun tiedoston eheys (SQLite pragma -tarkistus), vaaditut taulut (provider_connections, provider_nodes, combos, api_keys) ja koko (enintään 100 Mt) validoidaan.

Käyttötapaukset:

  • OmniRouten siirtäminen koneesta toiseen
  • Ulkoisten varmuuskopioiden luominen katastrofipalautusta varten
  • Määritysten jakaminen tiimin jäsenten kesken (vie kaikki → jaa arkisto)

Asetusten hallintapaneeli

Asetussivu on järjestetty helppoa siirtymistä varten 7 välilehteen:

Välilehti Sisältö
Yleiset Järjestelmän tallennustyökalut, oletustoiminta, päätepistetunnelin näkyvyys
Ulkoasu Teeman hallinta (vaalea/tumma/järjestelmä), sivupalkin näkyvyys, Cloudflare-, Tailscale- ja ngrok-tunnelikorttien paneelivalinnat
Tekoäly Päättelybudjetti (välitys / automaattinen poisto / mukautettu / adaptiivinen — katso THINKING_BUDGET.md), globaali järjestelmäkehote, kehotteiden välimuistitilastot
Suojaus Kirjautumis- ja salasana-asetukset, IP-pääsynhallinta, API-todennus /models-päätepisteelle, palveluntarjoajien esto, kehotesyötteiden manipuloinnin esto
Reititys Globaali reititysstrategia (täytä ensimmäinen / vuorottelu / P2C / satunnainen / vähiten käytetty / kustannusoptimoitu), yleismerkilliset mallialiakset, varareititysketjut, yhdistelmien oletukset
Vikasietoisuus Pyyntöjono, yhteyden jäähdytysaika, palveluntarjoajan katkaisijan määritys ja jäähdytysajan odottaminen
Lisäasetukset Globaali välityspalvelinmääritys (HTTP/SOCKS5), palveluntarjoajakohtaiset välityspalvelinohitukset

Yleiset-välilehdellä ei enää toisteta vain luku -muotoisia loki- ja välimuistihuomautuksia. Tietokannan säilytys- ja optimointiasetukset tallennetaan /api/settings/database-päätepisteen kautta; välimuisti tyhjennetään manuaalisesti komennolla DELETE /api/cache. Pyyntö- ja välityspalvelinlokien rivirajoja hallitaan muuttujilla CALL_LOGS_TABLE_MAX_ROWS ja PROXY_LOGS_TABLE_MAX_ROWS.


Kustannusten ja budjetin hallinta

Avaa kohdasta Hallintapaneeli → Kustannukset.

Välilehti Tarkoitus
Budjetti Määritä API-avainkohtaiset kulutusrajat päivä-, viikko- ja kuukausibudjeteilla sekä reaaliaikaisella seurannalla
Hinnoittelu Tarkastele ja muokkaa mallien hinnoittelutietoja — hinta 1 000 syöte-/tulostustunnistetta kohden palveluntarjoajittain
# API: Määritä budjetti
curl -X POST http://localhost:20128/api/usage/budget \
  -H "Content-Type: application/json" \
  -d '{"keyId": "key-123", "limit": 50.00, "period": "monthly"}'

# API: Hae budjetin nykyinen tila
curl http://localhost:20128/api/usage/budget

Kustannusten seuranta: Jokaisesta pyynnöstä kirjataan tunnisteiden käyttö, ja kustannus lasketaan hinnoittelutaulukon perusteella. Tarkastele erittelyjä kohdassa Hallintapaneeli → Käyttö palveluntarjoajan, mallin ja API-avaimen mukaan.


Äänen litterointi

OmniRoute tukee äänen litterointia OpenAI-yhteensopivan päätepisteen kautta:

POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data

# Esimerkki curl-komennolla
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 on Deepgramin natiivi reitti ja vaatii Deepgramin API-avaimen. Jos vain OpenRouter on määritetty, käytä reittiä openrouter/deepgram/nova-3.

Puhe tekstiksi (litterointi) -palveluntarjoajat:

  • openai/ (Whisper-yhteensopiva)
  • groq/ (Groq Whisper Turbo)
  • deepgram/ (Nova-tuoteperhe)
  • assemblyai/
  • nvidia/ (Parakeet, Canary)
  • huggingface/ (Whisper-muunnelmat)
  • qwen/

Teksti puheeksi (POST /v1/audio/speech) -palveluntarjoajat:

  • 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/

Litteroinnin tukemat äänimuodot: mp3, wav, m4a, flac, ogg, webm. TTS-tulostusmuodot riippuvat palveluntarjoajasta (mp3, wav, opus, pcm, mulaw).


Yhdistelmien tasapainotusstrategiat

Määritä yhdistelmäkohtainen tasapainotus kohdassa Hallintapaneeli → Yhdistelmät → Luo/Muokkaa → Strategia.

Strategia Kuvaus
Vuorottelu Vaihtaa mallia järjestyksessä
Prioriteetti Kokeilee aina ensin ensimmäistä mallia ja siirtyy varamalliin vain virhetilanteessa
Satunnainen Valitsee yhdistelmästä satunnaisen mallin jokaista pyyntöä varten
Painotettu Reitittää suhteellisesti kullekin mallille määritettyjen painotusten perusteella
Vähiten käytetty Reitittää malliin, jolla on vähiten viimeaikaisia pyyntöjä (käyttää yhdistelmän mittareita)
Kustannusoptimoitu Reitittää halvimpaan käytettävissä olevaan malliin (käyttää hinnoittelutaulukkoa)

Yhdistelmien yleiset oletusasetukset voidaan määrittää kohdassa Hallintapaneeli → Asetukset → Reititys → Yhdistelmien oletusasetukset. Yhdistelmän kohteiden aikakatkaisut perivät oletusarvoisesti nykyisen pyynnön aikakatkaisun. Käytä yhdistelmien oletusasetusten tai yksittäisen yhdistelmän Kohteen aikakatkaisu (sekuntia) -asetusta vain, kun lyhyemmän kohdekohtaisen aikarajan tulee käynnistää nopeampi siirtyminen varakohteeseen.

Viiveettömät yhdistelmäoptimoinnit ovat valinnaisia. Jätä Viiveettömät optimoinnit pois käytöstä, jotta nämä viiveominaisuudet eivät kilpailuta varakohteita, ohita kohteita TTFT- historian perusteella tai tiivistä varapyyntöjä. Kun toiminto otetaan käyttöön, määritetty rinnakkaisvarmistus, ennakoivat TTFT- ohitukset ja ennakoiva varapyyntöjen tiivistäminen voivat lyhentää pitkän hännän viivettä reitityksen ja pyyntöjen tarkkuuden kustannuksella.

Poista Päättelytokenien puskuri käytöstä, kun ylävirran palveluntarjoajat edellyttävät tiukkoja max_tokens- / maxOutputTokens-rajoja. Kun asetus on käytössä, yhdistelmäreititys lisää päättelymallien lisätilaa vain malleille, joiden tulosteen enimmäisraja tunnetaan, ja jättää asiakkaan tokenrajan ennalleen, jos turvallinen puskuroitu arvo ylittäisi kyseisen rajan. Jos asiakkaan raja ylittää jo tunnetun enimmäisrajan, OmniRoute pienentää sen kyseiseen enimmäisrajaan ennen pyynnön lähettämistä ylävirtaan.


Järjestelmän kuntopaneeli

Avaa kohdasta Hallintapaneeli → Järjestelmän kunto. Reaaliaikainen yleiskatsaus järjestelmän kuntoon kuudessa kortissa:

Kortti Mitä se näyttää
Järjestelmän tila Käyttöaika, versio, muistin käyttö, datahakemisto
Palveluntarjoajien kunto Palveluntarjoajien yleisen katkaisijan ajonaikainen tila
Nopeusrajoitukset Aktiiviset yhteyskohtaiset jäähdytysajat tileittäin ja jäljellä oleva aika
Aktiiviset estot Aktiiviset mallikohtaiset estot ja väliaikaiset poissulkemiset
Allekirjoitusvälimuisti Duplikaattien poistovälimuistin tilastot (aktiiviset avaimet, osumatarkkuus)
Viivetelemetria p50/p95/p99-viiveiden kooste palveluntarjoajittain

Ammattilaisvinkki: Järjestelmän kuntosivu päivittyy automaattisesti 10 sekunnin välein. Katkaisijakortin avulla voit tunnistaa, millä palveluntarjoajilla on ongelmia.


🤖 Automaattinen reititys (ei määrityksiä)

OmniRoute sisältää pisteytykseen perustuvan automaattisen reitittimen, joka valitsee kullekin pyynnölle parhaan mallin kaikista yhdistetyistä palveluntarjoajista — ylläpidettävää yhdistelmää ei tarvita. Lähetä pyyntö jollakin auto/*-etuliitteellä, niin OmniRoute kokoaa virtuaalisen yhdistelmän lennossa ja pisteyttää ehdokkaat viiveen, kustannusten, onnistumisprosentin, kontekstiin sopivuuden, mallin tehtäväkohtaisen soveltuvuuden, viimeaikaisten virheiden, kiintiön ja katkaisijan tilan perusteella.

Etuliite Optimointikohde
auto Tasapainotettu oletus (viive × kustannukset × onnistumisprosentti)
auto/coding Ohjelmointitehtävät: suosii Claudea, GPT-5:tä, GLM:ää, Kimiä, Qwen Coderia ja DeepSeek-koodausmalleja
auto/cheap Pienin $/token, hyväksyy suuremman viiveen
auto/fast Pienin viive, jättää kustannukset huomiotta
auto/offline Vain paikalliset palveluntarjoajat (Ollama, vLLM, llama.cpp) — hyödyllinen eristetyissä ympäristöissä
auto/smart Päättelyn laatu etusijalla (Opus, GPT-5 xhigh, R1, GLM 5.1 reasoning)
auto/lkgp "Viimeksi toimivaksi todettu palveluntarjoaja" — käyttää viimeksi onnistunutta palveluntarjoajaa ja turvautuu sitten sääntöihin

Esimerkki:

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
  }'

Automaattinen reititin kuvataan kattavasti tiedostossa AUTO-COMBO.md — mukaan lukien pisteytyspainojen säätäminen, palveluntarjoajien lisääminen estolistalle ja reitityspäätösten tarkastelu kohdassa Koontinäyttö → Auto Combo.


🔌 MCP- ja A2A-integraatio

OmniRoute toimii sekä MCP-palvelimena (Model Context Protocol) että A2A-palvelimena (agenttien välinen JSON-RPC 2.0). Mikä tahansa MCP-yhteensopiva IDE tai agentti-isäntä voi kutsua OmniRouten työkaluja suoraan — ylimääräistä sovitinta ei tarvita.

MCP-siirtotavat

  • SSE: http://localhost:20128/api/mcp/sse
  • Suoratoistettava HTTP: http://localhost:20128/api/mcp/stream
  • stdio: omniroute --mcp (stdio-siirtotapaa suosiville IDE-laajennuksille)

Claude Desktopin yhdistäminen

Muokkaa tiedostoa ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) tai vastaavaa tiedostoa Windowsissa/Linuxissa:

{
  "mcpServers": {
    "omniroute": {
      "command": "omniroute",
      "args": ["--mcp"]
    }
  }
}

Cursorin / Continuen / VS Code MCP:n yhdistäminen

Käytä SSE-URL-osoitetta http://localhost:20128/api/mcp/sse ja Bearer-API-avainta, joka on luotu kohdassa Koontinäyttö → API-avaimet.

Käyttöoikeusalueet

MCP määrittelee tällä hetkellä 32 nimettyä käyttöoikeusaluetta. Kukin Bearer-avain voidaan rajata tiettyihin käyttöoikeusalueisiin — kattava käyttöoikeusalueiden ja työkalujen luettelo on tiedostossa MCP-SERVER.md, ja JSON-RPC-skeema on tiedostossa A2A-SERVER.md.


🧠 Taitojärjestelmä

OmniRoute tarjoaa laajennettavan taitokehyksen (src/lib/skills/), jonka avulla agentit ja A2A-päätepiste voivat suorittaa toimialuekohtaisia rutiineja (esim. code-review, summarize, extract-facts, web-research).

  • Markkinapaikan käyttöliittymä — Selaa ja asenna taitoja kohdassa Hallintapaneeli → Taidot
  • Avainkohtaiset käyttöoikeudet — Rajoita, mitkä API-avaimet voivat kutsua mitäkin taitoja
  • Mukautetut taidot — Lisää TypeScript-tiedosto hakemistoon src/lib/a2a/skills/, rekisteröi se, minkä jälkeen sitä voidaan kutsua välittömästi A2A:n kautta

Täydellinen viite: SKILLS.md.


💾 Muistijärjestelmä

OmniRoute säilyttää pitkäkestoisen keskustelumuistin hybridihakua käyttäen:

  • SQLite FTS5 avainsanahakuihin aiemmista keskusteluvuoroista
  • Qdrant-vektoritietokanta (valinnainen) semanttiseen palautukseen
  • Automaattinen faktojen poiminta — entiteetit, mieltymykset ja päätökset tiivistetään jokaisen istunnon jälkeen ja tallennetaan memory_facts-tauluun
  • Muistit rajataan API-avaimen ja istunnon mukaan

Hallitse muisteja kohdassa Hallintapaneeli → Muisti (haku, muokkaus, vienti ja tyhjennys). HTTP-rajapinnan (/api/memory/*) avulla agentit voivat lähettää ja hakea faktoja ohjelmallisesti — katso MEMORY.md.


🔔 Webhookit

Tilaa OmniRoute-tapahtumia reaaliaikaista valvontaa ja automaatiota varten.

  • Luo webhook kohdassa Hallintapaneeli → Webhookit määrittämällä kohde-URL ja HMAC-allekirjoitussalaisuus
  • Saatavilla olevat tapahtumat: request.completed, request.failed, provider.unavailable, budget.exceeded, combo.switched, circuit_breaker.opened, circuit_breaker.closed
  • Jokainen hyötykuorma sisältää X-OmniRoute-Signature-otsakkeen (HMAC-SHA256) tarkistusta varten
  • Uudelleenyritykset: 3 yritystä eksponentiaalisella viiveellä, minkä jälkeen tapahtuma siirretään käsittelemättömien viestien jonoon

Täydellinen skeema on tiedostossa WEBHOOKS.md.


☁️ Pilviagentit

OmniRoute integroituu pilvipohjaisiin koodausagentteihin (OpenAI Codex Cloud, Devin, Jules, Antigravity), joten voit lähettää pitkäkestoisia tehtäviä samasta hallintapaneelista, jolla hallitset paikallista reititystä.

  • Luo tehtäviä kohdassa Hallintapaneeli → Pilviagentit tai käyttäen POST /api/v1/agents/tasks
  • Seuraa kunkin tehtävän tilaa, lokeja ja artefakteja
  • Käytä omaa API-avaintasi kullekin palveluntarjoajalle — tunnistetiedot eivät koskaan poistu OmniRoute-instanssista

Täydellinen viite: CLOUD_AGENT.md.


🛠️ Ohjelmallinen hallinta

Voit hallita kaikkia OmniRoute-resursseja (palveluntarjoajia, yhdistelmiä, avaimia ja asetuksia) HTTP:n kautta käyttämällä Bearer-avainta, jolla on manage-käyttöoikeus.

Luo avain kohdassa Hallintapaneeli → API-avaimet → Uusi avain → Käyttöoikeus: manage ja suorita sitten:

# Listaa palveluntarjoajat
curl http://localhost:20128/api/providers \
  -H "Authorization: Bearer $OMNIROUTE_MANAGE_KEY"

# Lisää palveluntarjoajayhteys
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" }'

# Luo yhdistelmä
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" }] }'

# Listaa/luo API-avaimia
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"] }'

Täydellinen päätepisteluettelo sekä pyyntö- ja vastausskeemat ovat tiedostossa API_REFERENCE.md.


💻 Sisäinen CLI

OmniRoute sisältää sisäisen CLI:n (omniroute …) määritystä, diagnostiikkaa ja suorituksenaikaista hallintaa varten. Tämä on erillinen hallintapaneelin CLI-työkalut-sivusta, jolla määritetään kolmansien osapuolten CLI-työkaluja (Claude Code, Cursor, Codex, Cline, …), jotta ne voivat viestiä OmniRouten kanssa.

omniroute setup                    # Ohjattu interaktiivinen määritys (salasana, palveluntarjoajat, yhdistelmät)
omniroute setup --non-interactive  # Soveltuu CI-ympäristöihin
omniroute doctor                   # Kuntodiagnostiikka (datahakemisto, tietokanta, palveluntarjoajat, portit)
omniroute providers available      # Luettele tuetut palveluntarjoajat
omniroute providers list           # Luettele määritetyt yhteydet
omniroute providers test <id>      # Testaa palveluntarjoajayhteys reaaliaikaisesti
omniroute combos list              # Luettele yhdistelmät
omniroute combos switch <name>     # Aseta oletusyhdistelmä
omniroute models                   # Luettele käytettävissä olevat mallit (--json, --search)
omniroute keys add | list | remove # Hallitse API-avaimia päätteestä
omniroute backup                   # Luo tilannevedos määrityksistä ja tietokannasta
omniroute restore [<timestamp>]    # Palauta tilannevedoksesta
omniroute health                   # Yksityiskohtaiset kuntotiedot (katkaisimet, välimuisti, muisti)
omniroute quota                    # Palveluntarjoajien kiintiöiden käyttö
omniroute mcp status               # MCP-palvelimen tila
omniroute a2a status               # A2A-palvelimen tila
omniroute tunnel list|create|stop  # Cloudflare-/Tailscale-/ngrok-tunnelit
omniroute reset-password           # Nollaa järjestelmänvalvojan salasana
omniroute --mcp                    # Käynnistä MCP-palvelin stdio-yhteydellä
omniroute --port 3000              # Käynnistä palvelin mukautetussa portissa

Vinkki: yhdistä omniroute doctor --json valvontatyökaluusi, jotta saat hälytyksen epäkuntoisista palveluntarjoajayhteyksistä.


🖥️ Työpöytäsovellus (Electron)

OmniRoute on saatavilla natiivina työpöytäsovelluksena Windowsille, macOS:lle ja Linuxille.

Asennus

# electron-hakemistosta:
cd electron
npm install

# Kehitystila (muodostaa yhteyden käynnissä olevaan Next.js-kehityspalvelimeen):
npm run dev

# Tuotantotila (käyttää itsenäistä koontiversiota):
npm start

Asennuspakettien koostaminen

cd electron
npm run build          # Nykyinen alusta
npm run build:win      # Windows (.exe NSIS)
npm run build:mac      # macOS (.dmg, universaali)
npm run build:linux    # Linux (.AppImage)

Tuloste → electron/dist-electron/

Keskeiset ominaisuudet

Ominaisuus Kuvaus
Palvelimen valmius Tarkistaa palvelimen ennen ikkunan näyttämistä (ei tyhjää näyttöä)
Ilmaisinalue Pienennä ilmaisinalueelle, vaihda porttia tai sulje ilmaisinalueen valikosta
Porttien hallinta Vaihda palvelimen porttia ilmaisinalueelta (käynnistää palvelimen automaattisesti uudelleen)
Sisällön suojauskäytäntö Rajoittava CSP istunto-otsakkeiden kautta
Yksi instanssi Vain yksi sovellusinstanssi voi olla käynnissä kerrallaan
Offline-tila Pakettiin sisältyvä Next.js-palvelin toimii ilman internetyhteyttä

Ympäristömuuttujat

Muuttuja Oletusarvo Kuvaus
OMNIROUTE_PORT 20128 Palvelimen portti
OMNIROUTE_MEMORY_MB 512 Node.js-keon raja (64–16384 Mt)

📖 Täydellinen dokumentaatio: electron/README.md