# Environment Variables Reference (æ¥æ¬èª)
ð **Languages:** ðºðž [English](../../../../reference/ENVIRONMENT.md) · ðªð¹ [am](../../../am/docs/reference/ENVIRONMENT.md) · ðžðŠ [ar](../../../ar/docs/reference/ENVIRONMENT.md) · ðŠð¿ [az](../../../az/docs/reference/ENVIRONMENT.md) · ð§ð¬ [bg](../../../bg/docs/reference/ENVIRONMENT.md) · ð§ð© [bn](../../../bn/docs/reference/ENVIRONMENT.md) · ð§ðŠ [bs](../../../bs/docs/reference/ENVIRONMENT.md) · ðšð¿ [cs](../../../cs/docs/reference/ENVIRONMENT.md) · ð©ð° [da](../../../da/docs/reference/ENVIRONMENT.md) · ð©ðª [de](../../../de/docs/reference/ENVIRONMENT.md) · ð¬ð· [el](../../../el/docs/reference/ENVIRONMENT.md) · ðªðž [es](../../../es/docs/reference/ENVIRONMENT.md) · ðªðª [et](../../../et/docs/reference/ENVIRONMENT.md) · ð®ð· [fa](../../../fa/docs/reference/ENVIRONMENT.md) · ð«ð® [fi](../../../fi/docs/reference/ENVIRONMENT.md) · ð«ð· [fr](../../../fr/docs/reference/ENVIRONMENT.md) · ð®ðª [ga](../../../ga/docs/reference/ENVIRONMENT.md) · ð®ð³ [gu](../../../gu/docs/reference/ENVIRONMENT.md) · ð³ð¬ [ha](../../../ha/docs/reference/ENVIRONMENT.md) · ð®ð± [he](../../../he/docs/reference/ENVIRONMENT.md) · ð®ð³ [hi](../../../hi/docs/reference/ENVIRONMENT.md) · ðð· [hr](../../../hr/docs/reference/ENVIRONMENT.md) · ððº [hu](../../../hu/docs/reference/ENVIRONMENT.md) · ðŠð² [hy](../../../hy/docs/reference/ENVIRONMENT.md) · ð®ð© [id](../../../id/docs/reference/ENVIRONMENT.md) · ð³ð¬ [ig](../../../ig/docs/reference/ENVIRONMENT.md) · ð®ð¹ [it](../../../it/docs/reference/ENVIRONMENT.md) · ð¬ðª [ka](../../../ka/docs/reference/ENVIRONMENT.md) · ð°ð [km](../../../km/docs/reference/ENVIRONMENT.md) · ð®ð³ [kn](../../../kn/docs/reference/ENVIRONMENT.md) · ð°ð· [ko](../../../ko/docs/reference/ENVIRONMENT.md) · ð±ð¹ [lt](../../../lt/docs/reference/ENVIRONMENT.md) · ð±ð» [lv](../../../lv/docs/reference/ENVIRONMENT.md) · ð®ð³ [ml](../../../ml/docs/reference/ENVIRONMENT.md) · ð®ð³ [mr](../../../mr/docs/reference/ENVIRONMENT.md) · ð²ðŸ [ms](../../../ms/docs/reference/ENVIRONMENT.md) · ð²ð¹ [mt](../../../mt/docs/reference/ENVIRONMENT.md) · ð²ð² [my](../../../my/docs/reference/ENVIRONMENT.md) · ð³ðµ [ne](../../../ne/docs/reference/ENVIRONMENT.md) · ð³ð± [nl](../../../nl/docs/reference/ENVIRONMENT.md) · ð³ðŽ [no](../../../no/docs/reference/ENVIRONMENT.md) · ð®ð³ [or](../../../or/docs/reference/ENVIRONMENT.md) · ð®ð³ [pa](../../../pa/docs/reference/ENVIRONMENT.md) · ðµð [phi](../../../phi/docs/reference/ENVIRONMENT.md) · ðµð± [pl](../../../pl/docs/reference/ENVIRONMENT.md) · ðµð¹ [pt](../../../pt/docs/reference/ENVIRONMENT.md) · ð§ð· [pt-BR](../../../pt-BR/docs/reference/ENVIRONMENT.md) · ð·ðŽ [ro](../../../ro/docs/reference/ENVIRONMENT.md) · ð·ðº [ru](../../../ru/docs/reference/ENVIRONMENT.md) · ð±ð° [si](../../../si/docs/reference/ENVIRONMENT.md) · ðžð° [sk](../../../sk/docs/reference/ENVIRONMENT.md) · ðžð® [sl](../../../sl/docs/reference/ENVIRONMENT.md) · ð·ðž [sr](../../../sr/docs/reference/ENVIRONMENT.md) · ðžðª [sv](../../../sv/docs/reference/ENVIRONMENT.md) · ð°ðª [sw](../../../sw/docs/reference/ENVIRONMENT.md) · ð®ð³ [ta](../../../ta/docs/reference/ENVIRONMENT.md) · ð®ð³ [te](../../../te/docs/reference/ENVIRONMENT.md) · ð¹ð [th](../../../th/docs/reference/ENVIRONMENT.md) · ð¹ð· [tr](../../../tr/docs/reference/ENVIRONMENT.md) · ðºðŠ [uk-UA](../../../uk-UA/docs/reference/ENVIRONMENT.md) · ðµð° [ur](../../../ur/docs/reference/ENVIRONMENT.md) · ðºð¿ [uz](../../../uz/docs/reference/ENVIRONMENT.md) · ð»ð³ [vi](../../../vi/docs/reference/ENVIRONMENT.md) · ð³ð¬ [yo](../../../yo/docs/reference/ENVIRONMENT.md) · ðšð³ [zh-CN](../../../zh-CN/docs/reference/ENVIRONMENT.md) · ð¹ðŒ [zh-TW](../../../zh-TW/docs/reference/ENVIRONMENT.md)
---
> OmniRoute ãèªèãããã¹ãŠã®ç°å¢å€æ°ã«é¢ããå®å
šãªãªãã¡ã¬ã³ã¹ã§ãã
> ã¯ã€ãã¯ã¹ã¿ãŒãçšãã³ãã¬ãŒãã«ã€ããŠã¯ã[`.env.example`](../../.env.example)ãåç
§ããŠãã ããã
> [!IMPORTANT]
> ããã«èšèŒãããŠãããã¹ãŠã®å€æ°ã¯ `.env.example` ã«ãå«ãŸããŠããå¿
èŠãããã
> `.env.example` ã«å«ãŸãããã¹ãŠã®å€æ°ãããã«èšèŒãããŠããå¿
èŠããããŸãã`npm run check:env-doc-sync`
> ã¯ãã³ãããæããã³ CI ã§ãã®æŽåæ§ã匷å¶ããŸãã倿°ãæå³çã«é€å€ããã«ã¯ã
> `scripts/check/check-env-doc-sync.mjs` å
ã®èš±å¯ãªã¹ãã«è¿œå ããŠãã ããã
---
## ç®æ¬¡
- [1. å¿
é ã®ã·ãŒã¯ã¬ãã](#1-required-secrets)
- [2. ã¹ãã¬ãŒãžãšããŒã¿ããŒã¹](#2-storage--database)
- [3. ãããã¯ãŒã¯ãšããŒã](#3-network--ports)
- [4. ã»ãã¥ãªãã£ãšèªèšŒ](#4-security--authentication)
- [5. å
¥åã®ãµãã¿ã€ãºãš PII ä¿è·](#5-input-sanitization--pii-protection)
- [6. ããŒã«ãšã«ãŒãã£ã³ã°ã®ããªã·ãŒ](#6-tool--routing-policies)
- [7. URL ãšã¯ã©ãŠãåæ](#7-urls--cloud-sync)
- [8. ã¢ãŠãããŠã³ããããã·](#8-outbound-proxy)
- [9. CLI ããŒã«çµ±å](#9-cli-tool-integration)
- [10. å
éšãšãŒãžã§ã³ããš MCP ã®çµ±å](#10-internal-agent--mcp-integrations)
- [11. OAuth ãããã€ããŒã®èªèšŒæ
å ±](#11-oauth-provider-credentials)
- [12. ãããã€ããŒã® User-Agent ãªãŒããŒã©ã€ã](#12-provider-user-agent-overrides)
- [13. CLI ãã£ã³ã¬ãŒããªã³ãã®äºææ§](#13-cli-fingerprint-compatibility)
- [14. API ããŒãããã€ããŒ](#14-api-key-providers)
- [15. ã¿ã€ã ã¢ãŠãèšå®](#15-timeout-settings)
- [16. ãã®ã³ã°](#16-logging)
- [17. ã¡ã¢ãªæé©å](#17-memory-optimization)
- [18. æéåæ](#18-pricing-sync)
- [19. ã¢ãã«åæïŒéçºçšïŒ](#19-model-sync-dev)
- [20. ãããã€ããŒåºæã®èšå®](#20-provider-specific-settings)
- [21. ãããã·ã®æ£åžžæ§](#21-proxy-health)
- [22. ãããã°](#22-debugging)
- [23. GitHub çµ±å](#23-github-integration)
- [24. Skills ãµã³ãããã¯ã¹ïŒv3.8.0+ïŒ](#24-skills-sandbox-v380)
- [27. Radar ãã£ãŒãïŒã»ã«ããã¹ãã£ã³ã°ïŒ](#27-radar-feed-self-hosting)
- [ãããã€ã·ããªãª](#deployment-scenarios)
- [ç£æ»ïŒå逿žã¿ïŒæªäœ¿çšã®å€æ°](#audit-removed--dead-variables)
---
## 1. å¿
é ã·ãŒã¯ã¬ãã
**ã¯ã**ãšããŒã¯ãããæªèšå®ã®ã·ãŒã¯ã¬ããã¯ãååå®è¡æã«èªåçæããïŒ`JWT_SECRET`ã`API_KEY_SECRET`ïŒãããŒã¿ãã£ã¬ã¯ããªå
ã® `server.env` ã«ä¿åãããŸãããã®ãã£ã¬ã¯ããªãäžæçãªãã®ã§ããå Žåã¯ãæç€ºçã«èšå®ããŠãã ãããäŸå€ã¯ `OMNIROUTE_WS_BRIDGE_SECRET` ã§ãããã㯠`server.env` ã«ã¯ä¿åãããŸããããµãŒããŒã®ãšã³ããªãã€ã³ãã¯èµ·åããšã«ãããã»ã¹å
ã®ããªããžã®ã¿ã䜿çšã§ããäžæçãªå€ãçºè¡ãããããå€éšã®ããªããžã¯ã©ã€ã¢ã³ãã§ã¯æç€ºçãªèšå®ãå¿
èŠã§ãã
| 倿° | å¿
é | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------- | -------------------- | ------------------ | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `JWT_SECRET` | **ã¯ã** | _(ãªã)_ | `src/lib/auth` | ãã¹ãŠã®ããã·ã¥ããŒãã»ãã·ã§ã³CookieïŒJWTïŒã®çœ²åãšæ€èšŒã«äœ¿çšããŸãã`openssl rand -base64 48`ã§çæããŠãã ããã |
| `API_KEY_SECRET` | **ã¯ã** | _(ãªã)_ | `src/lib/db/apiKeys.ts` | SQLiteå
ã§ä¿åãããAPIããŒå€ãæå·åããããã®AESæå·éµã§ãã`openssl rand -hex 32`ã§çæããŠãã ããã |
| `INITIAL_PASSWORD` | ããã | _(æªèšå®)_ | `src/lib/auth/managementPassword.ts` | ãã¹ã¯ãŒãããŸã ä¿åãããŠããªãéãèµ·åæã«ããã·ã¥ããŒãã®ãã¹ã¯ãŒããèšå®ããŸãããã¹ã¯ãŒããä¿åããããšç¡èŠãããŸããnpm ã€ã³ã¹ããŒã«ãšãœãŒã¹ã€ã³ã¹ããŒã«ã¯ `.env.example` ã `.env` ãžã³ããŒãããããå
¬éãããŠãããã¬ãŒã¹ãã«ã㌠`CHANGEME` ã®ãŸãŸèµ·åããŸããååèµ·ååã«çœ®ãæãããããã® `.env` ã§ `INITIAL_PASSWORD=`ïŒç©ºïŒãèšå®ããŠãæªèšå®å€ïŒDocker ã€ã¡ãŒãžã®ããã©ã«ãïŒãšåæ§ã«ãåå蚪åæã«ã»ããã¢ãããŠã£ã¶ãŒãã§ãã¹ã¯ãŒããäœæããŠãã ãããä¿åæžã¿ãã¹ã¯ãŒãã®å€æŽã¯ãããã·ã¥ããŒã â èšå® â ã»ãã¥ãªãã£ããè¡ããã`DATA_DIR` ããµãŒããŒã®ããŒã¿ãã£ã¬ã¯ããªã«èšå®ã㊠`omniroute reset-password`ïŒãœãŒã¹ãã§ãã¯ã¢ãŠãã§ã¯ `node bin/reset-password.mjs`ïŒãå®è¡ããŠãã ããã |
| `OMNIROUTE_WS_BRIDGE_SECRET` | **ã¯ã**ïŒæ¬çªç°å¢ïŒ | _(æªèšå®)_ | `src/app/api/internal/codex-responses-ws/route.ts` | å
éšCodex Responses WebSocketããªããžçšã®å
±æã·ãŒã¯ã¬ããã§ããElectronïŒãã©ãŠã¶ãŒã®WSãªã¬ãŒãšOmniRouteéã®ããªããžãªã¯ãšã¹ããèªèšŒããŸããâ ïž **æ¬çªç°å¢ã§ã¯å¿
é ã§ããæªèšå®ã®å Žåããã¹ãŠã®WSããªããžãªã¯ãšã¹ããæåŠãããŸãã**`openssl rand -base64 32`ã§çæããŠãã ããã |
| `OMNIROUTE_SW_BUILD_ID` | ããã | _(git SHA)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | PWAã·ã§ã«ïŒ#11779ïŒã®ãã£ãã·ã¥ã確å®ã«æŽæ°ããããã®æç€ºçãªãµãŒãã¹ã¯ãŒã«ãŒã®IDã§ãã解決ãã§ãŒã³ã§æåã«äœ¿çšãããŸãã |
| `SOURCE_VERSION` | ããã | _(æªèšå®)_ | `next.config.mjs`, `scripts/build/assembleStandalone.mjs` | ãã§ãŒã³ã®2çªç®ã«äœ¿çšãããŸãããããã€ãããã³ããããšããŠPaaSãã«ããŒïŒäŸïŒHeroku圢åŒïŒã«ãã£ãŠèšå®ãããŸãã |
| `NEXT_PUBLIC_SW_BUILD_ID` | ããã | _(å°åºå€)_ | `src/shared/components/PwaRegister.tsx` | ã¯ã©ã€ã¢ã³ãã`/sw.js?v=âŠ`ãç»é²ããããã«äœ¿çšãããã«ãæã®å
¬éå€ã§ããäžèš2ã€ã®å€ãç¶ããŠgit SHAããå°åºãããŸãã |
| `OMNIROUTE_PEER_STAMP_TOKEN` | ãããïŒèªåïŒ | _(èµ·åããšã«èªå)_ | `src/server/authz/policies/management.ts` | ä¿¡é Œããããã¢IPã¹ã¿ã³ããOmniRouteèªèº«ã®HTTPãµãŒããŒïŒ`scripts/dev/peer-stamp.mjs`ïŒããçºè¡ãããããšã蚌æãããããã»ã¹åäœã®ã·ãŒã¯ã¬ããã§ããauthzããã«ãŠã§ã¢ã¯ãã¹ã¿ã³ãã«ãã®ããŒã¯ã³ãå«ãŸããŠããå Žåã«ã®ã¿ããªã¯ãšã¹ãã®ããŒã«ã«æ§ïŒLOCAL_ONLYã«ãŒãã®ã«ãŒãããã¯ïŒLANã²ãŒãã£ã³ã°ïŒãä¿¡é ŒããŸããèµ·åããšã«èªåçæããããããæªèšå®ã®ãŸãŸã«ããŠãã ãããã¹ã¿ã³ããå
±æããå¿
èŠããããã«ãããã»ã¹æ§æã®å Žåã«ã®ã¿åºå®ããŠãã ããã |
| `OMNIROUTE_TRUSTED_PROXIES` | ããã | _(æªèšå®)_ | `scripts/dev/peer-stamp.mjs` | IPèš±å¯ïŒæåŠãªã¹ãã`X-Forwarded-For`ïŒ`X-Real-IP`ãä¿¡é Œã§ãããªããŒã¹ãããã·ã®IPãŸãã¯CIDRç¯å²ããã«ã³ãåºåãã§æå®ããŸããã«ãŒãããã¯ããã©ã€ããŒããããã¯ãŒã¯ã¢ãã¬ã¹ãããã³Cloudflareãšããžã¯åžžã«ä¿¡é ŒãããŸããããã以å€ã®ãããªãã¯ã¢ãã¬ã¹äžã«ãããããã·ã®å Žåã«ã®ã¿å¿
èŠã§ããæå®ããªãå Žåããã£ã«ã¿ãŒã¯ãããã·èªäœã®ã¢ãã¬ã¹ãå€å®å¯Ÿè±¡ãšããŸãã |
### çæã³ãã³ã
```bash
# 4ã€ã®ã·ãŒã¯ã¬ããããã¹ãŠäžåºŠã«çæïŒ
echo "JWT_SECRET=$(openssl rand -base64 48)"
echo "API_KEY_SECRET=$(openssl rand -hex 32)"
echo "INITIAL_PASSWORD=$(openssl rand -base64 16)"
echo "OMNIROUTE_WS_BRIDGE_SECRET=$(openssl rand -base64 32)"
```
> [!CAUTION]
> å®éã®ã·ãŒã¯ã¬ãããå«ã`.env`ãã¡ã€ã«ãããŒãžã§ã³ç®¡çã«ã³ãããããªãã§ãã ããã`.gitignore`ã§ã¯ãã§ã«`.env`ãé€å€ãããŠããŸãããããã·ã¥ããåã«ç¢ºèªããŠãã ããã
---
## 2. ã¹ãã¬ãŒãžãšããŒã¿ããŒã¹
OmniRoute ã¯ããã¹ãŠã®æ°žç¶åã« **SQLite**ïŒ`better-sqlite3` çµç±ïŒã䜿çšããŸãããããã®å€æ°ã¯ãããŒã¿ã®ä¿åå Žæãæå·åãã©ã€ããµã€ã¯ã«ãå¶åŸ¡ããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------------ | ------------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DATA_DIR` | `~/.omniroute/` | `src/lib/db/core.ts` | SQLite DBãããã¯ã¢ãããããŒã¿ãã¡ã€ã«ã®ã«ãŒããã£ã¬ã¯ããªã§ããDocker ããªã¥ãŒã ãã«ã¹ã¿ã ãã¹ã䜿çšããå Žåã¯äžæžãããŠãã ããã |
| `OMNIROUTE_ALLOW_DEFAULT_DATA_DIR` | _ïŒæªèšå®ïŒ_ | `src/lib/dataPaths.ts` | ãã¹ãïŒè©äŸ¡çšã® DATA_DIR ã¬ãŒãïŒ#10428ïŒãåé¿ããããã®ãšã¹ã±ãŒããããã§ãã`DATA_DIR` ãæå®ãããŠããªããã¹ãããã³ Node ã® eval/print ãããŒãïŒ`-e`/`--eval`/`-p`/`--print`ã`--eval=`/`--print=` 圢åŒãå«ãïŒã¯ããªãã¬ãŒã¿ãŒã®å®ããŒã¿ããŒã¹ãéããªãããã«ãäžæçãªäœ¿ãæšãŠãã£ã¬ã¯ããªãžãªãã€ã¬ã¯ããããŸããå®ãã£ã¬ã¯ããªã®äœ¿çšãåã³æå¹ã«ããã«ã¯ `1` ã«èšå®ããŸãã |
| `OMNIROUTE_BUILD_SHA` | _ïŒæªèšå®ïŒ_ | `src/lib/monitoring/buildSha.ts` | å®è¡äžã®ã¢ãŒãã£ãã¡ã¯ãã® Git SHA ã§ãã`npm run build:release` ã«ãã£ãŠåã蟌ãŸããŸãã`dist/BUILD_SHA` ã»ã³ããã«ãå«ãŸãªãã³ã³ããã§ã¯æ³šå
¥ã§ããŸãã`/api/monitoring/health` ã§ `system.buildSha` ãšããŠå
¬éãããŸãã |
| `OMNIROUTE_RELEASE_REF` | `origin/main` | `scripts/build/buildProvenance.ts` | pack-artifact ã®ããããã³ã¹ã²ãŒãããã«ã SHA ãšç
§åããåç
§ã§ãïŒ#10427ïŒã |
| `OMNIROUTE_ALLOW_CANARY_BUILD` | _ïŒæªèšå®ïŒ_ | `scripts/build/buildProvenance.ts` | SHA ããªãªãŒã¹ã©ã€ã³äžã«ãªããã«ãã®ããã±ãŒãžåãèš±å¯ããã«ã¯ `1` ã«èšå®ããŸããã²ãŒãã倱æããã代ããã«ãæå³çãªã«ããªã¢ãšããŠèšé²ãããŸãïŒ#10427ïŒã |
| `OMNIROUTE_SMOKE_API_KEY` | _ïŒæªèšå®ïŒ_ | `scripts/ops/deploy-canary.mjs` | ã«ããªã¢ãããã€ã®ã¹ã¢ãŒã¯ãããŒãçš API ããŒã§ãã`/v1/chat/completions` ã« `Authorization: Bearer` ãšããŠéä¿¡ãããŸãããããã€ã¹ã¯ãªããã®ã¿ã䜿çšãïŒ#10429ïŒããµãŒããŒã䜿çšããããšã¯ãããŸããããªããã€ã³åŒ CLI ã¹ã¢ãŒã¯ããŒãã¹ã® `OMNIROUTE_SMOKE_*` 倿°ïŒ`tests/integration/upstream-cli-smoke.int.test.ts` å
ã® `RUN_CLI_SMOKE=1`ã`OMNIROUTE_SMOKE_BASE_URL/MODEL/API_KEY_ENV/TARGETS/TIMEOUT_MS`ïŒãšã¯ç¡é¢ä¿ã§ãã詳现㯠[CLI çµ±å â å®ç°å¢ã¹ã¢ãŒã¯ã¹ã€ãŒã](../guides/CLI-INTEGRATIONS.md) ãåç
§ããŠãã ããã |
| `OMNIROUTE_BUILDING` | _ïŒæªèšå®ïŒ_ | `src/lib/buildPhase.ts` | ãã«ããã§ãŒãºã·ã°ãã«ïŒ#10060ïŒã§ãã`scripts/build/build-next-isolated.mjs` ã«ãã£ãŠ `1` ã«èšå®ãããçæããããã¹ãŠã®ãã«ãã¯ãŒã«ãŒã«ç¶æ¿ãããŸããããã«ãããDB ã¬ã€ã€ãŒã¯ãã€ãã£ãã® better-sqlite3 ã¢ããªã³ïŒçµäºæã«ã¯ãŒã«ãŒãç°åžžçµäºãããïŒãèªã¿èŸŒã代ããã«ãäœãããªãã¹ã¿ããè¿ããŸããå®è¡äžã®ãµãŒããŒã§ã¯æ±ºããŠèšå®ããªãã§ãã ããã |
| `OMNIROUTE_SKIP_NATIVE_DEP_CHECK` | `0` | `scripts/check/check-native-deps.mjs` | ç¹æ®ãªãã³ããŒç®¡çããªãŒã«å¯Ÿãããä»»æã®ãã€ãã£ãäŸåé¢ä¿ã®äºåãã«ããã§ãã¯ãçç¥ããã«ã¯ `1` ã«èšå®ããŸããããã«ãããæ¬ èœããŠããäŸåé¢ä¿ããã«ãå¯èœã«ãªãããã§ã¯ãããŸããããã€ãã£ãäŸåé¢ä¿ãå¥çµè·¯ã§æäŸãããå Žåã«ã®ã¿äœ¿çšããŠãã ããã |
| `OMNIROUTE_DATA_DIR` | _ïŒæªèšå®ïŒ_ | `open-sse/executors/promptql/threadSticky.ts` | `DATA_DIR` ã®**ãã©ãŒã«ããã¯ãšã€ãªã¢ã¹**ã§ããã`DATA_DIR` ãæªèšå®ã®å Žåã«ã®ã¿ç¢ºèªãããŸããPromptQL ãšã°ãŒãã¥ãŒã¿ãŒã®ãã£ã¹ã¯äžã®ã¹ã¬ããåºå®ã»ãã·ã§ã³ãã£ãã·ã¥ïŒ`
/promptql-thread-sessions.json`ïŒã®ä¿åå Žæãç¹å®ããããã«äœ¿çšãããŸããã©ã¡ãã®å€æ°ãèšå®ãããŠããªãå Žåããã£ãã·ã¥ã¯ã¡ã¢ãªå
ã«ã®ã¿ä¿æãããŸãïŒåèµ·ååŸã¯æ°žç¶åãããŸããïŒã |
| `OMNIROUTE_PLUGINS_DIR` | _ïŒæªèšå®ïŒ_ | `src/lib/plugins/scanner.ts` | **ã©ã³ã¿ã€ã ãã©ã°ã€ã³ã¹ãã£ããŒ**ãèªã¿åãããã©ã°ã€ã³ãããŒãžã£ãŒãã€ã³ã¹ããŒã«å
ãšããŠäœ¿çšããã«ãŒããã£ã¬ã¯ããªã§ããããŒã ããå°åºãããããã©ã«ããäžæžãããŸãïŒ#11827ïŒãã¹ãã£ã³ãã¹ã倿Žããããã ãã« HOME ãç§»åããã®ã§ã¯ãªããDocker/K8s ã§ãã€ã³ãããŠã³ãããããã©ã°ã€ã³ããªãŒãæå®ããŠãã ããïŒHOME ã¯ãããŒã çžå¯Ÿã®ä»ã®ãã¹ãŠã®åäœã«ã圱é¿ããŸãïŒãæªèšå®ã®å Žå㯠`~/.omniroute/plugins`ãããã»ã¹ãããŒã ããŸã£ãããšã¯ã¹ããŒãããŠããªãå Žå㯠`/tmp/.omniroute/plugins` ã«ãªããŸãããã®å€æ°ã«ããããã©ã°ã€ã³ãæé»çã«æ€åºãããªãåé¡ãè§£æ¶ã§ããŸãã解決ããããã£ã¬ã¯ããªã¯ãæ¡çšãããå
¥åãšãšãã«ãèµ·åæã« `scanner.dir_resolved` ãšããŠäžåºŠã ããã°ã«èšé²ãããŸãããµãŒããŒåŽå°çšã§ããCLI ã³ãã³ããã©ã°ã€ã³ã¯ãåŒãç¶ãç¬èªã® `OMNIROUTE_PLUGIN_PATH`ïŒã»ã¯ã·ã§ã³ 9ïŒã䜿çšããŸãã |
| `STORAGE_ENCRYPTION_KEY` | _(空 = ç¡å¹)_ | `src/lib/db/encryption.ts` | ä¿åãããŠãã SQLite ããŒã¿ããŒã¹å
šäœãæå·åããããã® AES ããŒã`openssl rand -hex 32` ã§çæããŸãã |
| `STORAGE_ENCRYPTION_KEY_VERSION` | `v1` | `scripts/build/bootstrap-env.mjs`, `electron/main.js` | æå·åããŒã®ããŒãžã§ã³ã©ãã«ãå€ãããã¯ã¢ããã®åŸ©å·ããµããŒããããããããŒãããŒããŒã·ã§ã³ãããšãã«ã€ã³ã¯ãªã¡ã³ãããŸãã |
| `DISABLE_SQLITE_AUTO_BACKUP` | `false` | `src/lib/db/backup.ts` | `true` ã®å Žåã宿çãªããã¯ã¢ããããã³æžã蟌ã¿åã® SQLite ãã¡ã€ã«ããã¯ã¢ããïŒmodels.dev ã®æéæ
å ±ã®ä¿å/æ¶å»ãèšå®ã®æžã蟌ã¿ïŒãã¹ãããããŸããæåããã¯ã¢ãããšåŸ©å
åããã¯ã¢ããã¯åŒãç¶ãå®è¡ãããŸãããã€ã°ã¬ãŒã·ã§ã³ã©ã³ããŒã«ããå¿
é ã®æ°žç¶çãªå®å
šã¹ãããã·ã§ããããæ¢åã®æ°žç¶ DB ã«å¯Ÿããäžæ¬ãã€ã°ã¬ãŒã·ã§ã³ä¿è·ã¯ç¡å¹å**ãããŸãã**ãæå以å€ã®ããã¯ã¢ããã¯ãæå€§ã§ã 60 åã« 1 åã«å¶éãããŸããããã·ã¥ããŒãã® **Settings â Storage** ã§ã¯ã宿çãªèªåããã¯ã¢ãããåå¥ã«ç¡å¹åã§ããŸãã |
| `OMNIROUTE_CRYPT_KEY` | _(æªèšå®)_ | `src/lib/db/encryption.ts` | `STORAGE_ENCRYPTION_KEY` ã®**ã¬ã¬ã·ãŒãšã€ãªã¢ã¹**ããã©ã€ããªå€æ°ãååšããªãå Žåã®ãã©ãŒã«ããã¯ãšããŠåãä»ããããŸãã |
| `OMNIROUTE_API_KEY_BASE64` | _(æªèšå®)_ | `src/lib/db/encryption.ts` | ãã©ãŒã«ããã¯ãšããŠåãä»ãããã**ã¬ã¬ã·ãŒãšã€ãªã¢ã¹**ïŒBase64 ãšã³ã³ãŒã圢åŒïŒã䜿çšåã«èªåçã«ãã³ãŒããããŸãã |
| `OMNIROUTE_DB_HEALTHCHECK_INTERVAL_MS` | _(æªèšå®)_ | `src/lib/db/core.ts` | 宿ç㪠SQLite ãã«ã¹ãã§ãã¯ã®ééïŒmsïŒãäžæžãããŸããæªèšå®ã®å Žåãããã©ã«ãå€ã¯ `NODE_ENV` ã«åºã¥ããŠæ±ºå®ãããŸãã |
| `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` | _(å逿žã¿)_ | `src/lib/db/walMaintenance.ts` | **å逿žã¿ã** 皌åäžã«å®æçã« `wal_checkpoint(TRUNCATE)` ãå®è¡ãããšãå
±æ wal-index ãããã³ã°ãç¡å¹ã«ãªããSIGBUS ã«ãã£ãŠããã»ã¹ãã¯ã©ãã·ã¥ããå¯èœæ§ãããããïŒ#13973ïŒãã¹ã±ãžã¥ãŒã©ãŒã¯å»æ¢ãããŸããããã®å€æ°ã¯æ©èœããŸãããæ£ã®å€ãæå®ãããšéæšå¥šèŠåãäžåºŠã ããã°ã«èšé²ããã`0` ãŸãã¯æªèšå®ã®å Žåã¯äœãåºåãããŸãããWAL 㯠PASSIVE ãã§ãã¯ãã€ã³ãïŒäžèšïŒã«ãã£ãŠç¶æãããã·ã£ããããŠã³æã®ãã§ãã¯ãã€ã³ãã«ãã£ãŠåãè©°ããããŸãã |
| `OMNIROUTE_WAL_PASSIVE_INTERVAL_MS` | `300000` (5å) | `src/lib/db/walMaintenance.ts` | é »ç¹ã«å®è¡ããã `wal_checkpoint(PASSIVE)` ã®ééïŒmsïŒãäžæžãããŸããä¿çäžã® WAL ãã¬ãŒã ãå°ããä¿ã€ããšã§ããã§ãã¯ãã€ã³ããé«éã«ç¶æããã·ã£ããããŠã³æã®åãè©°ãã®åéã«ã WAL ãã¡ã€ã«ã®ãµã€ãºãå¶éããŸãã`0` ã§ç¡å¹åããŸãã |
| `OMNIROUTE_WAL_GUARD_MAX_MB` | `256` | `src/lib/db/walMaintenance.ts` | PASSIVE ã®å®è¡æã« WAL ãã¡ã€ã«ããã®ãµã€ãºãè¶
ããŠããããšãæ€åºãããå Žåããããã³ã°æžã¿ã® wal-index ãåæžã蟌ã¿ããã« WAL ãæåããéå§ã§ããããã`wal_checkpoint(RESTART)` ãå®è¡ããŸãã皌åäžã® truncate ã¢ãŒãã®ãã§ãã¯ãã€ã³ãã¯åé€ãããŸããïŒ`OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS` ã®è¡ãåç
§ïŒã |
| `OMNIROUTE_PRESSURE_SELF_RESTART` | `false` | `open-sse/utils/resourcePressure.ts` | é倧ãªãªãœãŒã¹éŒè¿«ã `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` ã®æéã«ããã£ãŠç¶ç¶ããåŸã«ããã»ã¹ãçµäºããã«ã¯ã`1`/`true`/`yes`/`on` ã«èšå®ããŸããããã«ãããç¡æéã« 503 ãè¿ãç¶ãã代ããã«ãã¹ãŒããŒãã€ã¶ãŒïŒsystemd ã® `Restart=always`ãDocker ã®åèµ·åããªã·ãŒïŒãã¯ãªãŒã³ãªããã»ã¹ãåèµ·åã§ããŸãã |
| `OMNIROUTE_PRESSURE_SELF_RESTART_AFTER_MS` | `120000` (2å) | `open-sse/utils/resourcePressure.ts` | èªå·±åèµ·åã®ããã®çµäºåŠçãå®è¡ããããŸã§ãé倧ãªãªãœãŒã¹éŒè¿«ãç¶ç¶ããªããã°ãªããªãæéã |
| `OMNIROUTE_PRESSURE_PSI_DISABLED` | `false` | `open-sse/utils/resourcePressurePolicy.ts` | ãã®ããã»ã¹èªäœã«ã¯åé¡ããªãã«ããããããããã€ãžãŒãã€ããŒã«ãã£ãŠ 503 ãçºçããå Žåã«ããã¹ãå
šäœã® `/proc/pressure/memory`ïŒ`psi_some` / `psi_full`ïŒãç¡èŠããã«ã¯ã`1`/`true`/`yes`/`on` ã«èšå®ããŸãïŒ#13124ïŒãCgroup ãš V8 ããŒãã®ä¿è·ã¯åŒãç¶ãæå¹ã§ãããŸããPSI 㯠`cgroup_high` ã«å¯Ÿããã«ãŒãã«ã¹ããããªã³ã°ã®èšŒæ ãšããŠã«ãŠã³ããããªããªããŸãããã®å Žåã`memory.high` ãè¶
ãã cgroup ã®åèšå€ãé倧ãšå€å®ãããã®ã¯ã`memory.events` ã® `high`/`max` ãå¢å ããå Žåã®ã¿ã§ãã`memory.events` ããªãå Žåã¯ãçã®æ¯çãç¶æãããŸãã |
| `OMNIROUTE_SQLJS_WASM_PATH` | _(èªåæ€åº)_ | `src/lib/db/adapters/sqljsAdapter.ts` | `sql.js` WASM ãã©ãŒã«ããã¯ã¢ããã¿ãŒã䜿çšããéã® `sql-wasm.wasm` ãžã®æç€ºçãªãã¹ïŒçµ¶å¯Ÿãã¹ããŸã㯠cwd ããã®çžå¯Ÿãã¹ïŒãæªèšå®ã®å Žåã¯ãããã±ãŒãžã®äŸåé¢ä¿ãšåè£ãšãªãã¬ã€ã¢ãŠãããèªåæ€åºãããŸãã |
| `OMNIROUTE_BATCH_RETENTION_DAYS` | `30` | `src/lib/db/cleanup.ts` | å®äºç¶æ
ïŒcompleted/failed/cancelled/expiredïŒã® Batch API ãžã§ãã«ã€ããŠããã§ãã¯ãã€ã³ããåç
§ãããŠããå
¥å/åºå/ãšã©ãŒãã¡ã€ã«ãããã³è¡ããèªåã¯ãªãŒã³ã¢ããã®ã¹ã€ãŒãã«ãã£ãŠåé€ããããŸã§ä¿æãããæ¥æ°ã`BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` ãæå¹ã«ãªã£ãåŸã«ã®ã¿é©çšãããOpenAI ç¬èªã® Batch API åºåä¿ææéãšäžèŽããŸãããªãã¬ãŒã¿ãŒãå®è¡ãã `DELETE /api/v1/batches/delete-completed` ã«ãŒãã«ã¯åœ±é¿ããŸããããã®ã«ãŒãã¯èšèšäžãç¡æ¡ä»¶ïŒçµéæ¥æ°ãã£ã«ã¿ãŒãªãïŒã®ãŸãŸã§ãã |
| `BATCH_AND_FILE_AUTO_CLEANUP_ENABLED` | `false` | `src/lib/db/cleanup.ts` | `true` ã®å Žåãèªåã¯ãªãŒã³ã¢ããåŠçã«ããã`OMNIROUTE_BATCH_RETENTION_DAYS` ãè¶
éããçµäºæžã¿ã® Batch API ãžã§ãïŒããã³ãã®ãã§ãã¯ãã€ã³ãïŒãåé€ãããåãã¡ã€ã«ã® `expires_at` ãè¶
éããã¢ããããŒãæžã¿ãã¡ã€ã«ã® BLOB ã³ã³ãã³ããæ¶å»ãããŸããããã©ã«ãã§ã¯ç¡å¹ã§ãããªãã¬ãŒã¿ãŒãæç€ºçã«æå¹åãããŸã§ãæ¢åã®ãã¹ãŠã®ã€ã³ã¹ããŒã«ç°å¢ã§ã¯ãã®ããŒã¿ãåŸæ¥ã©ããä¿æãããŸããããã·ã¥ããŒãããç·šéå¯èœãªæ©èœãã©ã°ã§ããããŸãã`docs/reference/FEATURE_FLAGS.md` â Runtime ãåç
§ããŠãã ããã |
| `OMNIROUTE_SKIP_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts`, `src/lib/db/healthCheck.ts` | `1` ã«èšå®ãããšãèµ·åæã® DB ãã«ã¹ãã§ãã¯ãå®å
šã«ã¹ãããããŸããçæéã§çµäºããã¿ã¹ã¯ãçµ±åãã¹ãã«æçšã§ãã |
| `OMNIROUTE_FORCE_DB_HEALTHCHECK` | `0` | `src/lib/db/core.ts` | `1` ã«èšå®ãããšãéåžžã¯ã¹ããããããå ŽåïŒçæéã§çµäºããã¿ã¹ã¯ãªã©ïŒã§ããDB ãã«ã¹ãã§ãã¯ã«ãŒãã匷å¶çã«æå¹åããŸãã |
| `OMNIROUTE_SKIP_POSTINSTALL` | `0` | `scripts/postinstall.mjs` | `1` ã«èšå®ãããšã`npm install` äžã®ãã€ãã£ãã©ã³ã¿ã€ã ã®ãŠã©ãŒã ã¢ãããã¹ãããããŸããsqlite ããã§ã«ãã«ãæžã¿ã® CIïŒãããã¬ã¹ã€ã³ã¹ããŒã«ç°å¢ã«æçšã§ãã |
| `OMNIROUTE_MIGRATIONS_DIR` | _ïŒèªåæ€åºïŒ_ | `src/lib/db/migrationRunner.ts` | ãã€ã°ã¬ãŒã·ã§ã³ã©ã³ããŒãã¹ãã£ã³ãããã£ã¬ã¯ããªãäžæžãããŸããã«ã¹ã¿ã ãã«ãã«ãã³ãã«ããããã€ã°ã¬ãŒã·ã§ã³ãå«ããå Žåã«æçšã§ãã |
| `OMNIROUTE_EXTRA_MIGRATIONS_DIRS` | _ïŒæªèšå®ïŒ_ | `src/lib/db/migrationRunner/extraDirs.ts` | ãã©ãããã©ãŒã ã®ãã¹åºåãæåã§åºåã£ã `namespace=dir` ãšã³ããªãšããŠã远å ã®ãã€ã°ã¬ãŒã·ã§ã³ãã£ã¬ã¯ããªãæå®ããŸãïŒäŸïŒ`ee=/opt/app/enterprise/db/migrations`ïŒãããã§èŠã€ãã£ããã¡ã€ã«ã¯ `-` ãšããŠèšé²ããããããç¬èªã®ãã€ã°ã¬ãŒã·ã§ã³ãå«ããã£ã¹ããªãã¥ãŒã·ã§ã³ãã¢ããã¹ããªãŒã ã®æ°å€ã¹ããããšè¡çªããããšã¯ãããŸãããäžæ£ãªåœ¢åŒã®ãšã³ããªãç¡å¹ãªåå空éããŸãã¯ååšããªããã£ã¬ã¯ããªãããå Žåãã¹ããŒããæé»ã«ã¹ããããããèµ·åæã«ãšã©ãŒãã¹ããŒããŸãã |
| `OMNIROUTE_MAX_PENDING_MIGRATIONS` | `50` | `src/lib/db/migrationRunner.ts` | 倧éã®ä¿çäžãã€ã°ã¬ãŒã·ã§ã³ã«å¯Ÿããå®å
šãããå€ïŒ#3416ïŒã§ããæ¢åã® DB ã§ããã®æ°ãè¶
ãããã€ã°ã¬ãŒã·ã§ã³ãä¿çäžã®å Žåãèµ·åãäžæ¢ããŸãïŒè¿œè·¡ããŒãã«ãæ¶å»ãããå Žåã®ä¿è·ïŒãå€ãããã¯ã¢ããã埩å
ããã«ã¯å€ãåŒãäžãããã§ãã¯ãç¡å¹åããã«ã¯ `0` ã«èšå®ããŸãã |
| `OMNIROUTE_INSTALL_UPGRADE_WORKDIR` | _ïŒ`/.install-upgrade`ïŒ_ | `scripts/check/check-install-upgrade.mjs` | `check:install-upgrade` ãªãªãŒã¹ã²ãŒãã®äœæ¥ãã£ã¬ã¯ããªã§ããçŽ 12 GBïŒçŽ 3 GB ã®ã€ã³ã¹ããŒã«ããªãŒ 2 ã€ãš tarballïŒãå¿
èŠãªãããå°å®¹éã® tmpfs äžã§å®è¡ããŠã¯ãããŸãããã»ã«ããã¹ãã©ã³ããŒã§ã¯ `/tmp` ã RAM ããŒã¹ã® 12 GB tmpfs ã§ãããã²ãŒãããã®å®¹éã䜿ãæãããŠããã±ãŒãžãåãè©°ããããŸããã |
| `OMNIROUTE_SPEND_FLUSH_INTERVAL_MS` | _ïŒã³ãŒãå
ã®ããã©ã«ãïŒ_ | `src/lib/spend/batchWriter.ts` | ãããåŠçãããæ¯åºïŒã³ã¹ãã©ã€ã¿ãŒã®ãã©ãã·ã¥ééïŒããªç§ïŒã§ããå€ãå°ãããããšæžã蟌ã¿ã®éçŽãæžããå€ã倧ãããããš DB ã®ç«¶åãæžããŸãã |
| `OMNIROUTE_SPEND_MAX_BUFFER_SIZE` | _ïŒã³ãŒãå
ã®ããã©ã«ãïŒ_ | `src/lib/spend/batchWriter.ts` | 匷å¶ãã©ãã·ã¥ããããŸã§ã«ãããã¡ãªã³ã°ã§ããæ¯åºãšã³ããªã®æå€§æ°ã§ããé« QPS ã®ãããã€ã§ã¯å€ãåŒãäžããã¡ã¢ãªã®äžé管çãããéèŠãªå Žåã¯å€ãåŒãäžããŸãã |
| `OMNIROUTE_PROXY_FETCH_DEBUG` | _ïŒæªèšå®ïŒ_ | `open-sse/utils/proxyFetch.ts` | `"true"` ã«èšå®ãããšãVercel ãªã¬ãŒãã¹ã§ `[ProxyFetch]` ãããã°ãã°ãåºåããŸããã«ãŒãã£ã³ã°æ
å ±ã®æŒæŽ©ãé²ããããããã©ã«ãã§ã¯ç¡å¹ã§ãã |
| `OMNIROUTE_PROXY_CORE_BINARY_PATH` | _ïŒæªèšå®ïŒ_ | `src/lib/proxySubscription/coreConfig/sync.ts` | çæãããã³ã¢èšå®ãæ¡çšæžã¿ãã¡ã€ã«ã眮ãæããåã«ããã®èšå®ãæ€èšŒããããŒã«ã«ãããã·ã³ã¢ãã€ããªïŒ`sing-box` ãšããååã®ãã¡ã€ã«ïŒã®çµ¶å¯Ÿãã¹ã§ããæªèšå®ã®å Žåã¯ãæ¡çšæžã¿ãã¡ã€ã«ã®é£ã« `.generated` ã®ã¿ãæžã蟌ã¿ãŸãããã¹ãç°å¢å°çšã§ãããã€ããªãå®è¡ããããããããŒã¿ããŒã¹ã«ã¯ä¿åãããã管ç API çµç±ã§ãåãä»ããããŸããã |
| `OMNIROUTE_PROXY_CORE_RELOAD_COMMAND` | _ïŒæªèšå®ïŒ_ | `src/lib/proxySubscription/coreConfig/reload.ts` | æ€èšŒæžã¿ã®èšå®çœ®æåŸã«ããŒã«ã«ãããã·ã³ã¢ããªããŒãããæ¹æ³ã§ããã·ã§ã«ãä»ããã«å®è¡ããã JSON åŒæ°é
åããŸãã¯å€éšã®ç£èŠããã»ã¹ããã¡ã€ã«ãé©çšããå Žåã¯å³å¯ã« `external` ãæå®ããŸããããŒã¿ããŒã¹ã«ã¯ä¿åããããAPI çµç±ã§ãå
¬éãããŸããã |
| `PROXY_LOG_INCLUDE_IPS` | `false` | `src/lib/proxyLogger.ts` | `"true"` ãŸã㯠`"1"` ã«èšå®ãããšã詳现㪠`[ProxyEgress]` ããã»ã¹ãã°è¡ã«ã¯ã©ã€ã¢ã³ãïŒãšã°ã¬ã¹ IP ãšã¢ã«ãŠã³ããã¬ãã£ãã¯ã¹ãå«ããŸããããã»ã¹ãã°ãã IP ãã¢ã«ãŠã³ããã¬ãã£ãã¯ã¹ãæŒæŽ©ããªããããããã©ã«ãã§ã¯ç¡å¹ã§ãã |
| `OMNIROUTE_DEBUG` | _(æªèšå®)_ | `bin/cli/commands/quota.mjs` | `1` ã«èšå®ãããšãCLI ã®ã¯ã©ãŒã¿ã³ãã³ããããªã¯ãšã¹ãããšã®ã¿ã€ãã³ã°èšºæïŒ`[omniroute] GET completed in Nms`ïŒã stderr ã«åºåããŸãã |
| `OMNIROUTE_HEALTHCHECK_PATH` | _(èªå)_ | `scripts/dev/healthcheck.mjs` | ã³ã³ããã®ãã«ã¹ãã§ãã¯ã§ãããŒããããã¹ãæç€ºçã«æå®ããŸããæªèšå®ã®å ŽåããããŒã㯠`OMNIROUTE_BASE_PATH` ãããã¹ãå°åºããŸããèšå®ãããšã詳现ç£èŠãšã³ããã€ã³ãã®äœ¿çšã«æ»ããŸãã |
| `OMNIROUTE_DEBUG_COMPLETION` | _(æªèšå®)_ | `bin/cli/commands/completion.mjs` | 空ã§ãªãä»»æã®å€ã«èšå®ãããšãCLI ã®ã·ã§ã«è£å®ãã£ãã·ã¥åŠçïŒèªã¿åã/æŽæ°/æžã蟌ã¿ïŒãã `[omniroute completion]` 蚺æãåºåããŸããããã©ã«ãã§ã¯ç¡å¹ã§ãããããã®ãã£ãã·ã¥ã§ã¯ãšã©ãŒãéç¥ãããªãããããã£ãã·ã¥ãæ¬ èœãŸãã¯ç ŽæããŠããŠãã¿ãè£å®ãæ©èœããªããªãããšã¯ãããŸããã |
| `BATCH_RETRY_DURATION_MS` | `86400000`ïŒ24æéïŒ | `open-sse/services/batchProcessor.ts` | åã
ã®ãããé
ç®ã«å¯Ÿããæå€§åè©Šè¡æéïŒããªç§ïŒããã®æéãè¶
ããé
ç®ã¯å€±æãšããŠããŒã¯ãããŸãã |
| `BATCH_BACKOFF_BASE_MS` | `5000` | `open-sse/services/batchProcessor.ts` | ãããé
ç®ã®å詊è¡ã§äœ¿çšããææ°ããã¯ãªãã®åºæ¬é
å»¶æéïŒããªç§ïŒã |
| `BATCH_BACKOFF_MAX_MS` | `3600000`ïŒ1æéïŒ | `open-sse/services/batchProcessor.ts` | ãããé
ç®ã®å詊è¡éã«äœ¿çšããææ°ããã¯ãªãã®äžéïŒããªç§ïŒã |
| `BATCH_MAX_CONCURRENT` | `1` | `open-sse/services/batchProcessor.ts` | åæã«åŠçããããããã®æå€§æ°ãã¹ã«ãŒããããåäžãããã«ã¯å¢ãããŸãããã¬ãŒãå¶éãéäžããŠçºçããã®ãé¿ããããäœãå€ã«ä¿ã£ãŠãã ããã |
> [!IMPORTANT]
> æ¢åã®æ°žç¶ããŒã¿ããŒã¹ã倿Žããåã«ããã€ã°ã¬ãŒã·ã§ã³ã©ã³ããŒã¯å®å
šãª
> ã³ã³ãã³ãã¢ãã¬ã¹æ¹åŒã®ã¹ãããã·ã§ããã `DATA_DIR/db_backups/` é
äžã«å
¬éããŸããå
¬éã«ã¯ã
> åäžãã¡ã€ã«ã·ã¹ãã å
ã§ã®äžæžãäžå¯ã®ããŒããªã³ã¯ãšãæ°žç¶æ§ãä¿èšŒãããã¡ã€ã«åæããµããŒããããã¡ã€ã«ã·ã¹ãã ãå¿
èŠã§ãã
> POSIX ãã¹ãã§ã¯ãã£ã¬ã¯ããªã®åæãå¿
èŠã§ããWindows ã§ã¯ Node ããã£ã¬ã¯ããªãã³ãã«ãæåŠããå Žåãããããã
> OmniRoute ã¯å
¬éããããã¡ã€ã«ããã©ãã·ã¥ãããã£ã¬ã¯ããªãšã³ããªã®åæããã¹ããšãã©ãŒããšããŠæ±ããŸãã
> ããŠã³ãããã `DATA_DIR` ãããããä¿èšŒã§ããªãå Žåããã€ã°ã¬ãŒã·ã§ã³ãé©çšããåã«
> èµ·åãå®å
šåŽã«å€±æããŸãã`DATA_DIR` ããããã®ããªããã£ããåããããªã¥ãŒã ãžç§»åããŠãã ããã
> ãã€ã°ã¬ãŒã·ã§ã³ã®å®å
šæ§ãåé¿ããããã« `DISABLE_SQLITE_AUTO_BACKUP` ã䜿çšããªãã§ãã ããã
### ã·ããªãª
| ã·ããªãª | èšå® |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| **ããŒã«ã«éçº** | ãã¹ãŠããã©ã«ãã®ãŸãŸã«ããŸããDB 㯠`~/.omniroute/omniroute.db` ã«ä¿åãããŸãã |
| **Docker** | `DATA_DIR=/data` ãèšå®ãã`/data` ã«ããªã¥ãŒã ãããŠã³ãããŸãã |
| **ä¿åæã®æå·å** | `STORAGE_ENCRYPTION_KEY` ãèšå®ãããã®ããŒãå¿
ãããã¯ã¢ããããŠãã ãããããŒã倱ãããšã¯ãããŒã¿ã倱ãããšãæå³ããŸãã |
| **CI/ãã¹ã** | `DATA_DIR=/tmp/omniroute-test` â äžæçãªãããæå·åã¯äžèŠã§ãã |
---
## 3. ãããã¯ãŒã¯ãšããŒã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PORT` | `20128` | `src/lib/runtime/ports.ts` | Dashboard UI ãš API ãšã³ããã€ã³ãã®äž¡æ¹ã§äœ¿çšãããã©ã€ããªããŒãïŒåäžããŒãã¢ãŒãïŒã |
| `OMNIROUTE_BASE_PATH` | _ïŒç©º = ã«ãŒãïŒ_ | `next.config.mjs`, `scripts/docker/ensure-docker-base-path.mjs` | ãªããŒã¹ãããã·ã®èåŸã§ OmniRoute ãæäŸããããã® URL ãµããã¹ïŒNext.js ã® `basePath` ãèšå®ãèªèšŒãªãã€ã¬ã¯ãã basePath ã«å¯Ÿå¿ïŒãäŸ: `/omniroute`ãDocker ã§ã¯ãå€ã¯ `docker build` æã«çµã¿èŸŒãŸããŸãïŒ`ARG OMNIROUTE_BASE_PATH`ïŒããã«ãæžã¿ã®ã«ãŒãã€ã¡ãŒãžã§ã¯ãNext.js ã®èµ·ååã«ãã³ã³ããèµ·åæã«äžåºŠã ãå¥ã®ã©ã³ã¿ã€ã å€ãé©çšã§ããŸããåããµããã¹ãå«ãå
¬éãªãªãžã³ã `NEXT_PUBLIC_BASE_URL` ã«èšå®ããŠãã ããã |
| `NEXT_PUBLIC_OMNIROUTE_BASE_PATH` | _ïŒç©º = ã«ãŒãïŒ_ | `src/shared/hooks/useDisplayBaseUrl.ts` | `OMNIROUTE_BASE_PATH` ã®ãã©ãŠã¶å¯èŠãã©ãŒããã«ãæã«ã€ã³ã©ã€ã³åãããããã·ã¥ããŒãã®ãšã³ããã€ã³ã衚瀺ã `https://host/v1` ã§ã¯ãªã `https://host/omniroute/v1` ã«ãªããŸããæªèšå®ã®å Žå㯠`OMNIROUTE_BASE_PATH` ã«ãã©ãŒã«ããã¯ããŸãã倿ŽåŸã¯åãã«ãããŠãã ããïŒNext ã® `basePath` ã¯ãã«ãæã«æ±ºå®ãããŸãïŒã |
| `DASHBOARD_ALLOW_EMBED` | _ïŒæªèšå® = ãã¬ãŒã åäžå¯ïŒ_ | `next.config.mjs`, `scripts/build/dashboardEmbed.mjs` | HTML ããŒãžã® iframe åã蟌ã¿ããªããã€ã³ã§æå¹ã«ããŸããæªèšå®ã®å Žåããã¹ãŠã®ã«ãŒãã§ `frame-ancestors 'none'` ãš `X-Frame-Options: DENY` ãéä¿¡ãããŸãã`vscode` ã«èšå®ãããšãããŒãžïŒããã·ã¥ããŒãããã°ã€ã³ãããã¥ã¡ã³ããã©ã³ãã£ã³ã°ïŒã `frame-ancestors 'self' vscode-webview:` ã䜿çšãã`X-Frame-Options` ãªãã§æäŸããããããVS Code Simple Browser ã§è¡šç€ºã§ããŸãïŒOmniCopilot ã® `dashboardOpen: "editor"` ã¢ãŒãïŒãAPI ãµãŒãã§ã¹ïŒ`/api`ã`/v1`ã`/v1beta`ã`/a2a`ã`/healthz`ãã«ãŒãã¬ãã«ã®ãšã€ãªã¢ã¹ïŒã§ã¯ããããã®å Žåã峿 ŒãªããããŒãç¶æãããŸããèªèãããå€ã¯ `vscode` ã®ã¿ã§ã`1`/`true` ã§ã¯æå¹ã«ãªããŸããããã«ãæèšå®ã®ããã倿ŽåŸã¯åãã«ãããŠãã ããïŒã€ã¡ãŒãžã®å Žå㯠`docker build --build-arg DASHBOARD_ALLOW_EMBED=vscode`ããã«ãæžã¿ç°å¢ã§èšå®ããŠã广ã¯ãããŸããïŒã |
| `API_PORT` | _ïŒæªèšå®ïŒ_ | `src/lib/runtime/ports.ts` | èšå®ãããšã`/v1/*` ãããã· API ããã®åå¥ããŒãã§æäŸããŸãã |
| `API_HOST` | `0.0.0.0` | `src/lib/runtime/ports.ts` | API ããŒãã®ãã€ã³ãã¢ãã¬ã¹ã |
| `DASHBOARD_PORT` | _ïŒæªèšå®ïŒ_ | `src/lib/runtime/ports.ts` | èšå®ãããšãDashboard UI ããã®åå¥ããŒãã§æäŸããŸãã |
| `OMNI_MAX_CONCURRENT_CONNECTIONS` | `0` _ïŒç¡å¹ïŒ_ | `src/sse/utils/backpressure.ts` | åŠçäžã®åæãã£ããæ¥ç¶æ°ãå¶éããŸããäžéãè¶
ãããªã¯ãšã¹ãã«ã¯ `Retry-After` ä»ãã® `503` ãè¿ãããŸããæ£ã®æŽæ°ãæå®ãããšå¶éãæå¹ã«ãªããæªèšå®ãŸã㯠`0` ã®å Žåã¯ç¡å¹ã«ãªããŸãã |
| `OMNIROUTE_INSTANCE_ID` | _ïŒæªèšå®ïŒ_ | `src/shared/resilience/peerRouting.ts` | OmniRoute ã€ã³ã¹ã¿ã³ã¹ãé£éãããå Žåã«ããã®ã²ãŒããŠã§ã€ãèå¥ããå®å®ããäžæã® IDãåä¿¡æã®ãã¢ã«ãŒããã§ãã¯ãæå¹ã«ããŸãã䜿çšå¯èœãªæåã¯ãè±åãæ°åã`.`ã`_`ã`:`ã`-` ã§ããæå€§ 64 æåã§ãã |
| `OMNIROUTE_PEER_URLS` | _ïŒæªèšå®ïŒ_ | `src/shared/resilience/peerRouting.ts`, `open-sse/executors/base.ts` | `X-OmniRoute-Peer-Trace` ãåä¿¡ã§ãããã«ã³ãåºåãã® OmniRoute ããŒã¹ URLãæç€ºçã«èš±å¯ãªã¹ããžç»é²ãããã¢ããã¹ããªãŒã URL ã®ã¿ããã¢ã¡ã¿ããŒã¿ãåä¿¡ãããã®ä»ã®ãããã€ããŒã«ã¯äžå圱é¿ããŸããã |
| `OMNIROUTE_PEER_MAX_HOPS` | `4` | `src/shared/resilience/peerRouting.ts` | ãã§ãŒã³ããããªã¯ãšã¹ãã§åãå
¥ããã以åã«ã¢ã¯ã»ã¹æžã¿ã® OmniRoute ã€ã³ã¹ã¿ã³ã¹ã®æå€§æ°ïŒ`1`ïœ`32`ïŒãã€ã³ã¹ã¿ã³ã¹ãéè€ããŠããå ŽåããŸãã¯äžéã䜿ãåã£ãå Žåã¯ãHTTP `508 Loop Detected` ãè¿ããŸãã |
| `PROD_DASHBOARD_PORT` | `20130` | `docker-compose.prod.yml` | Docker ã®æ¬çªã¢ãŒãã§ Dashboard ãå
¬éãããã¹ãåŽã®ããŒãã |
| `PROD_API_PORT` | `20131` | `docker-compose.prod.yml` | Docker ã®æ¬çªã¢ãŒãã§ API ãå
¬éãããã¹ãåŽã®ããŒãã |
| `OMNIROUTE_PORT` | _ïŒæªèšå®ïŒ_ | `src/lib/runtime/ports.ts` | Electron ãŸãã¯ãã®ä»ã®ã©ãããŒå
ã§å®è¡ããå Žåã`PORT` ããåªå
ãããŸãã |
| `LIVE_WS_PORT` | `20129` | `src/server/ws/liveServer.ts` | ãªã¢ã«ã¿ã€ã WebSocket ã©ã€ãç£èŠãµãŒããŒçšã®ããŒãã |
| `LIVE_WS_HOST` | `127.0.0.1` | `src/server/ws/liveServer.ts` | ã©ã€ã WebSocket ãµãŒããŒã®ãã€ã³ãã¢ãã¬ã¹ãLAN äžã«å
¬éããã«ã¯ `0.0.0.0` ã«èšå®ããŠãã ããïŒ`LIVE_WS_ALLOWED_ORIGINS` ã®èšå®ãå¿
èŠã§ãïŒã |
| `LIVE_WS_ALLOWED_ORIGINS` | _ïŒæªèšå®ïŒ_ | `src/server/ws/liveServer.ts` | ã©ã€ã WebSocket ãéãããšãèš±å¯ããã远å ã®ãªãªãžã³ïŒã«ã³ãåºåãïŒãã«ãŒãããã¯ã® Dashboard ãªãªãžã³ã¯ãããã©ã«ãã§ãã§ã«èš±å¯ãããŠããŸãã |
| `LIVE_WS_ALLOWED_HOSTS` | _ïŒæªèšå®ïŒ_ | `src/server/ws/liveServerAllowList.ts` | ã©ã€ã WebSocket ã®ãªãªãžã³ãšããŠèš±å¯ããã远å ã®ãã¹ãåïŒã«ã³ãåºåãïŒã`LIVE_WS_ALLOWED_ORIGINS`ïŒå®å
šãªãªãªãžã³ URLïŒãšã¯ç°ãªãããã¹ãéšåã®ã¿ã«äžèŽããŸããLAN/Tailscale ç°å¢ã§åœ¹ç«ã¡ãŸãã |
| `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` | _ïŒæªèšå®ïŒ_ | `src/hooks/useLiveDashboard.ts` | ã©ã€ã Dashboard WebSocket ã®å
¬é URLïŒãã©ãŠã¶åŽïŒãWS ãµãŒããŒã®å段ã«ãªããŒã¹ãããã·ãŸã㯠Cloudflare Tunnel ãé
眮ããå Žåã«èšå®ããŸãïŒäŸïŒ`wss://ws.my-ai.com/live-ws`ïŒããã©ãŠã¶ã¯ `ws://hostname:20132` ã®ä»£ããã«ãã® URL ãžæ¥ç¶ããŸãããã¹åéšå㯠WebSocket ã®ã¢ããã°ã¬ãŒããã¹ãšããŠã䜿çšãããŸãïŒããã©ã«ãïŒ`/live-ws`ïŒã |
| `OMNIROUTE_ENABLE_LIVE_WS` | `true` | `src/server/ws/liveServer.ts` and `scripts/start-ws-server.mjs` | ãªã¢ã«ã¿ã€ã WebSocket ãµãŒããŒãç¡å¹ã«ããã«ã¯ã`0` ãŸã㯠`false` ã«èšå®ããŸãïŒããã©ã«ãã§ã¯æå¹ã§ãã«ãŒãããã¯ã«ãã€ã³ããããŸãïŒãã¹ã¿ã³ãã¢ãã³ã®ã©ã€ã WebSocket ãã«ããŒã¹ã¯ãªãããç¡å¹ã«ãã CI/ãã¹ãããŒãã¹çšã®åãæ¿ãèšå®ã§ãã |
| `RELAY_IP_PER_MINUTE` | `30` | `src/app/api/v1/relay/chat/completions/route.ts` | ïŒããŒã¯ã³ãIPïŒããšã®ãªã¬ãŒé床å¶éïŒãªã¯ãšã¹ãæ°/åïŒãã€ã³ã¡ã¢ãªã§ãã€ã³ã¹ã¿ã³ã¹åäœã§ãã`0` ãŸãã¯è² ã®å€ãæå®ãããš IP 次å
ã®ã²ãŒããç¡å¹ã«ãªããŸãïŒããŒã¯ã³åäœã® DB å¶éã¯åŒãç¶ãé©çšãããŸãïŒã |
| `NODE_ENV` | `production` | Next.js ã³ã¢ | ãã°ã®è©³çŽ°åºŠããã£ãã·ã¥ããšã©ãŒè©³çްã®å
¬éãããã³ Next.js ã®æé©åãå¶åŸ¡ããŸãã |
| `OMNIROUTE_USE_TURBOPACK` | `1` (Turbopack â ã³ãŒãäžã®ããã©ã«ã) | `package.json` / Next.js 16 | Turbopack 㯠`npm run dev` ããã³ `npm run build` ã®ããã©ã«ããã³ãã©ãŒã§ãïŒãã³ãããŒã¯ã§ã¯ãã«ãã 2ïœ3 åé«éïŒãWindows ã§ãã€ãã£ããã€ã³ãã£ã³ã°ããã³ãã©ãŒäºææ§ã®åé¡ãçºçããå Žåã**ãŸã㯠RAM ã«å¶çŽã®ãããã·ã³ã§ã¯**ãwebpack ã«ãã©ãŒã«ããã¯ãããã `0` ã«èšå®ããŠãã ããããã® Next.js ããŒãžã§ã³ç³»åïŒ16.2.xïŒã® Turbopack ãããã¯ã·ã§ã³ãã«ãã¯ãå€§èŠæš¡ãªã¢ãžã¥ãŒã«ã°ã©ãã§ webpack ãããã¯ããã«é«ãã¡ã¢ãªäœ¿çšéã«éããããšãäžæµã§ç¢ºèªãããŠããŸãïŒNext 16.3 ã® Turbopack ã¡ã¢ãªéé¿ä¿®æ£ã¯ãŸã å®å®çã§ã¯ãããŸããïŒãwebpack ãžã®ãã©ãŒã«ããã¯ã§ã¯ããŒã¯äœ¿çšéã倧å¹
ã«äœããªããŸãã#6409 ãåç
§ããŠãã ããã**Docker ã€ã¡ãŒãžã®ãã«ãã§ã¯ããã©ã«ãã `0`ïŒwebpackïŒã§ã**ã`Dockerfile` ã§ `ARG OMNIROUTE_USE_TURBOPACK=0` ã宣èšãããŠãããããåçŽãª `docker build .`ïŒRailway ããã®ä»ã®ã¯ã³ã¯ãªãã¯ãã¹ããèšæã®ã»ã«ããã¹ãã£ã³ã°ç°å¢ïŒã§ã¯ãã¡ã¢ãªäžéã®ãããã«ããŒã§ OOM ã«ãã匷å¶çµäºãããŸãããTurbopack ã§ã€ã¡ãŒãžããã«ãããã«ã¯ã`--build-arg OMNIROUTE_USE_TURBOPACK=1` ãæž¡ããŠãã ããã`docs/guides/DOCKER_GUIDE.md` â ãã«ãæã®ãªãœãŒã¹ãåç
§ããŠãã ããã |
| `OMNIROUTE_SKIP_DB_HEALTHCHECK` | _(æªèšå®)_ | `src/lib/db/core.ts` / `src/lib/db/healthCheck.ts` | èµ·åæã® SQLite æŽåæ§ãã«ã¹ãã§ãã¯ãã¹ãããããã«ã¯ã`1` ã«èšå®ããŸããå€§èŠæš¡ãªããŒã¿ããŒã¹ã§èµ·åãé«éåããå Žåã«äŸ¿å©ã§ãã |
| `NOTIFY_SOCKET` | _(æªèšå®)_ | systemdïŒsd_notify ãããã³ã«ïŒ | ããã»ã¹ã sd_notify çµ±åãåãããµãŒãã¹ãŠãããã®äžã§å®è¡ãããå Žåã«ãsystemd ã«ãã£ãŠèšå®ãããŸããOmniRoute ã¯ãããèªã¿åãïŒ`OMNIROUTE_DISABLE_SD_NOTIFY` ãåç
§ïŒãREADY/WATCHDOG éç¥ãéä¿¡ããŸãããŠãŒã¶ãŒãèšå®ããããšã¯ãããŸããã |
| `OMNIROUTE_DISABLE_SD_NOTIFY` | _(æªèšå®)_ | `scripts/dev/systemd-notify.mjs` | systemd ãŠãããã®äžã§å®è¡ããŠããå Žåã§ããsystemd sd_notifyïŒType=notify / WatchdogSec=ïŒãç¡å¹ã«ããã«ã¯ `1` ã«èšå®ããŸããsystemd å€ã§ã¯ãéç¥æ©èœã¯åžžã«äœãå®è¡ããŸããã |
| `CREDENTIAL_HEALTH_CHECK_INTERVAL` | `3600000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/scheduler.ts` | ããã¯ã°ã©ãŠã³ãã®èªèšŒæ
å ±ãã«ã¹ãã§ãã¯ã¹ã±ãžã¥ãŒã©ãŒã®ééïŒããªç§ïŒãæå°å€: 10000ïŒ10 ç§ïŒã |
| `CREDENTIAL_HEALTH_CACHE_TTL` | `300000` | `open-sse/config/constants.ts` / `src/lib/credentialHealth/cache.ts` | ãã£ãã·ã¥ãããèªèšŒæ
å ±ã®ãã«ã¹ã¹ããŒã¿ã¹ã® TTLïŒããªç§ïŒã |
| `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` | `false` | `src/lib/credentialHealth/scheduler.ts` | ãããã€ããŒæ¥ç¶ã®ããã¯ã°ã©ãŠã³ã宿ãã¹ããç¡å¹ã«ããã«ã¯ã`1` ãŸã㯠`true` ã«èšå®ããŸããæ€çŽ¢ãããã€ããŒïŒ`src/lib/providers/validation/searchProviders.ts` å
ã® SEARCH_VALIDATOR_CONFIGSãäŸ: `tavily-search`ïŒã¯ãåžžã«ãã§ãã¯å¯Ÿè±¡ããé€å€ãããŸãããããã®ãæ€èšŒãã¯å®éã«èª²éãããã¢ããã¹ããªãŒã ã¯ãšãªã§ãããããã¿ã€ããŒã«ãããã«ã¹ãã§ãã¯ã¯å®è¡ãããŸããïŒ#9970ïŒã |
| `DEEP_HEALTH_CHECK_ENABLED` | `0` | `src/app/api/monitoring/health/route.ts` | èªèšŒæžã¿ã®åŒã³åºãå
ã `/api/monitoring/health?deep=1` ããªã¯ãšã¹ãã§ããããã«ããã«ã¯ã`1` ã«èšå®ããŸãããã®ãªã¯ãšã¹ãã¯ãTTL ããšã« 1 å completions ãµãŒãã§ã¹ããµã³ããªã³ã°ããŸããå¿åã®åŒã³åºãå
ããããŒããããªã¬ãŒããããšã¯ãããŸããã |
| `HOST` | `0.0.0.0` | `scripts/dev/run-next.mjs` | Next.js dev/start ãµãŒããŒã®ãã€ã³ãã¢ãã¬ã¹ãèšå®ãããšãããã©ã«ãã® `0.0.0.0` ãäžæžãããŸãã |
| `HOSTNAME` | `127.0.0.1` | `scripts/dev/run-next-playwright.mjs` | Playwright ã©ã³ããŒã Next.js ãèµ·åãããšãã«äœ¿çšãããã€ã³ãã¢ãã¬ã¹ãåçŸæ§ãšé颿§ã®ãããã¹ãã®ãããããã©ã«ã㯠`127.0.0.1` ã§ãã**`omniroute serve` ã«ã¯äœ¿çšããªãã§ãã ãã**ã代ããã« `OMNIROUTE_SERVER_HOST` ã䜿çšããŠãã ããïŒPOSIX ã·ã§ã«ã¯ `HOSTNAME` ããã·ã³åã«èªåèšå®ããããã`.env` ã§ã¯äžæžãã§ããŸããïŒã |
| `OMNIROUTE_SERVER_HOST` | `0.0.0.0` | `bin/cli/commands/serve.mjs` | `omniroute serve` ã®ãã€ã³ãã¢ãã¬ã¹ãPOSIX ã·ã§ã«ã® `HOSTNAME` 倿°ïŒbash/zsh ã«ãã£ãŠåžžã«ãã·ã³åã«èšå®ãããïŒãšã®ç«¶åãåé¿ããŸããæªèšå®ã®å Žå㯠`0.0.0.0` ã«ãã©ãŒã«ããã¯ããŸãã(#6194) |
### ããŒãã¢ãŒã
```
ââââââââââââââââââââââââ åäžããŒãïŒããã©ã«ãïŒ ââââââââââââââââââââââââââââ
â PORT=20128 â
â â ããã·ã¥ããŒã: http://localhost:20128 â
â â API: http://localhost:20128/v1/chat/completions â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââ ããŒãåå² ââââââââââââââââââââââââââââââââââââââ
â DASHBOARD_PORT=20128 â
â API_PORT=20129 â
â API_HOST=0.0.0.0 â
â â ããã·ã¥ããŒã: http://localhost:20128 â
â â API: http://0.0.0.0:20129/v1/chat/completions â
â 䜿çšäŸ: ããã·ã¥ããŒãã localhost ã«å¶éããªãã API ã LAN ã«å
¬éããŸããâ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââ Docker æ¬çªç°å¢ ââââââââââââââââââââââââââââââââââââ
â PROD_DASHBOARD_PORT=443 PROD_API_PORT=8443 â
â â docker-compose.prod.yml ã§ã³ã³ããããŒãããã¹ãããŒãã«ãããã³ã°ããŸããâ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
```
---
## 4. ã»ãã¥ãªãã£ãšèªèšŒ
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MACHINE_ID_SALT` | `endpoint-proxy-salt` | `src/lib/auth` | ãã·ã³ã®ãã£ã³ã¬ãŒããªã³ãçæã®ããã«ããŒããŠã§ã¢èå¥åãšçµã¿åããããœã«ããç°å¢ãåé¢ããããããããã€ããšã«å€æŽããŠãã ããã |
| `OMNIROUTE_CLI_SALT` | _ïŒæªèšå® = ã€ã³ã¹ããŒã«ããšã«ã©ã³ãã ãªãœã«ããçæãã`/cli-token-salt.json` ã«æ°žç¶åïŒ_ | `src/lib/machineToken.ts` | ããŒã«ã« CLI èªèšŒããŒã¯ã³ã®å°åºã«äœ¿çšãã HMAC ãœã«ãããã®å€ãèšå®ãããšããã·ã³äžã®ãã¹ãŠã® CLI ããŒã¯ã³ãããŒããŒã·ã§ã³ãããæ°žç¶åããããœã«ãããåžžã«åªå
ãããŸãã`docs/security/CLI_TOKEN.md` ãåç
§ããŠãã ããã |
| `AUTH_COOKIE_SECURE` | `false` | `src/lib/auth` | ã»ãã·ã§ã³ Cookie ã« `Secure` ãã©ã°ãèšå®ããŸããHTTPS ã®èåŸã§å®è¡ããå Žåã¯ã**å¿
ã `true` ã«èšå®ããŠãã ãã**ã |
| `REQUIRE_API_KEY` | `false` | API ããã«ãŠã§ã¢ | `true` ã®å Žåããã¹ãŠã® `/v1/*` ãããã·ãªã¯ãšã¹ãã«æå¹ãª API ããŒãå«ããå¿
èŠããããŸãã**ãã®ãã©ã°ã¯ `GET /v1/models` ãžã®ã¢ã¯ã»ã¹ãå¶åŸ¡ããŸãã**ã代ããã«ãããã¯ããã·ã¥ããŒãã®ãã°ã€ã³æ¹éïŒ`requireAuthForModels`ïŒã«åŸããŸãããã®ããã`/v1/models` ããã® `401` ã¯ãæšè«ãä¿è·ãããŠããããšãæå³ããŸããã`docs/security/INFERENCE_AUTH_POSTURE.md`ïŒ#13695ïŒãåç
§ããŠãã ããã |
| `ALLOW_API_KEY_REVEAL` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | ããã·ã¥ããŒã UI ã§ API ããŒã®å®å
šãªå€ã衚瀺ã§ããããã«ããŸããããã·ã¥ããŒãã®æ©èœãã©ã°ããèšå®ã§ããŸãããå
±æã€ã³ã¹ã¿ã³ã¹ã§ã¯ã»ãã¥ãªãã£ãªã¹ã¯ããããŸãã |
| `NO_LOG_API_KEY_IDS` | _ïŒç©ºïŒ_ | `src/lib/compliance/index.ts` | ãªã¯ãšã¹ããã°ã®èšé²å¯Ÿè±¡å€ãšãã API ã㌠ID ã®ã«ã³ãåºåããªã¹ãïŒGDPR æºæ ïŒã |
| `DEFAULT_RATE_LIMIT_PER_DAY` | _ïŒæªèšå® = ç¡å¶éïŒ_ | `src/shared/utils/apiKeyPolicy.ts` | `rate_limits` åã null ã® API ããŒã«é©çšãããã1 æ¥ãããã®ãªã¯ãšã¹ãäºç®ã®ãã©ãŒã«ããã¯å€ãæªèšå®ãŸãã¯ç©ºã®å Žåãæé»çãªäžéã¯ãããŸããïŒ#2289ã#11017ïŒã`0` ãåæ§ã§ãïŒç¡å¶éïŒãæ£ã®æŽæ° N ãæå®ãããšãN/æ¥ã5N/é±ã20N/æãæå¹ã«ãªããŸããäžæ£ãªç©ºã§ãªãå€ã®å Žåã¯ãåŸæ¥ã® 1000/æ¥ã5000/é±ã20000/æã®æéå¶éã«ãã©ãŒã«ããã¯ããŸãã |
| `MAX_BODY_SIZE_BYTES` | `10485760`ïŒ10 MBïŒ | `src/shared/middleware/bodySizeGuard.ts` | èš±å¯ããããªã¯ãšã¹ãæ¬æã®æå€§ãµã€ãºããã®å¶éãè¶
ãããã€ããŒãã¯æåŠãããŸãã |
| `OMNIROUTE_CHAT_LARGE_BODY_BYTES` | `262144`ïŒ256 KBïŒ | `src/shared/middleware/chatBodyAdmission.ts` | ãã®ãããå€ä»¥äžã®å®éã®ãªã¯ãšã¹ãæ¬æã¯ãJSON ã®è§£æåã«ãããã»ã¹ããŒã«ã«ã§ã¢ãããã¯ãªé«è² è·åŠççšã¢ãããã·ã§ã³ãªãŒã¹ãååŸããŸãïŒ`POST /v1/responses` ãå«ã BYTE ãã¹ïŒãæ§é çã«è² è·ã®é«ããªã¯ãšã¹ããšåã [#10437](https://github.com/diegosouzapw/OmniRoute/pull/10437) ã®æ£åžžæãããã«ãŒã åé¿çãé©çšãããŸããã[#7849](https://github.com/diegosouzapw/OmniRoute/issues/7849) ã®åçºãé²ããããåŒãç¶ã `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / [#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110) ã«ãã£ãŠå¶éãããŸãã |
| `OMNIROUTE_CHAT_HARD_MAX_BODY_BYTES` | `52428800` (50 MB) | `src/shared/middleware/chatBodyAdmission.ts` | å¢çä»ãåã蟌ã¿äžã«èªã¿åããããã€ãæ°ã«å¯ŸããŠé©çšãããããã£ããã«ãŒãã®ããŒãäžéã`Content-Length` ãæ¬ èœãäžæ£ããŸãã¯å®éãšç°ãªããªã¯ãšã¹ãã察象ãšãªããè¶
éæã«ã¯ `413` ãè¿ãããŸãã |
| `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` | _(æªèšå® â ãªã¯ãšã¹ãæ°ã®äžéãªã)_ | `src/shared/middleware/chatBodyAdmission.ts` | **#503-fanout:** ãã®åŸæ¥ã®ãªã¯ãšã¹ããæ°ãäžéã¯ãæç€ºçã«èšå®ãããå Žåã«ã®ã¿é©çšãããããã«ãªããŸãããæªèšå®ïŒããã©ã«ãïŒã®å ŽåãééçŽãã£ããã®åãå
¥ãã¯ä»£ããã« `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` ã«ãã£ãŠå¶åŸ¡ãããŸããããã¯ã**åäžããã»ã¹**ïŒ1ã€ã®V8ããŒãïŒã«ãããããã»ã¹ã®å®éã®ã¡ã¢ãªäžéããèªåç®åºããããã€ãäºç®ã§ããçŽ750kããŒã¯ã³ã® `/v1/responses` ã2ä»¶éãªããšçŽ12 GiBã®ããŒããç°åžžçµäºããïŒ#7849ïŒãšããã®ã¯ã**ã¡ã¢ãªäºç®**ã«é¢ããèŠåã§ããã補åãšããŠã®ããŒãäžéã2ä»¶ãšããæå³ã§ã¯ãããŸãããæ£åžžãªããã»ã¹ïŒããŒãã鮿æ¯çæªæºïŒã§ã¯ã`OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` ã«ãããããå€ãã®é·æé `/v1/responses` ãåæã«åãå
¥ããŠãããŸããŸãããæ°åïŒ40ïœ50ïŒã®é·æéSSEã¯ã©ã€ã¢ã³ããæ±ãããã©ããã¯ãããŒã + `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` / #10110 ã«äŸåãããæå€§2ä»¶ãã§ã¯ãããŸãããããã¹ãã䜿ãåããããã«ãããããã¿ã«åŒãäžãããšã#7849 ãåçºããŸãã**Nåã®ç¬ç«ãã `DATA_DIR`**ïŒ#11024ïŒã«ãã£ãŠ**ããŒã**ãå¢ãããŠãã ããã1ã€ã®SQLiteãã¡ã€ã«ã«å¯Ÿã㊠`replicas>1` ãèšå®ããŠã¯ãªããŸããã |
| `OMNIROUTE_CHAT_MAX_INFLIGHT_BYTES` | _(èªåç®åº)_ | `src/shared/middleware/admissionBudget.ts` | **#503-fanout:** èªåç®åºãããåã蟌ã¿ãã€ãäºç®ïŒV8ãšcgroupã®ãã¡å³ããæ¹ã®ã¡ã¢ãªäžéã®25%ããäžæçãª8åã®å¢å¹
çã§é€ç®ïŒãäžæžãããŸããç®åºå€ãšæç€ºå€ã¯ãããã8 MiBïœ2 GiBã®ç¯å²ã«å¶éãããŸããæå¹ãªäºç®ãè¶
ããæ¬æã¯ãçŽã¡ã« `413 body_exceeds_budget` ã§å€±æããŸããåå¥ã«ã¯åŠçå¯èœãªæ¬æå士ã®ç«¶åã¯ãåŒãç¶ãå詊è¡å¯èœãª `503` ã«ãªããŸãã40ïœ50ä»¶ã®é·æéSSEã¯ã©ã€ã¢ã³ããåæåŠçã§ãããã©ããã¯ããã®äºç® + ããŒãã«äŸåããããŒããªãæå€§2ä»¶ãã§ã¯ãããŸããã調æŽåã« `/api/monitoring/health` ã§ `chatAdmission.maxInflightBytes` / `budgetSource` / `pressureSeverity` ã確èªããŠãã ããã |
| `OMNIROUTE_CHAT_ADMISSION_HEAP_SHED_RATIO` | `0.75` | `src/shared/middleware/chatBodyAdmission.ts` | BYTEããã³STRUCTUREã®ééçŽåãå
¥ãã«å¯ŸããããŒãè² è·é®ææ¯çïŒ`heapUsed / heap_size_limit`ïŒïŒ#10183ã#10268ã#10437ïŒã`OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` ãè¶
ããåæééçŽãªã¯ãšã¹ãã¯ãããŒãããã®æ¯ç以äžã®å Žåã«ã®ã¿ãå詊è¡å¯èœãª `503` ã§é®æãããŸããæ£åžžãªããŒãã§ã¯ãhealthy-headroomçµç±ã§åãå
¥ããããŸãã |
| `OMNIROUTE_CHAT_ADMISSION_HEALTHY_HEADROOM` | `OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` (ããã©ã«ã `1`) | `src/shared/middleware/chatBodyAdmission.ts` | STRUCTUREãšBYTEã®**äž¡æ¹**ïŒ`OMNIROUTE_CHAT_LARGE_BODY_BYTES` 以äžã®æ¬æãå«ã `admitChatRequest`ïŒã«é©çšããããæ£åžžããŒãé«éãã¹ïŒ#10437ïŒåãã®å¢çä»ã远å 容éã§ãããã®äžéããªãå ŽåãããžãŒç¶æ
ã§ãããŒããæ£åžžã§ããã°ããã¹ãŠã®ãªã¯ãšã¹ããäžéãªãã§åãå
¥ãå¶åŸ¡ãè¿åããŠããŸãããæ£åžžããŒããã¹ãéããŠãã®æ°ã®åæãªãŒã¹ãã¢ã¯ãã£ãã«ãªããšããã以éã®ããžãŒãªãªã¯ãšã¹ãã¯ãå®éã®ããŒãè² è·æãšåãå¢çä»ãåŸ
æ©ïŒé®æãã¹ãžãã©ãŒã«ã¹ã«ãŒããŸãã`0` ã«ãããšããã®ãã€ãã¹ã¯å®å
šã«ç¡å¹ã«ãªããŸãã |
| `OMNIROUTE_CHAT_HEAVY_MESSAGE_COUNT` | `200` | `src/shared/middleware/chatBodyAdmission.ts` | æ¬æããã€ãããã倿ªæºã§ãã£ãŠãããã£ãããªã¯ãšã¹ããééçŽãšåé¡ããã¡ãã»ãŒãžæ°ã§ãã |
| `OMNIROUTE_CHAT_HEAVY_TOOL_COUNT` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | æ¬æããã€ãããã倿ªæºã§ãã£ãŠãããã£ãããªã¯ãšã¹ããééçŽãšåé¡ããããŒã«æ°ã§ãã |
| `OMNIROUTE_CHAT_HEAVY_ESTIMATED_TOKENS` | `32000` | `src/shared/middleware/chatBodyAdmission.ts` | ãªã¯ãšã¹ããééçŽãšåé¡ããããã®ãæååãµã€ãºã«åºã¥ãä¿å®çãªããŒã¯ã³æšå®å€ã§ããããã¯åãå
¥ãã³ã¹ãã®ä»£æ¿ææšã§ããããããã€ããŒã®èª²éçšããŒã¯ã³åã§ã¯ãããŸããã |
| `OMNIROUTE_CHAT_HARD_MAX_MESSAGES` | `0` (ç¡å¹) | `src/shared/middleware/chatBodyAdmission.ts` | ãªããã€ã³ã§èšå®ã§ãããä»»æã®ãã£ããå±¥æŽäžéã§ããããã©ã«ãã§ã¯ç¡å¹ã§ããã¡ãã»ãŒãžæ°ã¯ãããã€ã¡ã³ãããªã·ãŒã§ããããªã¯ãšã¹ãã«æ®éçãªæ§è³ªã§ã¯ãããŸããããŸããããã§äžéãèšå®ãããšãå§çž®ãã€ãã©ã€ã³ã«ãã£ãŠåŠçå¯èœã«ãªãåã«ãäŒè©±ãçµç«¯ç㪠`413` ã§æåŠãããŸããããŒãå¢å 㯠`OMNIROUTE_CHAT_MAX_HEAVY_IN_FLIGHT` ãšããŒãè² è·é®æã«ãã£ãŠå¶éãããŸããããŒãäžéãå¿
èŠãªã¡ã¢ãªå¶çŽã®å³ãããããã€ã¡ã³ãã§ã¯ãæ£ã®å€ãèšå®ããŠãã ããããã®å Žåãè¶
éæã«ã¯å§çž®ãå¿
èŠã§ããããšãç€ºãæ§é åããã `413` ãè¿ãããŸãã |
| `OMNIROUTE_MAX_NONSTREAMING_RESPONSE_BYTES` | `67108864` (64 MB) | `open-sse/handlers/chatCore/nonStreamingResponseBody.ts` | ã¡ã¢ãªã«å®å
šã«ãããã¡ãªã³ã°ããããéã¹ããªãŒãã³ã°ã®ã¢ããã¹ããªãŒã ã¬ã¹ãã³ã¹ã«å¯ŸããããŒãäžéã§ãããããè¶
ãããšã¢ããã¹ããªãŒã ãªãŒããŒããã£ã³ã»ã«ãããããŒããæ¯æžãããŸã§ç¡å¶éã«æååãå¢å€§ããã代ããã«ããªã¯ãšã¹ããå³åº§ã«å€±æããŸãã |
| `OMNIROUTE_FORWARDING_HEADER_BUDGET_BYTES` | `768` | `open-sse/handlers/chatCore/responseHeaders.ts` | ã¢ããã¹ããªãŒã ã®ã¬ã¹ãã³ã¹ããããŒãã転éããæå€§éä¿¡ãã€ãæ°ãäžéãè¶
ãããšãäžè¬çãªãªããŒã¹ãããã·ã®ããããŒå¶éå
ã«åãŸããããåªå
床ã®äœãããããŒïŒã«ã¹ã¿ã `x-codex-*`ã`x-oai-request-id` ãªã©ïŒãç Žæ£ãããŸããã¬ã¹ãã³ã¹ããããŒã®ãµã€ãºã倧ãããªã代ããã«ãããå€ãã®ã¢ããã¹ããªãŒã ã¡ã¿ããŒã¿ã転éããã«ã¯ããã倧ããå€ãèšå®ããŠãã ããã |
| `CORS_ORIGIN` | _(æªèšå®)_ | `src/server/cors/origins.ts` | åŸæ¥ã®åäžãªãªãžã³çšCORSèš±å¯ãªã¹ããæ°èŠãããã€ã§ã¯ `CORS_ALLOWED_ORIGINS` ãæšå¥šããŸããCORSã¯ã¯ãã¹ãªãªãžã³ã®ãã©ãŠã¶ãŒAPIã¯ã©ã€ã¢ã³ãå°çšã§ããèªèšŒæžã¿ããã·ã¥ããŒãããã®æžã蟌ã¿ã§ã¯ã代ããã«åäžãªãªãžã³ãªã¯ãšã¹ããšã»ãã·ã§ã³ã«çŽä»ããCSRFä¿è·ã䜿çšããŸãã |
| `CORS_ALLOWED_ORIGINS` | _(æªèšå®)_ | `src/server/cors/origins.ts` | ã«ã³ãåºåãã®CORSèš±å¯ãªã¹ãã`CORS_ALLOW_ALL=true` ãæç€ºçã«èšå®ãããŠããªãéããã¯ã€ã«ãã«ãŒãã¯éä¿¡ãããŸããã |
| `CORS_ALLOW_ALL` | `false` | `src/server/cors/origins.ts` | ãã©ãŠã¶ãŒã®ãããã `Origin` ããã®ãŸãŸè¿ãããã®ãéçºç°å¢å°çšã®åé¿ææ®µãå
±æç°å¢ãŸãã¯æ¬çªç°å¢ã§ã¯æå¹ã«ããªãã§ãã ããã |
| `OUTBOUND_SSRF_GUARD_ENABLED` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | åŸæ¥ã®ãšã€ãªã¢ã¹ããã®ç°å¢å€æ°ã®å€ããå
ã«ããã·ã¥ããŒãã®ãã°ã«ïŒDBã«ãããªãŒããŒã©ã€ãïŒãèªã¿èŸŒãŸããŸããããããã§ `false`ã`0`ã`no`ããŸã㯠`off` ãæå®ãããšããã®ãã©ã°ã®ããã·ã¥ããŒããã°ã«ããªããšããŠä¿åãããŠããå Žåã§ãã`OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` ãšåæ§ã«ãã¹ããã§ãã¯ãç¡å¹ã«ãªããŸãããã®ä»ã®å€ã®å Žåãã¬ãŒãã®åäœã¯ä»¥äžã®2ã€ã®ãã©ã°ã«å§ããããŸãã |
| `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` | `false` | `src/shared/network/outboundUrlGuardPolicy.ts` | ã¬ãŒãã¢ãŒãã«åŸããããã€ããŒãã¹ã§ãã¯ã©ãŠãã¡ã¿ããŒã¿ã®ãããã¯ïŒ169.254.0.0/16å
šäœãmetadata.google.internalïŒãå«ãã¢ãŠãããŠã³ãURLã¬ãŒãã®ãã¹ããã§ãã¯ãç¡å¹ã«ããŸãã察象ã«ã¯ãURLæ€èšŒãã¢ãã«æ€åºããããã€ããŒããŒãã®ããŒã¹URLïŒãªã¢ãŒããªã©ã³ãã³ã°ããŒããå«ãïŒããããã·ãã©ãŒã«ããã¯ãã¹ãã®ã»ãããªã¢ãŒãç»åïŒã¡ãã£ã¢ã®ååŸãªã©ããããã€ããŒã«é£æ¥ããã¢ãŠãããŠã³ããã¹ãå«ãŸããŸãããŸããã¯ã©ãŠãã¡ã¿ããŒã¿ïŒãªã³ã¯ããŒã«ã«ãšã³ããã€ã³ããé€ããã©ã€ããŒãWebhookã¿ãŒã²ãããèš±å¯ããŸãããããã®ãšã³ããã€ã³ãã¯ããã®ãã©ã°ããªã³ã§ãåŒãç¶ããããã¯ãããŸãã`BaseExecutor.execute()` ãä»ããŠéä¿¡ããããã£ãããªã¯ãšã¹ãã§ã¯ãã¯ã©ãŠãã¡ã¿ããŒã¿ãã§ãã¯ãç¶æãããŸããããŒã«ã«ãããã€ããŒã¯ããã©ã«ãèšå®ã§åäœããŸãã`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS`ïŒããã©ã«ã㯠`true`ïŒã«ãããæ€èšŒãæ€åºãããã³ãããã€ããŒããŒãã®ãã¹ã§ã¯ããŒã«ã«URLãšLAN URLããã§ã«èš±å¯ãããŠããŸãããããã·ãã©ãŒã«ããã¯ãã¹ããšãã©ã€ããŒãWebhookã¿ãŒã²ããã¯ãã®ãã©ã°ã®ã¿ãåç
§ãããã®ãã©ã°ããªãã®å Žåã¯ããŒã«ã«ïŒLANãã¹ãããããã¯ããŸãã`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS=false` ããåªå
ãããŸããããã·ã¥ããŒãã®ãã°ã«ããä¿åãããå€ã¯ããã®å€æ°ããåªå
ãããŸãã |
| `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` | `true` | `src/shared/network/outboundUrlGuardPolicy.ts` | ãããã€ããŒæ€èšŒãã¢ãã«æ€åºããã£ãããããã³ã¬ãŒãã¢ãŒãã管çãããã®ä»ã®ãããã€ããŒé¢é£ã¢ãŠãããŠã³ããã¹ã§ãããŒã«ã«ïŒãã©ã€ããŒãã¢ãã¬ã¹ïŒ127.0.0.1ãlocalhostãLANããã©ã€ããŒãç¯å²ïŒã®ãããã€ããŒURLãèš±å¯ããŸãã**ããã©ã«ã㯠`true`**ïŒããŒã«ã«åªå
ïŒã§ãããã®å Žåãã¬ãŒãã¯ã¯ã©ãŠãã¡ã¿ããŒã¿ãšã³ããã€ã³ãïŒ169.254.0.0/16å
šäœãšãæ¢ç¥ã®ã¡ã¿ããŒã¿ãã¹ãåã§ããmetadata.google.internalãmetadata.googãAlibaba/Azure/Oracle IMDSãfd00:ec2::254ïŒããããã¯ããŸãããã©ã€ããŒããã¹ããšã«ãŒãããã¯ãã¹ãããããã¯ããå
¬éç°å¢éå®ã¢ãŒãã«ããã«ã¯ã`false` ã«èšå®ããŸããã¬ãŒãã¯DNSã«ãã¯ã¢ããã®åã«ãèšè¿°ããããšããã®ãã¹ãåãŸãã¯IPãªãã©ã«ããã§ãã¯ããŸããå
¬éç°å¢éå®ã¢ãŒãã§ã¯ãã»ãŒããã§ããã©ãããŒãããã«ãã¹ãåã解決ãããã©ã€ããŒãã¢ãã¬ã¹ãè¿ãããå Žåã¯æåŠããŸãã`OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS=true` ã«ãããšããã®è¡ã«èšèŒããããã¹ã§ãããã®ãã§ãã¯ãç¡å¹ã«ãªããŸããLM StudioãOllamaãvLLMãLlamafileãTritonãªã©ã®çµã¿èŸŒã¿ããŒã«ã«ãããã€ããŒã§ã¯ãããŒæ€èšŒãšãã£ããã«é¢ãããã¹ãŠã®ãã¹ããã§ãã¯ãã¹ããããããŸããããã·ã¥ããŒãã®ãã°ã«ããä¿åãããå€ã¯ããã®å€æ°ããåªå
ãããŸãã(#5066) |
| `AUDIO_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/audioProviderNodes.ts` | `/v1/audio/*` ã«ãŒãïŒæåèµ·ãããé³å£°ã翻蚳ïŒã§ãlocalhostå€ã§ãã¹ããããŠããOpenAIäºæãããã€ããŒããŒãã䜿çšã§ããããã«ããŸããããã©ã«ãã§ã¯ãªãã§ããé³å£°ããªã¢ãŒããã¹ãã«ã«ãŒãã£ã³ã°ãããšå€åãéä¿¡ã®éä¿¡å
IDãå€ããããããªãã¬ãŒã¿ãŒãæç€ºçã«å€æããå¿
èŠããããŸããã«ãŒãããã¯ïŒãã©ã€ããŒãããŒãïŒlocalhostã127.0.0.1ã172.16-31.xïŒã¯åžžã«èš±å¯ããããã®èšå®ã®åœ±é¿ãåããŸããã(#3963) |
| `RERANK_REMOTE_PROVIDER_NODES` | `false` | `src/app/api/v1/_shared/rerankProviderNodes.ts` | `POST /v1/rerank`ïŒããã³ã¡ã¢ãªãšã³ãžã³ã®ã«ãŒãããã¯ã«ãããªã©ã³ãã³ã°æé ïŒã§ãlocalhostå€ã§ãã¹ããããŠããOpenAIäºæãããã€ããŒããŒãïŒTEIãInfinityãvLLMãªã©ãå®è¡ããŠããLANãã·ã³ãŸãã¯Tailscaleãã¢ïŒã䜿çšã§ããããã«ããŸããããã©ã«ãã§ã¯ãªãã§ãããªã¢ãŒããã¹ããžã®ã«ãŒãã£ã³ã°ã§ã¯å€åãéä¿¡ã®éä¿¡å
IDãå€ããããããªãã¬ãŒã¿ãŒãæç€ºçã«å€æããå¿
èŠããããŸããã«ãŒãããã¯ããŒãïŒlocalhostã127.0.0.1ã172.16-31.xïŒã¯åžžã«èš±å¯ããããã®èšå®ã®åœ±é¿ãåããŸããããªã¢ãŒãããŒãã®ããŒã¹URLã¯ããããã€ããŒã®ã¢ãŠãããŠã³ãURLããªã·ãŒïŒ`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`ïŒã«ãé©åããå¿
èŠããããŸãã |
| `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` | _ïŒç©ºïŒ_ | `src/shared/network/localNodeHosts.ts` | ãããã€ããŒããŒãã«ãŒãã£ã³ã°ã§ããŒã«ã«ãšããŠæ±ããã¹ãåïŒã«ã³ããŸãã¯ç©ºçœåºåãïŒãéåžžã¯ãOmniRoute èªèº«ã® Docker ãããã¯ãŒã¯äžã«ãããªã©ã³ã«ãŒãTEIããŸãã¯ãªãŒãã£ãªãµã€ãã«ãŒã® Docker/Compose ãµãŒãã¹åïŒ`http://reranker:8080/v1`ïŒãæå®ããŸããããã«ãããããŒãã«ã³ã³ãã IP ãããŒãã³ãŒãããå¿
èŠããªããªããŸããæå®ããããã¹ãã§ã¯ãåãªã¢ãŒãããŒãã«å¯Ÿã㊠`RERANK_REMOTE_PROVIDER_NODES` / `AUDIO_REMOTE_PROVIDER_NODES` ãæå¹ã«ããªããŠãã`/v1/rerank`ã`/v1/audio/*`ãããã³ããŒã«ã«ãã«ã¹ãã§ãã¯ãå©çšã§ããŸãããŸãããããã®ãã¹ã㯠`HTTP(S)_PROXY` ãæ¥ç¶ã«åºå®ããããããã·ãçµç±ãããåžžã«çŽæ¥åŒã³åºãããŸãããã ããæ¥ç¶ã® API ããŒã¯åŒãç¶ãéä¿¡ãããŸããåäžã©ãã«åãš `.internal`/`.local` åã®ã¿ãåãå
¥ããããŸãããããªã㯠FQDNãIP ãªãã©ã«ãããã³ã¯ã©ãŠãã¡ã¿ããŒã¿åã¯èŠåãšãšãã«ç¡èŠãããŸãã(#14635) |
| `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | OIDC ãæå¹ãªå Žåããã¹ã¯ãŒããã°ã€ã³ãç¡å¹ã«ãããŠãŒã¶ãŒã OIDC ã·ã³ã°ã«ãµã€ã³ãªã³çµç±ã§ã®ã¿èªèšŒã§ããããã«ããŸããççž®ãšã€ãªã¢ã¹ `OIDC_DISABLE_PASSWORD_LOGIN` ã䜿çšã§ããŸããåãããŒã®ããã·ã¥ããŒãæ©èœãã©ã°ãåªå
ãããŸãã(#10889) |
| `OIDC_DISABLE_PASSWORD_LOGIN` | `false` | `src/app/api/auth/login/route.ts` | `OMNIROUTE_OIDC_DISABLE_PASSWORD_LOGIN` ã®ççž®ãšã€ãªã¢ã¹ã§ã (#10889)ã |
### ã»ãã¥ãªãã£åŒ·åãã§ãã¯ãªã¹ã
```bash
# æ¬çªç°å¢ã«ãããæäœéã®ã»ãã¥ãªãã£èšå®:
AUTH_COOKIE_SECURE=true # HTTPS ãå¿
èŠ
REQUIRE_API_KEY=true # ãã¹ãŠã®ãããã·åŒã³åºããèªèšŒ
ALLOW_API_KEY_REVEAL=false # UI ã«ããŒã決ããŠè¡šç€ºããªã
CORS_ALLOWED_ORIGINS=https://your.domain.com
MAX_BODY_SIZE_BYTES=5242880 # äžé 5 MB
```
---
## 5. å
¥åãµãã¿ã€ãºãš PII ä¿è·
OmniRoute ã¯ããªã¯ãšã¹ãåŽã®ã€ã³ãžã§ã¯ã·ã§ã³ã¹ãã£ã³ãšã¬ã¹ãã³ã¹åŽã® PII é€å»ãšããã2 å±€ã®é²åŸ¡ãæäŸããŸãã
> **â ïž å¶éäºé
:** ãããã®ã¬ãŒãã¬ãŒã«ã¯å®å
šãªããã³ããã€ã³ãžã§ã¯ã·ã§ã³ãã¡ã€ã¢ãŠã©ãŒã«ã PII DLP ã·ã¹ãã ã§ã¯ãªãã*ãã¹ããšãã©ãŒãåã®ãã¥ãŒãªã¹ãã£ãã¯*æ€åºã§ãã誀æ€ç¥ïŒç¡å®³ãªãã«ãœã/RPG ããã³ãããæ€åºãããïŒãæ€åºæŒãïŒãªãŒãã¹ããŒã¯ã空çœã®æ¿å
¥ãè±èªä»¥å€ã®ãã¿ãŒã³ïŒãçºçããå¯èœæ§ããããŸãããããã ãã§ã¯ã³ã³ãã©ã€ã¢ã³ã¹å¯Ÿå¿ãšããŠååã§ã¯ãããŸãããäŸåããåã«ãã¢ãŒãã調æŽããå®éã®ãã©ãã£ãã¯ã«å¯ŸããŠãã¹ãããŠãã ããã
### ãªã¯ãšã¹ãåŽ: ããã³ããã€ã³ãžã§ã¯ã·ã§ã³ã¬ãŒã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| --------------------------------- | ---------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `INPUT_SANITIZER_ENABLED` | `true` | `src/middleware/promptInjectionGuard.ts` | åä¿¡ã¡ãã»ãŒãžã«å¯Ÿããããã³ããã€ã³ãžã§ã¯ã·ã§ã³ãã¿ãŒã³ã®ã¹ãã£ã³ãæå¹ã«ããŸãã |
| `INPUT_SANITIZER_MODE` | `warn` | `src/middleware/promptInjectionGuard.ts` | ã€ã³ãžã§ã¯ã·ã§ã³ããªã·ãŒ: `warn` = ãã°èšé²ã®ã¿ã`block` = ãªã¯ãšã¹ãã 400 ã§æåŠããŸããåŸæ¥ã® `redact` ã¯ã€ã³ãžã§ã¯ã·ã§ã³ããã¹ããé€å»**ããŸãã**ããªã¯ãšã¹ãå
ã® PII ãæžãæããã«ã¯ `PII_REDACTION_ENABLED` ã䜿çšããŠãã ããã |
| `INJECTION_GUARD_MODE` | _(æªèšå®)_ | `src/middleware/promptInjectionGuard.ts` | `INPUT_SANITIZER_MODE` ã®åŸæ¥ã®ãšã€ãªã¢ã¹ã§ããåäœã¯åãã§ãã |
| `INPUT_SANITIZER_BLOCK_THRESHOLD` | `high` | `src/shared/utils/injectionSeverity.ts` | `MODE=block` ãæåŠããæäœé倧床: `high`ïŒããã©ã«ãïŒã`medium`ããŸã㯠`low`ããããå€ãäžããªãéããé倧床ã Medium ã®ãã¿ãŒã³ã¯ç£èŠã®ã¿ãšãªããŸãã |
| `INJECTION_GUARD_BLOCK_THRESHOLD` | _(æªèšå®)_ | `src/shared/utils/injectionSeverity.ts` | `INPUT_SANITIZER_BLOCK_THRESHOLD` ã®åŸæ¥ã®ãšã€ãªã¢ã¹ã§ããåäœã¯åãã§ãã |
| `PII_REDACTION_ENABLED` | `false` | `src/lib/guardrails/piiMasker.ts` | `true` ã®å Žåãåä¿¡ãªã¯ãšã¹ãå
ã® PII ããã¹ãã³ã°ããŸãïŒã€ã³ãžã§ã¯ã·ã§ã³ã¢ãŒããšã¯ç¬ç«ããŠããŸãïŒã |
| `CREDENTIAL_REDACTION_ENABLED` | `false` | `src/lib/guardrails/credentialMasker.ts` | ãªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ã®ãã€ããŒããããæ¢ç¥ã® API ããŒ/ã·ãŒã¯ã¬ããããŒã¯ã³ã®ãã¿ãŒã³ããã¹ãã³ã°ããŸãããªããã€ã³æ¹åŒã§ã`PII_REDACTION_ENABLED` ãšåæ§ã«åäœããŸãã |
### ã¬ã¹ãã³ã¹åŽ: PII ãµãã¿ã€ã¶ãŒ
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| -------------------------------- | ---------- | ------------------------- | ------------------------------------------------------------------------------------------ |
| `PII_RESPONSE_SANITIZATION` | `false` | `src/lib/piiSanitizer.ts` | ã¯ã©ã€ã¢ã³ãã«è¿ãåã«ãLLM ã®ã¬ã¹ãã³ã¹ã«æŒæŽ©ãã PII ãå«ãŸããŠããªããã¹ãã£ã³ããŸãã |
| `PII_RESPONSE_SANITIZATION_MODE` | `redact` | `src/lib/piiSanitizer.ts` | `redact` = PII ããã¹ãã³ã°ã`warn` = ãã°èšé²ã®ã¿ã`block` = ã¬ã¹ãã³ã¹å
šäœãç Žæ£ããŸãã |
### VS Code ããŒã¯ã³åã«ãŒãã®ã³ã³ããã¹ããµãã¿ã€ã¶ãŒ
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ----------------------------------- | ---------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_VSCODE_SANITIZE_CONTEXT` | `1` | `src/app/api/v1/vscode/contextSanitizer.ts` | `/v1/vscode/[token]/*` ãªã¯ãšã¹ããããæé»çãªã¢ã¯ãã£ããšãã£ã¿ãŒã®ã³ã³ããã¹ãïŒ`editorContext`ã`activeEditor`ã`currentFile`ã`selection`ã`openTabs`âŠïŒãé€å»ããæç€ºçã«æ·»ä»ãããæ©å¯ãã¡ã€ã«ã®å
容ããã¹ãã³ã°ããŸããããã©ã«ãã§å®å
šãªèšå®ã§ããç¡å¹ã«ããã«ã¯ `0` ã«èšå®ããŠãã ããã |
### ã·ããªãª
| ã·ããªãª | èšå® |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **ãšã³ã¿ãŒãã©ã€ãºã³ã³ãã©ã€ã¢ã³ã¹** | `INPUT_SANITIZER_ENABLED=true`ã`INPUT_SANITIZER_MODE=block`ã`PII_REDACTION_ENABLED=true`ã`PII_RESPONSE_SANITIZATION=true`ïŒã€ã³ãžã§ã¯ã·ã§ã³ããããã¯ãããªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ã® PII ããã¹ãã³ã°ããŸããåã¢ãŒãã¯ç¬ç«ããŠããŸãïŒ |
| **ç£èŠã®ã¿** | `INPUT_SANITIZER_ENABLED=true`ã`INPUT_SANITIZER_MODE=warn` â ãã°ã«ã¯èšé²ããŸããããããã¯ã¯è¡ããŸãã |
| **å人å©çš** | ãã¹ãŠç¡å¹ã®ãŸãŸã«ããŸã â ãªãŒããŒãããã¯ãŒãã§ã |
---
## 6. ããŒã«ããã³ã«ãŒãã£ã³ã°ããªã·ãŒ
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ----------------------------------------------------------- | ----------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `TOOL_POLICY_MODE` | `disabled` | `src/lib/toolPolicy.ts` | LLMã«ããããŒã«ïŒé¢æ°åŒã³åºããžã®ã¢ã¯ã»ã¹ãå¶åŸ¡ããŸãã`allowlist` = ãªã¹ãã«èšèŒãããããŒã«ã®ã¿ã`denylist` = ãªã¹ãã«èšèŒããããã®ä»¥å€ãã¹ãŠã`disabled` = å¶éãªãã |
| `OMNIROUTE_PAYLOAD_RULES_PATH` | `./config/payloadRules.json` | `open-sse/services/payloadRules.ts` | ãã€ããŒãæäœã«ãŒã«ã®JSONãã¡ã€ã«ãžã®ãã¹ïŒã¢ãã«ïŒãããã³ã«ããšã®ã¢ããã¹ããªãŒã 調æŽïŒã |
| `OMNIROUTE_PAYLOAD_RULES_RELOAD_MS` | `5000` | `open-sse/services/payloadRules.ts` | ãã€ããŒãã«ãŒã«ãã¡ã€ã«ãããããªããŒãããééïŒããªç§ïŒãæå°å€ã¯`1000`ã |
| `OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS` | `false` | `open-sse/services/model.ts` | ãªããã€ã³èšå®ïŒClaude Codeã¯ã©ã€ã¢ã³ãããã®ããããã€ããŒãã¬ãã£ãã¯ã¹ã®ãªã`claude-*`ã¢ãã«IDãããããã€ããŒãã¬ãã£ãã¯ã¹ãèŠæ±ãã代ããã«Claude Code OAuthã¢ã«ãŠã³ãçµç±ã§ã«ãŒãã£ã³ã°ããŸããæç€ºçãªãããã€ããŒãã¬ãã£ãã¯ã¹ãåŒãç¶ãåªå
ãããŸããClaudeãããã€ããŒããŒãžã®ããã·ã¥ããŒããã°ã«ãããèšå®ã§ããŸãã |
| `BARE_MODEL_DEFAULT_OVERRIDE_LEGACY` | `false` | `open-sse/services/model.ts` | åŸæ¥ã®`resolveBareModelToConnectionDefault`åäœïŒ#4825ïŒïŒãã¬ãã£ãã¯ã¹ã®ãªãä»»æã®ã¢ãã«åããéžæããæ¥ç¶ã®`defaultModel`ã§çœ®ãæããŸããããã©ã«ãã§ã¯ç¡å¹ã§ããã`auto`ãŸãã¯ç©ºã®ã¢ãã«ã®ã¿ã眮ãæããããŸããæå¹ã«ãããšããã¢ããšã«èŠåã1åèšé²ãããŸãã |
| `COMBO_CONCURRENCY_PER_MODEL` | `3` | `open-sse/services/comboConfig.ts` | ã©ãŠã³ãããã³ã³ã³ãã®ã¢ãã«ããšã®åæå®è¡æ°äžéïŒ#9100ïŒãã©ãŠã³ãããã³ã³ã³ãã®ã»ããã©ã¯ãäžæžãææ®µããªããŸãŸã¢ãã«ããšã®åæãªã¯ãšã¹ãæ°ã3ã«åºå®ãããŠãããããããé«ãåæå®è¡ãã©ãã£ãã¯ããã®äžéã®èåŸã§çŽååãããŠããŸããã`>= 1`ãšãªãããæ€èšŒããã`<= 32`ã«å¶éãããŸãã |
| `DISABLE_CONTEXT_WINDOW_CHECKS` | `false` | `open-sse/handlers/chatCore.ts` | çŽæ¥ã®åäžã¢ãã«ãªã¯ãšã¹ãã«å¯ŸããOmniRouteã®ããŒã«ã«ã³ã³ããã¹ããŠã£ã³ããŠïŒæå€§å
¥åããŒã¯ã³ãã§ãã¯ãã¹ããããããå±éºãªãªããã€ã³èšå®ã§ããã¢ããã¹ããªãŒã ãããã€ããŒã¯åŒãç¶ãå®éã®äžéãé©çšããããã³ããå§çž®ãšã¢ãã«èªäœã®åºåããŒã¯ã³äžéãåŒãç¶ãæå¹ã§ããå®éã®åªå
é äœã¯ãFeature Flags DBã®äžæžã > ç°å¢å€æ° > ããã©ã«ãã§ããåèµ·åã¯äžèŠã§ãã |
| `OMNIROUTE_SELF_HOSTED_PROVIDERS` | _ïŒæªèšå®ïŒ_ | `open-sse/services/selfHostedEntry.ts` | ã€ã³ã©ã€ã³YAMLã®`providers:`ããã¥ã¡ã³ãïŒRIC-738ãD4ïŒãèšå®ãããŠããå ŽåïŒ`strategy:`ãããã¯ã®æç¡ãåããïŒã`/v1/chat/completions`ã¯ã¯ã©ãŠããã€ãã©ã€ã³ã§ã¯ãªããã»ã«ããã¹ãåã®çµ±åOpenAIäºæãšã³ããªãžæ¯ãåããããŸããæªèšå®ïŒããã©ã«ãïŒã®å Žåãã«ãŒãã¯ãã®ãŸãŸæ¢åã®ã¯ã©ãŠããã€ãã©ã€ã³ãžãã©ãŒã«ã¹ã«ãŒããŸãã`docs/routing/SELF_HOSTED_OPENAI_ENTRY.md`ãåç
§ããŠãã ããã |
| `OMNIROUTE_SELF_HOSTED_PROVIDERS_FILE` | _ïŒæªèšå®ïŒ_ | `open-sse/services/selfHostedEntry.ts` | ã€ã³ã©ã€ã³ç°å¢å€æ°ããããã¡ã€ã«ãåªå
ãããããã€åãã«ã`OMNIROUTE_SELF_HOSTED_PROVIDERS`ãšåã`providers:`ããã¥ã¡ã³ããä¿æããYAMLãã¡ã€ã«ãžã®ãã¹ãã©ã¡ããäžæ¹ãèšå®ãããšãã»ã«ããã¹ãåãšã³ããªãæå¹ã«ãªããŸãã |
| `OMNIROUTE_SELF_HOSTED_API_KEY` | _ïŒæªèšå® â ãªãŒãã³ã«ãŒãïŒ_ | `open-sse/services/selfHostedEntry.ts` | çµ±åã»ã«ããã¹ãåãšã³ããªçšã®ãªãã·ã§ã³ã®å
±æAPIããŒïŒD5ã®ã¹ãã£ãã©ãŒã«ããããŒããšã®ã¯ã©ãŒã¿ã·ã¹ãã çšã«äºçŽïŒãèšå®ãããŠããå Žåããªã¯ãšã¹ãã«`Authorization: Bearer `ãå«ããå¿
èŠããããŸããæªèšå®ã®å Žåãã«ãŒãã¯ãªãŒãã³ãšãªããæ¢åã®ã»ã«ããã¹ãåããŒã«ã«ãããã€ããŒãã¿ãŒã³ïŒã«ãŒãããã¯ïŒä¿¡é Œæžã¿ãããã¯ãŒã¯ãžã®ãããã€ïŒãšäžèŽããŸãã |
| `OMNIROUTE_SELF_HOSTED_STRATEGY` | _ïŒæªèšå®ïŒ_ | `open-sse/services/routingStrategies.ts` | 決å®è«çã«ãŒãã£ã³ã°ãšã³ãžã³åãã®ã€ã³ã©ã€ã³YAML `strategy:`ããã¥ã¡ã³ãïŒM2/RIC-740ãD3ïŒâ ãã©ãã¯ãªã¹ãïŒãã¯ã€ããªã¹ããã¯ãŒã«ããŠã³ãã¬ãŒã«ãŒãã³ã¹ãåªå
ãã¬ã€ãã³ã·ãŒèæ
®ããã©ãŒã«ããã¯ãã§ãŒã³ãããŒããšã«ã`OMNIROUTE_SELF_HOSTED_PROVIDERS`å
ã«ãã¹ããããã€ã³ã©ã€ã³`strategy:`ãããã¯ãäžæžãããŸãã`docs/routing/DETERMINISTIC_ROUTING.md`ãåç
§ããŠãã ããã |
| `OMNIROUTE_SELF_HOSTED_STRATEGY_FILE` | _(æªèšå®)_ | `open-sse/services/routingStrategies.ts` | ã€ã³ã©ã€ã³ç°å¢å€æ°ããããã¡ã€ã«ã䜿çšããããããã€åãã®ã`OMNIROUTE_SELF_HOSTED_STRATEGY` ãšåã `strategy:` ããã¥ã¡ã³ããä¿æãã YAML ãã¡ã€ã«ãžã®ãã¹ã |
| `OMNIROUTE_DISABLE_CONVERSATION_TRACKING` | _(æªèšå®)_ | `open-sse/services/conversationTracker.ts` | äŒè©±å±¥æŽã®åéã忢ããã«ã¯ `1` ãèšå®ããŸãã`resolveConversationId()` ã¯ãSQLite ã®èªã¿åããã¡ãã»ãŒãžå±¥æŽã®è§£æãè¡ãåã«ã远跡察象å€ã®çµæãè¿ããŸããã¯ã©ã€ã¢ã³ãããæäŸãããã»ãã·ã§ã³ ID ã察象ã§ããã«ãŒãã£ã³ã°ã»ãã·ã§ã³ã®åŠçã¯å€æŽããããæ¢åã®ã¬ã³ãŒããåé€ãããŸãããããã·ã¥ããŒãã®äŒè©±ãã¥ãŒã䜿çšãããã¿ãŒã³ããŒãã«ã®å¢å ãæ¢ããããããã€åãã§ãã |
| `OMNIROUTE_NADIR_API_KEY` | _(æªèšå®)_ | `open-sse/services/autoCombo/nadirStrategy.ts` | ãªããã€ã³ã® `nadir` èªåã³ã³ãã«ãŒã¿ãŒæŠç¥çš API ããŒãã³ã³ãç¬èªã® `config.nadir.apiKey` ãæªèšå®ã®å Žåã«äœ¿çšãããŸããçç¥å¯èœã§ããããŒãªãã®åŒã³åºã㯠Nadir ã®å¿åãã£ã¢ã«éãããŸãããIP ããšã«ã¬ãŒãå¶éããããããå
±æã²ãŒããŠã§ã€çµç±ã§ã¯äœ¿çšã§ããŸãããæ©å¯æ
å ±ã§ããã³ã³ãããšã«ç°ãªãã¢ã«ãŠã³ãã䜿çšããå Žåã¯ãã³ã³ãåäœã®ãã£ãŒã«ããæšå¥šããŸãã |
| `OMNIROUTE_NADIR_BASE_URL` | `https://api.getnadir.com` | `open-sse/services/autoCombo/nadirStrategy.ts` | Nadir 倿 API ã®ããŒã¹ãªãªãžã³ãã³ã³ãç¬èªã® `config.nadir.baseUrl` ãæªèšå®ã®å Žåã«äœ¿çšãããŸããããã³ããã®å
é éšåãèªçµç¹ã®ãããã¯ãŒã¯å
ã«ä¿æããã»ã«ããã¹ãç Nadir ã§ã®ã¿å¿
èŠã§ããæ«å°Ÿã® `/v1` ã¯èš±å®¹ãããåé€ãããŸãã |
| `OMNIROUTE_API_KEY_WEEKLY_WINDOW` | `provider` | `src/lib/usage/apiKeyUsageLimits.ts` | API ããŒããšã® USD 䜿çšéäžéã«é©çšãã鱿¬¡ãŠã£ã³ããŠïŒãªã¯ãšã¹ãã®å¶éã`GET /api/keys/{id}/usage-limits`ã`@@om-usage`ïŒã`provider`: ããŒãã¢ã¯ã»ã¹å¯èœãªã¢ããã¹ããªãŒã æ¥ç¶ã®ãã¡ãæãæ©ã鱿¬¡ãªã»ããæç¹ã«é±ãçµäºããŸããæ¢ç¥ã®ãªã»ããæç¹ããªãå Žåã¯ãçŽè¿ 7 æ¥éã®ããŒãªã³ã°æéã«ãªããŸãã`calendar`: çŸå°æéã®æææ¥ 00:00 ããæ¬¡ã®æææ¥ 00:00 ãŸã§ã®é±ã§ããã¹ãŠã®ããŒã§åäžã§ããã¢ããã¹ããªãŒã ã¢ã«ãŠã³ãã® 1 ã€ã®ããŒã«ããåå¥ã«äºç®èšå®ããã倿°ã®ããŒã§å
±æããå Žåã¯ã`calendar` ãæšå¥šããŸããç¡å¹ãªå€ã®å Žå㯠`provider` ã«ãã©ãŒã«ããã¯ããŸãã |
| `OMNIROUTE_API_KEY_WEEKLY_WINDOW_TIMEZONE` | _(ããã»ã¹ã®ã¿ã€ã ãŸãŒã³)_ | `src/lib/usage/apiKeyUsageLimits.ts` | `calendar` 鱿¬¡ãŠã£ã³ããŠã®æææ¥ 00:00 ãå®çŸ©ãã IANA ã¿ã€ã ãŸãŒã³ïŒäŸ: `Asia/Shanghai`ïŒãæªèšå®ãŸãã¯ç¡å¹ãªå Žå: OmniRoute ããã»ã¹ã®ã¿ã€ã ãŸãŒã³ïŒãã¹ããŸãã¯ã³ã³ããã® `TZ`ãã³ã³ããã€ã¡ãŒãžã§ã¯æªèšå®ãã€ãŸãåå®äžçæã§ããããšãäžè¬çã§ãïŒã`provider` ã¢ãŒãã§ã¯ç¡èŠãããŸãã |
| `OMNIROUTE_MAX_TOOLS_LIMIT` | `128` | `open-sse/config/constants.ts` | ãªã¯ãšã¹ãã§èš±å¯ãããããŒã«æ°ã®ããã©ã«ãäžéïŒOpenAI ã®ããã©ã«ãïŒãæ£ã®æŽæ°ã®ã¿æå®ã§ããŸããæªèšå®ãŸãã¯ç¡å¹ãªå€ã®å Žå㯠`128` ãç¶æãããŸããæ¢ç¥ã®äžéãŸãã¯äºåèšå®ãããäžéãæã€ãããã€ããŒïŒ`grok-cli` 㯠200ã`nvidia` 㯠1536ïŒã«ã¯ãåŒãç¶ãåãããã€ããŒç¬èªã®äžéãé©çšãããŸããããã¯ããã©ã«ãã®äžéå€ã®ã¿ã倿ŽããŸãã |
| `OMNIROUTE_PROMPT_EMULATE_TOOLS` | _(æå¹)_ | `open-sse/executors/syntxChat.ts` | SYNTX.ai ã®ããã³ãããšãã¥ã¬ãŒã·ã§ã³ã«ããããŒã«åŒã³åºã: æªèšå®ããŸã㯠`1`/`true`/`on`/`yes` ã®å ŽåãããŒã«ã«ã®ããŒã«ã«ã¿ãã°ãããã³ããã«æ¿å
¥ããŸãããã以å€ã®å€ïŒäŸ: `0`ïŒã®å Žåã¯æ¿å
¥ãã¹ãããããŸãã |
---
## 7. URL ãšã¯ã©ãŠãåæ
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------------------- | --------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BASE_URL` | `http://localhost:20128` | `src/lib/cloudSync.ts` | å
éšåæãžã§ãã `/api/sync/cloud` ãåŒã³åºãããã«äœ¿çšãããµãŒããŒåŽ URLãã¢ããªãå
¬éãããã·çµç±ã§æäŸãããå Žåã§ããã«ãŒããã㯠URL ãŸãã¯ã³ã³ãã URL ã®ãŸãŸã«ããŠãã ããã |
| `CLOUD_URL` | _(空)_ | `src/lib/cloudSync.ts` | ã¯ã©ãŠããªã¬ãŒã®ãšã³ããã€ã³ã URLïŒãã¬ãã¢ã æ©èœïŒã |
| `CLOUD_SYNC_TIMEOUT_MS` | `12000` | `src/lib/cloudSync.ts` | ã¯ã©ãŠãåæãªã¯ãšã¹ãã® HTTP ã¿ã€ã ã¢ãŠãã |
| `OMNIROUTE_BUILD_PROFILE` | `full` | Webpack ãã«ãèšå® | ãã«ãæã®ãããã¡ã€ã«ïŒæš©éä»ãã¢ãžã¥ãŒã«ããã³ãã«ããç©ççã«é€å€ããã«ã¯ `minimal` ã«èšå®ïŒã |
| `OMNIROUTE_STANDALONE_DIR` | _.build/ ã¹ã¿ã³ãã¢ãã³åºå_ | `scripts/build/colocate-standalone.mjs` | ãã«ãåŸã®äœµçœ®ã¹ãããã§äœ¿çšãããã¹ã¿ã³ãã¢ãã³åºåãã£ã¬ã¯ããªãäžæžãããããã®ãã«ãæèšå®ãã©ã³ã¿ã€ã èšå®ã§ã¯ãããŸããã |
| `OMNIROUTE_CLOUD_SYNC_SECRET` | _(空)_ | `src/lib/cloudSync.ts` | ã¯ã©ãŠãåæã¬ã¹ãã³ã¹ã® HMAC-SHA256 眲åãæ€èšŒããããã«äœ¿çšãããå
±æã·ãŒã¯ã¬ããã |
| `OMNIROUTE_CLOUD_SYNC_SECRETS` | `false` | `src/lib/cloudSync.ts` | ã¯ã©ãŠãåæãšã³ããã€ã³ãã«ããããŒã«ã«èªèšŒæ
å ±ã®äžæžããèš±å¯ããã«ã¯ã`true` ã«èšå®ããŸããããã©ã«ã㯠`false` ã§ãã |
| `OMNIROUTE_CLOUD_SYNC_ENFORCE_SIGNATURE` | `false` | `src/lib/cloudSync.ts` | ããŒã«ã«ã·ãŒã¯ã¬ãããèšå®ãããŠããªãå Žåã«ã眲åã®ãªãã¯ã©ãŠãåæã¬ã¹ãã³ã¹ãæåŠããã«ã¯ `true` ã«èšå®ããŸãïŒ#13679ïŒããã®ãã©ã°ã«é¢ä¿ãªãã眲åãååšããå Žåã¯åžžã«æ€èšŒããã`OMNIROUTE_CLOUD_SYNC_SECRET` ãæªèšå®ã®å Žåã¯å¿
ãæåŠãããŸããv3.9 ã§ã¯ããã©ã«ããçœ²åæ€èšŒã®åŒ·å¶ã«å€æŽãããŸãã |
| `OMNIROUTE_ZED_IMPORT_LEGACY_ONE_STEP` | `false` | `src/app/api/providers/zed/import/route.ts` | ãŠãŒã¶ãŒç¢ºèªãªãã§ãv3.8.5 ã®ã¯ã³ã¹ãããã®ããã¹ãŠãã€ã³ããŒããåäœã«ãã©ãŒã«ããã¯ããã«ã¯ã`true` ã«èšå®ããŸãã |
| `NEXT_PUBLIC_BASE_URL` | `http://localhost:20128` | OAuthãããã·ã¥ããŒããåæ | OAuth ã® redirect_uriãããã·ã¥ããŒãã®ãªã³ã¯ãçæãããå
¬é URL ã«äœ¿çšããå€éšå
¬é URLãOAuth ã³ãŒã«ããã¯ãŸãã¯çæããããã©ãŠã¶ãŒãªã³ã¯ã§æ£èŠã®ãªããŒã¹ãããã·ãã¹ãã䜿çšããå¿
èŠãããå Žåã¯ãå®å®ããå
¬é URL ã«èšå®ããŠãã ããã |
| `NEXT_PUBLIC_CLOUD_URL` | _(空)_ | ã¯ã©ã€ã¢ã³ãåŽ | `CLOUD_URL` ã®ã¯ã©ã€ã¢ã³ãåŽãã©ãŒã |
| `NEXT_PUBLIC_APP_URL` | _(æªèšå®)_ | `src/shared/services/cloudSyncScheduler.ts` | `NEXT_PUBLIC_BASE_URL` ã®ã¬ã¬ã·ãŒãã©ãŒã«ããã¯ã |
| `NEXT_PUBLIC_PORT` | _(æªèšå® â `PORT` ã«ãã©ãŒã«ããã¯)_ | `src/shared/hooks/useDisplayBaseUrl.ts` | ãªãªãžã³ãäžæãªå ŽåïŒSSR/ãã¹ãïŒã®è¡šç€º URL ã«äœ¿çšããã¯ã©ã€ã¢ã³ãåŽã®ãã©ãŒã«ããã¯ããŒãã`PORT` ããå
ã«èªã¿åãããŸãã |
| `OMNIROUTE_PUBLIC_BASE_URL` | _(æªèšå®)_ | å
¬éãªãªãžã³ãªãŸã«ããŒãç»å URL | å
¬é URL ã®çæããã³ããã·ã¥ããŒã以å€ã§ã®ãã©ãŠã¶ãŒãªãªãžã³æ€èšŒã«äœ¿çšãããããã©ãŠã¶ãŒåã OmniRoute ãªãªãžã³ã®ãã¡æãåªå
床ãé«ããã®ã§ããOpenWebUI ãŸãã¯å¥ã®ãªã¬ãŒãå
éš URL çµç±ã§ OmniRoute ã«ã¢ã¯ã»ã¹ããäžæ¹ããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã LANããã³ãã«ããŸãã¯å
¬éãªãªãžã³ããçææžã¿ã¡ãã£ã¢ãååŸããå¿
èŠãããå Žåã«èšå®ããŸãã`/v1` ã¯å«ããªãã§ãã ããã |
| `OMNIROUTE_PROVIDER_MANIFEST_URL` | _(æªèšå®)_ | `open-sse/config/providerPluginManifestUrl.ts` | ãµã€ãã«ãŒã¯ã©ã€ã¢ã³ãã«éç¥ãããããããã€ããŒãã©ã°ã€ã³ãããã§ã¹ãã®çµ¶å¯Ÿ URLãæªèšå®ã®å ŽåãOmniRoute ã¯ãªã¯ãšã¹ããªãªãžã³ãŸã㯠HOST/PORT ãã `/api/v1/provider-plugin-manifest` ãå°åºããŸãã |
| `OMNIROUTE_PUBLIC_PROTOCOL` | `http` | `open-sse/config/providerPluginManifestUrl.ts` | ãªã¯ãšã¹ããªãªãžã³ã䜿çšãããHOST/PORT ãããããã€ããŒãã©ã°ã€ã³ãããã§ã¹ã URL ãå°åºããéã«äœ¿çšããããããã³ã«ãæç€ºç㪠`OMNIROUTE_PROVIDER_MANIFEST_URL` ãèšå®ãããŠããªãç¶æ
ã§ãTLS ãçµç«¯ããå
¬éãããã·ã®èåŸã«é
眮ããå Žå㯠`https` ã«èšå®ããŸãã |
| `OMNIROUTE_TRUST_PROXY` | _(æªèšå®)_ | `src/server/origin/publicOrigin.ts` | 転éãããå
¬éãªãªãžã³ããããŒã«å¯Ÿãããªãã·ã§ã³ã®ä¿¡é Œã¢ãŒããæªèšå® = ã»ãã¥ãªãã£å€å®ã§ `Forwarded` / `X-Forwarded-*` ãä¿¡é ŒããŸããã`true` / `loopback` ã¯ãããŒã¯ã³ãä»äžãããã«ãŒãããã¯ãããã·ããã®è»¢éãã¹ã/ãããã³ã«ã®ã¿ãä¿¡é ŒããŸãã`private` / `lan` ã¯ãã©ã€ããŒã LAN ã®ãããã·ãã¢ãä¿¡é Œãã`API_PORT` ããªããžããã®ãããªãã¢ã® `X-Forwarded-For` ãä¿æã§ããããã«ããŸããæ¬çªç°å¢ã§ã¯ãæç€ºç㪠`NEXT_PUBLIC_BASE_URL` ãæšå¥šããŸãã |
| `KIE_CALLBACK_URL` | _(æªèšå®)_ | `open-sse/utils/kieTask.ts` | éåæ kie.ai ãžã§ãçšã®å
¬éã³ãŒã«ãã㯠URLã`OMNIROUTE_KIE_CALLBACK_URL` ããã³ `OMNIROUTE_PUBLIC_URL` ãããåªå
ãããæåªå
ã®ãªãŒããŒã©ã€ãã§ãã |
| `OMNIROUTE_KIE_CALLBACK_URL` | _(æªèšå®)_ | `open-sse/utils/kieTask.ts` | `KIE_CALLBACK_URL` ã®å¥è¡šèšãäž»èŠå€æ°ãæªèšå®ã®å Žåã®ãã©ãŒã«ããã¯ã§ãã |
| `OMNIROUTE_PUBLIC_URL` | _(æªèšå®)_ | `open-sse/utils/kieTask.ts` | éåæã³ãŒã«ãã㯠URL ã®æ§æã«äœ¿çšãããå
¬éãªãªãžã³ãkie.ai ã³ãŒã«ããã¯ã§æãåªå
床ã®äœããã©ãŒã«ããã¯ã§ãããŸããä»ã®ãªã¬ãŒåãã®æ±çšå
¬é URL ãšããŠã䜿çšãããŸãã |
| `OMNIROUTE_CROF_USAGE_URL` | `https://crof.ai/usage_api/` | `open-sse/services/usage.ts` | 䜿çšéããŒãžã§äœ¿çšããã CrofAI ã¯ã©ãŒã¿ç
§äŒãšã³ããã€ã³ãããªã¬ãŒ / ãã¹ããã£ã¯ã¹ãã£åãã«ãªãŒããŒã©ã€ãã§ããŸãã |
| `OMNIROUTE_CLINEPASS_USAGE_URL` | `https://api.cline.bot/api/v1/users/me/plan/usage-limits` | `open-sse/services/usage/clinepass.ts` | 䜿çšéããŒãžã§äœ¿çšããã ClinePass ã® 5 æé / é±é / æéã¯ã©ãŒã¿ãšã³ããã€ã³ãããªã¬ãŒ / ãã¹ããã£ã¯ã¹ãã£åãã«ãªãŒããŒã©ã€ãã§ããŸãã |
| `OMNIROUTE_OPENCODE_QUOTA_URL` | `https://opencode.ai/zen/go/v1/usage` | `open-sse/services/opencodeQuotaFetcher.ts` | 䜿çšéããŒãžã§äœ¿çšããããå
¬åŒã® API ããŒèªèšŒä»ã OpenCode Go 䜿çšéãšã³ããã€ã³ãããªã¬ãŒ / ãã¹ããã£ã¯ã¹ãã£åãã«ãªãŒããŒã©ã€ãã§ããŸãã |
| `OPENCODE_SYNTHESIZE_CLI_HEADERS` | `true` | `open-sse/executors/opencode.ts` | ã¯ã©ã€ã¢ã³ããéä¿¡ããªãã£ãå Žåãopencode-go/zen ã®ã¢ããã¹ããªãŒã ãªã¯ãšã¹ãã« OpenCode CLI èå¥ããããŒïŒUser-Agentãx-opencode-client/projectããªã¯ãšã¹ã/ã»ãã·ã§ã³ UUIDïŒãåæããVPS ããã®éä¿¡æã« Cloudflare ãåãå
¥ããããã«ããŸãïŒ#6210/#5997ïŒã#10571 以éã¯ããã©ã«ãã§æå¹ã§ãã`false`/`0`/`no`/`off` ã§ç¡å¹åã§ããŸãã |
| `OPENCODE_USER_AGENT` | `opencode/1.18.31` | `open-sse/utils/opencodeHeaders.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` ãæå¹ã§ããããã€ããŒããšã® `_USER_AGENT` ãªãŒããŒã©ã€ããèšå®ãããŠããªãå Žåã«äœ¿çšãããããã©ã«ãã® User-Agentãopencode ãšã°ãŒãã¥ãŒã¿ãŒã«ã®ã¿é©çšãããŸããäžæµåŽã§ã²ãŒããããããŒã¬ã¹ãªã¯ãšã¹ãã§ã¯ãèšå®å€ã« `opencode/= 1.17>` ãå«ãŸããŠããªãå ŽåãæåŠãããã®ã§ã¯ãªãããã®ããã©ã«ãå€ã«çœ®ãæããããŸãã |
| `OMNIROUTE_FORWARD_ATTRIBUTION` | `1`ïŒæå¹ïŒ | `open-sse/utils/opencodeHeaders.ts` | ã¯ã©ã€ã¢ã³ãã¢ããªã®åž°å±æ
å ±ããããŒïŒ`x-session-id`ã`x-title`ã`http-referer`ïŒãäžæµãããã€ããŒã«è»¢éããäžèЧã«å«ãŸããããŒãã¹å
ã§éå§ããããªã¯ãšã¹ãããã«ãŒã¿ãŒééåŸããã®è奿
å ±ãç¶æã§ããããã«ããŸãïŒOpenRouter ã®ãããªãã·ã£ãŒã²ãŒãã§ã¯ãããããããŒãšããŠäœ¿çšãããŸãïŒã`0`/`false`/`no`/`off` ãæå®ãããšãã¬ãžã¹ããªïŒãªãã¬ãŒã¿ãŒã®è奿
å ±ãç¶æããã¯ã©ã€ã¢ã³ããæå®ããå€ãç Žæ£ããŸãããªãã¬ãŒã¿ãŒãèšå®ããã«ã¹ã¿ã ããããŒã¯ãåžžã«ã¯ã©ã€ã¢ã³ãã®å€ããåªå
ãããŸãã |
| `OPENCODE_CLIENT` | `desktop` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` ãæå¹ãªå Žåã«çæããã `x-opencode-client` ããããŒã®å€ã |
| `OPENCODE_PROJECT` | `global` | `open-sse/executors/opencode.ts` | `OPENCODE_SYNTHESIZE_CLI_HEADERS` ãæå¹ãªå Žåã«çæããã `x-opencode-project` ããããŒã®å€ã |
| `OMNIROUTE_EGRESS_IP_LOCK_PROVIDERS` | _ïŒæªèšå®ïŒ_ | `open-sse/config/providerErrorRules.ts` | äžæµé害ãéä¿¡å
IP ããšã«åé¡ãããããã€ããŒã®æå¹ãªã»ããïŒ1 åã® 429 ã«ããããã® IP ãå
±æãããã¹ãŠã®é¢é£æ¥ç¶ã忢ããŸãïŒãæªèšå®ã®å Žåã¯ãç¡ææ ã®ããã©ã«ã `opencode,opencode-go,opencode-cli` ã䜿çšãããŸãã`none`/`off`/`false`/`0` ãæå®ãããšé£é忢ãå®å
šã«ç¡å¹ã«ãªããã«ã³ãåºåãã®ãªã¹ããæå®ãããšã»ããã眮ãæããããŸããææãã©ã³ã§ã¯äžæµåŽã§ã¢ã«ãŠã³ãåäœã«åé¡ããããããå®å
šã«ç¡å¹åã§ããŸãïŒ#9611ïŒã |
| `OPENCODE_FREE_TIER_REQUEST_CONTRACT` | _ïŒæªèšå®ïŒ_ | `open-sse/executors/opencodeFreeTierContract.ts` | `off` ã«èšå®ãããšãããŒã¬ã¹ OpenCode ãªã¯ãšã¹ãã®ããã£ïŒã¹ããªãŒãã³ã°ãã©ã°ãšããŒã«ãªã¹ãïŒã®èª¿æŽã忢ããŸããããããŒã¯åŒãç¶ãé©çšãããŸãããªã¯ãšã¹ãããšã«èªã¿èŸŒãŸããããã倿Žã¯çŽã¡ã«åæ ãããŸãã |
| `OPENCODE_FREE_TIER_PLACEHOLDER_TOOLS` | _ïŒæªèšå®ïŒ_ | `open-sse/executors/opencodeFreeTierContract.ts` | ããŒã«ãå«ãŸãªãããŒã¬ã¹ OpenCode ãªã¯ãšã¹ãã§ããã®ã¢ãã«ã«ã€ããŠãŸã äœãæ€åºãããŠããªãå Žåã«å®£èšãããã«ã³ãåºåãã®ããŒã«åã空ã®å Žåã¯ãã¢ãã«ã«åŒã³åºããªãããæç€ºãããåäžã®ãã¬ãŒã¹ãã«ããŒã«ãã©ãŒã«ããã¯ããŸããæå€§ 32 ãšã³ããªã§ã圢åŒã¯ `[A-Za-z_][A-Za-z0-9_-]{0,63}` ã§ããç¡å¹ãªãšã³ããªã¯ç¡èŠãããŸãã |
| `OMNIROUTE_OLLAMA_CLOUD_USAGE_URL` | `https://ollama.com/settings` | `open-sse/services/usage.ts` | ã¯ã©ãŒã¿ã®ã¹ã¯ã¬ã€ãã³ã°ã«äœ¿çšããã Ollama Cloud èšå® URLããªã¬ãŒïŒãã¹ããã£ã¯ã¹ãã£åãã«ãªãŒããŒã©ã€ãã§ããŸãã |
| `OLLAMA_USAGE_COOKIE` | _ïŒæªèšå®ïŒ_ | `open-sse/services/usage.ts` | èšå®ããŒãžããã¯ã©ãŒã¿ãã¹ã¯ã¬ã€ãã³ã°ããããã«äœ¿çšããã Ollama Cloud ã® `__Secure-session` Cookieãæ©å¯æ
å ±ã§ããè€æ°ã®ã¢ã«ãŠã³ããèšå®ãããŠããå Žåã¯ãæ¥ç¶ããšã®ããã·ã¥ããŒããã£ãŒã«ãã䜿çšããããšãæšå¥šããŸãã |
| `OLLAMA_CLOUD_USAGE_COOKIE` | _ïŒæªèšå®ïŒ_ | `open-sse/services/usage.ts` | Ollama Cloud ã® `__Secure-session` Cookie çšã®ä»£æ¿ç°å¢å€æ°ãæ©å¯æ
å ±ã§ããè€æ°ã®ã¢ã«ãŠã³ããèšå®ãããŠããå Žåã¯ãæ¥ç¶ããšã®ããã·ã¥ããŒããã£ãŒã«ãã䜿çšããããšãæšå¥šããŸãã |
| `OMNIROUTE_OLLAMA_USAGE_COOKIE` | _ïŒæªèšå®ïŒ_ | `open-sse/services/usage.ts` | ããçããšã€ãªã¢ã¹ããå
ã«äœ¿çšããããOllama Cloud ã® `__Secure-session` Cookie çšã®ä»£æ¿ç°å¢å€æ°ãæ©å¯æ
å ±ã§ããè€æ°ã®ã¢ã«ãŠã³ããèšå®ãããŠããå Žåã¯ãæ¥ç¶ããšã®ããã·ã¥ããŒããã£ãŒã«ãã䜿çšããããšãæšå¥šããŸãã |
| `OMNIROUTE_CODEWHISPERER_BASE_URL` | `https://codewhisperer.us-east-1.amazonaws.com` | `open-sse/services/usage.ts` | CodeWhispererïŒAWS KiroïŒã®äœ¿çšéå¶éãšã³ããã€ã³ãããªã¬ãŒïŒãã¹ããã£ã¯ã¹ãã£åãã«ãªãŒããŒã©ã€ãã§ããŸãã |
> [!IMPORTANT]
> ãªããŒã¹ãããã·ïŒnginxãCaddyïŒã®èåŸã«ãããã€ããå ŽåãOAuth ã³ãŒã«ããã¯ãçæãããå
¬éãªã³ã¯ã§ãã®ãã¹ãåã䜿çšããå¿
èŠããããšãã¯ã`NEXT_PUBLIC_BASE_URL` ãå®å®ããå
¬é URLïŒäŸïŒ`https://omniroute.example.com`ïŒã«èšå®ããŠãã ããããããèšå®ããªããšãredirect_uri ãäžèŽããªããã OAuth ã³ãŒã«ããã¯ã倱æããããçæãããå
¬éãªã³ã¯ãå
éšã³ã³ããã®ãªãªãžã³ãæãããããå¯èœæ§ããããŸãã
>
> ãµãŒããŒéãžã§ãã§ã¯ã`BASE_URL` ãå
éšã«ãŒãããã¯ïŒã³ã³ãã URL ã®ãŸãŸã«ããŠãã ãããèªèšŒæ
å ±ã䌎ãå
éšèªå·±ãã§ããã«ã¯ããã©ãŠã¶ã® `Origin` ãå
¬éãã¹ãåã䜿çšããªãã§ãã ããã
>
> èªèšŒæžã¿ããã·ã¥ããŒãããã®æžã蟌ã¿ã«ã¯ãéçãªå
¬éããŒã¹ URL ã¯å¿
èŠãããŸãããããã·ã¥ããŒãã¯ãã»ãã·ã§ã³ã«çŽä»ãããã CSRF ããŒã¯ã³ã䜿çšããŠãåäžãªãªãžã³ã®å®å
šã§ãªããªã¯ãšã¹ããéä¿¡ããŸããOmniRoute ã¯ãããã·ã¥ããŒã以å€ã®ãã©ãŠã¶çµ±åã«å¯Ÿããå
¬éãªãªãžã³ã®æ€èšŒãäžå
管çããŸããæç€ºçãªå
¬é URL ã®ç°å¢å€æ°ãæåã«ä¿¡é Œããã`OMNIROUTE_TRUST_PROXY` ãæå¹ã§ããã€çŽæ¥æ¥ç¶ããŠãããããã·ãã¢ãããŒã¯ã³ã«ãã£ãŠä¿¡é Œæžã¿ãšç€ºãããŠããªãéããçã® `Forwarded` / `X-Forwarded-*` ããããŒã¯ç¡èŠãããŸããåäžãªãªãžã³ã®ããã·ã¥ããŒããªã¯ãšã¹ããä¿®æ£ããããã« CORS èšå®ã䜿çšããªãã§ãã ãããCORS ã¯ãã¯ãã¹ãªãªãžã³ã®ãã©ãŠã¶ã¯ã©ã€ã¢ã³ãå°çšã§ãã
---
## 8. ã¢ãŠãããŠã³ããããã·
éä¿¡å¶åŸ¡ããžãªã«ãŒãã£ã³ã°ããŸã㯠IP ãã¹ãã³ã°ã®ããã«ãã¢ããã¹ããªãŒã LLM ãããã€ããŒãžã®åŒã³åºãã HTTP ãŸã㯠SOCKS5 ãããã·çµç±ã§ã«ãŒãã£ã³ã°ããŸãã
`OMNIROUTE_UPSTREAM_HTTP2_ENABLED` ã®ããã©ã«ãå€ã¯ `true` ã§ãã`false`ã`0`ã`no`ããŸã㯠`off` ã«èšå®ãããšã`open-sse/utils/proxyDispatcher.ts` ããã³ `open-sse/utils/proxyFetch.ts` ã® Undici ãã£ã¹ãããã£ãŒã§ãçŽæ¥éä¿¡ãHTTP(S)/SOCKS ãããã·ããªã¬ãŒãããã³ãããã®æ°èŠãœã±ããã䜿çšããå詊è¡ã«å¯Ÿã㊠HTTP/1.1 ã匷å¶ãããŸãããã®èšå®ã§ããTLS èšŒææžã®æ€èšŒããããã·èªèšŒãæ¥ç¶æ°å¶éãããã³ããŒãã¢ã©ã€ãèšå®ã¯ç¶æãããŸãããã£ã¹ãããã£ãŒã¯ãã£ãã·ã¥ããããªã¬ãŒãšãŒãžã§ã³ãã¯èµ·åæã«äœæãããããããã®èšå®ã倿ŽããåŸã¯ OmniRoute ãåèµ·åããŠãã ããããã®åãæ¿ãã¯ãwreq ã® TLS ãã£ã³ã¬ãŒããªã³ãã£ã³ã°ããããã€ããŒåºæã®ãã©ã³ã¹ããŒãã«ã¯åœ±é¿ããŸããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------------------- | ---------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ENABLE_SOCKS5_PROXY` | `true` | `open-sse/executors` | ã¢ããã¹ããªãŒã åŒã³åºãçšã® SOCKS5 ãããã·ãšãŒãžã§ã³ããæå¹ã«ããŸãã`false` ã§ç¡å¹åã§ããŸãã |
| `NEXT_PUBLIC_ENABLE_SOCKS5_PROXY` | `true` | ã¯ã©ã€ã¢ã³ãåŽ | SOCKS5 ãå©çšå¯èœãã©ãããã¯ã©ã€ã¢ã³ãåŽã§èªèããŸãã |
| `PROXY_SKIP_RECENTLY_FAILED` | `true` | `src/shared/utils/featureFlags.ts` | ããã©ã«ãã§æå¹ãªæ©èœãã©ã°ã§ãïŒ[FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ãåç
§ãããã·ã¥ããŒãã® DB ãªãŒããŒã©ã€ããåªå
ãããŸãïŒããããã·ããŒã«ããã³ã¢ã«ãŠã³ãããšã®ããŒããŒã·ã§ã³ã§ã¯ãçŽåã«å€±æããã¡ã³ããŒïŒTCP ãããŒããæåŠãããããŸãã¯ãã®ã¡ã³ããŒçµç±ã§ 429 ãè¿ããããã®ïŒãã倱æãç¹°ãè¿ããã³ã«äžéãŸã§åå¢ããæéãåã³éžæããªãããã«ããŸãã`false` ã«ãããšéåžžã®éžææ¹åŒã«æ»ããŸãã |
| `SELECTOR_CONTROL_ALLOWLIST` | _(æªèšå®)_ | `src/lib/proxySubscription/selectorGuard.ts` | ã«ãŒãããã¯ä»¥å€ã®ããŒã«ã«ã³ã¢ã®ã»ã¬ã¯ã¿ãŒå¶åŸ¡å¯Ÿè±¡ã«å¯Ÿããèš±å¯ãªã¹ãã§ãïŒã«ã³ããŸãã¯ã¹ããŒã¹ã§åºåã£ããã¹ãåãŸã㯠IPã`*` 㯠LAN/ãã©ã€ããŒãã¢ãã¬ã¹ãèš±å¯ããŸãããã¡ã¿ããŒã¿ã¢ãã¬ã¹ããã³ãªã³ã¯ããŒã«ã«ã¢ãã¬ã¹ã¯èš±å¯ããŸããïŒãhttp/https çµç±ã®ã«ãŒãããã¯ã¯ããã©ã«ãã§èš±å¯ãããŸããããã·ã¥ããŒãã® DB å€ãèšå®æžã¿ãã€ç©ºã§ãªãå Žåããã®å€æ°ããåªå
ãããŸãã |
| `PROXY_QUOTA_429_BASE_MS` | `300000` | `open-sse/utils/proxyRefusalMemory.ts` | 429 ã«ããé€å€ã®åºæ¬æéïŒmsïŒã§ãã倱æãç¹°ãè¿ããã³ã«åå¢ããŸããèµ·åæã«äžåºŠã ãèªã¿åãããŸãã`1000..3600000` ã®ç¯å²ã«å¶éãããç¯å²å€ãŸãã¯èªã¿åãäžèœã®å Žåã¯èŠåãšãšãã«ããã©ã«ãå€ãžãã©ãŒã«ããã¯ããŸãã |
| `PROXY_QUOTA_429_MAX_MS` | `900000` | `open-sse/utils/proxyRefusalMemory.ts` | 429 ã«ããé€å€æéã®äžéïŒmsïŒã§ããèµ·åæã«äžåºŠã ãèªã¿åãããŸãã`1000..3600000` ã®ç¯å²ã«å¶éãããç¯å²å€ãŸãã¯èªã¿åãäžèœã®å Žåã¯èŠåãšãšãã«ããã©ã«ãå€ãžãã©ãŒã«ããã¯ããŸããäžéãåºæ¬æéãäžåãå Žåãããã©ã«ãå€ãžãã©ãŒã«ããã¯ããŸããäžéãåŒãäžãããšãé£ç¶å€±æã®èšæ¶æéãçããªããæå¹æéã®çµäºãã `2 x max` åŸã«ãšã³ããªãåé€ãããŸãã |
| `PROXY_POOL_SHARED_EGRESS_ORDER` | `false` | `src/shared/utils/featureFlags.ts` | ãªããã€ã³ã®æ©èœãã©ã°ã§ãïŒ[FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ãåç
§ãããã·ã¥ããŒãã® DB ãªãŒããŒã©ã€ããåªå
ãããŸãïŒãã¯ã©ãŒã¿ãéä¿¡å
ã¢ãã¬ã¹åäœã§å²ãåœãŠããããããã€ããŒã§ã¯ãçŽè¿ã«æåŠãããã¡ã³ããŒãšåã芳枬æžã¿éä¿¡å
ã¢ãã¬ã¹ãå
±æããããŒã«ã¡ã³ããŒããæ£åžžãªã¡ã³ããŒã®çŽåŸã«é äœä»ãããŸããé åºã®ã¿ã倿Žããé€å€ã¯è¡ããŸããããã®æ©èœãèªã¿åãæåŠã·ã°ãã«ãçæãã `PROXY_SKIP_RECENTLY_FAILED` ãå¿
èŠã§ãã |
| `PROXY_WEBHOOK_REBOUND_MS` | `300000` | `src/lib/proxyEvents/proxyTransitionBridge.ts` | ããŒã«ã¡ã³ããŒããšã«ç¹°ãè¿ããã `proxy.set_aside` Webhook ã¢ã©ãŒããæå¶ããæåŠãéäžããŠãã€ãã³ãã 1 ä»¶ã ãéä¿¡ãããããã«ãããªããŠã³ããŠã£ã³ããŠïŒmsïŒã§ããéä¿¡ã®ãã³ã«èªã¿åãããŸãã`1000..3600000` ã®ç¯å²ã«å¶éãããç¯å²å€ãŸãã¯èªã¿åãäžèœã®å Žåã¯éç¥ãªãã§ããã©ã«ãå€ãžãã©ãŒã«ããã¯ããŸãã |
| `HTTP_PROXY` | _(æªèšå®)_ | Node.js æšæº | ã¢ããã¹ããªãŒã åŒã³åºãçšã® HTTP ãããã·ã§ãã |
| `HTTPS_PROXY` | _(æªèšå®)_ | Node.js æšæº | ã¢ããã¹ããªãŒã åŒã³åºãçšã® HTTPS ãããã·ã§ãã |
| `ALL_PROXY` | _(æªèšå®)_ | Node.js æšæº | æ±çšãããã·ã§ãïŒ`socks5://` ããµããŒãïŒã |
| `OMNIROUTE_PROXY_ECHO_URL` | _(æªèšå®)_ | `src/lib/proxyEchoTarget.ts` | ãããã·çµç±ã®å€åãéä¿¡ãããŒãã§äœ¿çšãããšã³ãŒ IP ã®ã¿ãŒã²ããããåäžã® URL ã«åºå®ããŸããæªèšå®ã®å ŽåããããŒã㯠`api64.ipify.org`ãæ¬¡ã« `api4.ipify.org` ã詊è¡ãããããIPv4 å°çšãã³ãã«ã忢ããŠãããšèª€ã£ãŠå ±åãããããšã¯ãããŸããïŒ#9694ïŒã |
| `NO_PROXY` | _(æªèšå®)_ | Node.js æšæº | ãããã·ãè¿åãããã¹ãå/IP ãã«ã³ãåºåãã§æå®ããŸãã |
| `OMNIROUTE_PROXY_DISPATCHER_CONNECTIONS` | `32` | `open-sse/utils/proxyDispatcher.ts` | ãã£ãã·ã¥ããã HTTP/SOCKS ãããã·ãã£ã¹ãããã£ãŒããšã®æå€§åæãœã±ããæ°ãè€æ°ã®ãªã¯ãšã¹ããåãã¢ã«ãŠã³ãã¬ãã«ã®ãããã·ãå
±æããå ŽåãCodex `/v1/responses` ãªã©ã®é·æéç¶æããã SSE ã¹ããªãŒã ã«ã¯è€æ°ã®æ¥ç¶ãå¿
èŠã§ãã`256` ãè¶
ããå€ã¯äžéã«å¶éãããŸãã |
| `SOCKS_HANDSHAKE_TIMEOUT_MS` | `10000` | `open-sse/utils/socksConnectorWithFamily.ts` | SOCKS5 ãã³ãã·ã§ã€ã¯ïŒæ¥ç¶ïŒã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒãåäžã®äœå®
åãã²ãŒããŠã§ã€ãã¹ãã«é«ãåæå®è¡è² è·ïŒäŸ: 100 ä»¶ã®åæãªã¯ãšã¹ãïŒããããå Žåã¯ããã®å€ãåŒãäžããŠãã ãããããŒã«ã飜åããŠãããšããããã·ã«å°éå¯èœã§ãã£ãŠãå®éã®ãã³ãã·ã§ã€ã¯ã 10 ç§ãè¶
ããå Žåããããããããªããšèª€ã£ã `[Proxy Fast-Fail] Proxy unreachable` ãšããŠè¡šé¢åããŸããäžé㯠`120000` ã§ãã |
| `PROXY_FAIL_OPEN` | `false` | `src/sse/handlers/chatHelpers.ts` | `false`ïŒããã©ã«ãïŒã®å Žåãå²ãåœãŠããããããã·ã®è§£æ±ºã«å€±æãããªã¯ãšã¹ãã¯ãçŽæ¥æ¥ç¶ãžãã©ãŒã«ããã¯ããã**æåŠïŒãã§ã€ã«ã¯ããŒãºïŒ**ãããŸããããã«ãããå® IP ã®æŒæŽ©ã鲿¢ããŸããåŸæ¥ã® DIRECT ãã©ãŒã«ããã¯ã埩å
ããã«ã¯ `true` ã«èšå®ããŠãã ããã |
| `ENABLE_TLS_FINGERPRINT` | `false` | `open-sse/executors` | wreq-js ã䜿çšã㊠TLS ãã£ã³ã¬ãŒããªã³ããåœè£
ããŸãïŒChrome 124 ãæš¡å£ïŒãJA3/JA4 ã«ãããããã¯ãžã®å¯ŸçãšãªããŸãã |
| `TLS_FINGERPRINT_PROVIDERS` | _(æªèšå®)_ | `open-sse/utils/proxyFetch.ts` | æ°ãããããã·çµç± TLS ã«ãŒãã£ã³ã°ïŒ`open-sse/utils/proxyFetch.ts`ïŒã«äœ¿çšãããããã€ããŒã®èš±å¯ãªã¹ãããã«ã³ãåºåãã§æå®ããŸããæªèšå®ã®å ŽåãçŽæ¥ TLS ã¯åŸæ¥ã®åäœãç¶æããããã§æå®ããããããã€ããŒã®ã¿ã Chrome-124 ãã£ã³ã¬ãŒããªã³ãããªããžãçµç±ããŸããèš±å¯ãªã¹ããæªèšå®ã®å Žåã§ããGroqïŒ`api.groq.com`ïŒã¯é€å€ãããŸããããã¯ãChrome JA3 ã§ã¯ Cloudflare 1010 ãçºçããäžæ¹ããã€ãã£ãã® undici ã§ã¯ API ã«å°éã§ããããã§ãã |
| `OMNIROUTE_TURNSTILE_IGNORE_TLS_ERRORS` | `false` | `open-sse/services/claudeTurnstileSolver.ts` | Claude Turnstile ã® Playwright ãã©ãŠã¶ãŒã³ã³ããã¹ãã§ãHTTPS èšŒææžãšã©ãŒãç¡èŠã§ããããã«ããŸãã |
### ã·ããªãª
| ã·ããªãª | èšå® |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **SSH ãã³ãã«çµç±ã® SOCKS5** | `ALL_PROXY=socks5://127.0.0.1:7890`, `ENABLE_SOCKS5_PROXY=true` |
| **äŒæ¥ HTTP ãããã·** | `HTTP_PROXY=http://proxy.corp.com:3128`, `HTTPS_PROXY=http://proxy.corp.com:3128`, `NO_PROXY=localhost,internal.corp.com` |
| **ãã£ã³ã¬ãŒããªã³ã察ç** | `ENABLE_TLS_FINGERPRINT=true` â `wreq-js`ïŒå梱ïŒãå¿
èŠã§ã |
| **å€åãéä¿¡ãå¶åŸ¡ãããŠããç°å¢ / çŽæ¥ã¢ã¯ã»ã¹äžå¯** | `PROXY_FAIL_OPEN=false`ïŒããã©ã«ãïŒã®ãŸãŸã«ããŸãããããã·ãå©çšã§ããªãå ŽåãçŽæ¥æ¥ç¶ã§æŒæŽ©ãã代ããã«ãªã¯ãšã¹ãã¯æç€ºçã«å€±æããŸãã |
| **åŸæ¥ç°å¢ / éçºç°å¢ â çŽæ¥ãã©ãŒã«ããã¯ãèš±å¯** | `PROXY_FAIL_OPEN=true`ãã»ãã¥ãªãã£åŒ·ååã®åäœã埩å
ãããããã·ã®è§£æ±ºã«å€±æããå Žåã¯çŽæ¥æ¥ç¶ã䜿çšããŸãã |
> **泚ïŒNVIDIA æ€èšŒãã€ãã¹ â #3226ïŒ:** NVIDIA ã® API ããŒæ€èšŒãšã³ããã€ã³ãã¯ã
> ã°ããŒãã«ãããã·/TLS ãããé©çšæžã¿ã® fetch çµç±ã§ã«ãŒãã£ã³ã°ããããšåæ¢ããŸãïŒundici dispatcher â 504ïŒã
> `src/lib/providers/validation.ts::directHttpsRequest()` ã¯ã`safeOutboundFetch({ bypassProxyPatch: true })` ã䜿çšããŠã
> ãã®æ€èšŒåŒã³åºãã«éãæå³çã«ãããã·ããããè¿åããŸãã
> ããã¯ææžåãããéå®çãªäŸå€ã§ããããã£ãã/䜿çšéã®å€åãéä¿¡ã«ã¯**圱é¿ããŸãã**ã
> ãã€ãã¹ã®é©çšç¯å²ã¯ `tests/unit/proxy-bypass-scope-guard-3226.test.ts` ã«ãã£ãŠåºå®ãããŠããŸãã
---
## 9. CLI ããŒã«çµ±å
OmniRoute ã CLI ãµã€ãã«ãŒïŒClaude CodeãCodex ãªã©ïŒãæ€åºããŠèµ·åããæ¹æ³ãå¶åŸ¡ããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| --------------------------------- | -------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `CLI_MODE` | `auto` | `src/shared/services/cliRuntime.ts` | `auto` = ã·ã¹ãã ã® PATH ãæ€çŽ¢ã`manual` = æç€ºçã«æå®ããããã¹ã®ã¿ã䜿çšããŸãã |
| `CLI_EXTRA_PATHS` | _(æªèšå®)_ | `src/shared/services/cliRuntime.ts` | CLI ãã€ããªæ€åºçšã®è¿œå PATH ãšã³ããªïŒã³ãã³åºåãïŒã |
| `CLI_CONFIG_HOME` | _(æªèšå®)_ | `src/shared/services/cliRuntime.ts` | CLI èšå®ïŒ`~/.claude`ã`~/.codex`ïŒã®èªã¿åãã«äœ¿çšããããŒã ãã£ã¬ã¯ããªãäžæžãããŸãã絶察ãã¹ã§ãããããã»ã¹ã®ããŒã å
ã«ããå¿
èŠããããŸãã**ãŸãã¯**ãã³ã³ããå
ã§ã¯ãã€ã³ãããŠã³ãããããã¹ã䜿çšã§ããŸãïŒ`/host-home` ã¯ãã®ä»çµã¿ã§åäœããŸãïŒããã以å€ã®å Žåã¯ããŒã ãã£ã¬ã¯ããªã«ãã©ãŒã«ããã¯ããŸãã |
| `CLI_ALLOW_CONFIG_WRITES` | `true` | `src/shared/services/cliRuntime.ts` | OmniRoute ã«ãã CLI èšå®ãã¡ã€ã«ãžã®æžã蟌ã¿ïŒããŒã¯ã³ã®æŽæ°ãã»ãã·ã§ã³ããŒã¿ïŒãèš±å¯ããŸãã`false` ã«èšå®ãããšãCLI èšå®ãžã®ãã¹ãŠã®æžã蟌ã¿ãæç€ºçãªãæžã蟌ã¿ãç¡å¹ããšã©ãŒã§å€±æããŸãã |
| `CLI_CLAUDE_BIN` | `claude` | `src/shared/services/cliRuntime.ts` | Claude CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_CODEX_BIN` | `codex` | `src/shared/services/cliRuntime.ts` | Codex CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_DROID_BIN` | `droid` | `src/shared/services/cliRuntime.ts` | Droid CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_OPENCLAW_BIN` | `openclaw` | `src/shared/services/cliRuntime.ts` | OpenClaw CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_CURSOR_BIN` | `agent`ãæ¬¡ã« `cursor` | `src/shared/services/cliRuntime.ts` | Cursor ãšãŒãžã§ã³ããã€ããªãžã®ã«ã¹ã¿ã ãã¹ãæå®ãããŠããªãå Žåãæ€åºã§ã¯æåã« `agent` ã詊ããèŠã€ãããªããã° `cursor` ã«ãã©ãŒã«ããã¯ããŸãã |
| `CLI_CLINE_BIN` | `cline` | `src/shared/services/cliRuntime.ts` | Cline CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_5DIVE_BIN` | `5dive` | `src/shared/services/cliRuntime.ts` | 5dive CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_5DIVE_STATE_DIR` | `/var/lib/5dive` | `src/shared/services/cliRuntime.ts` | 5dive ã®ã·ã¹ãã ç¶æ
ãã£ã¬ã¯ããªïŒroot ææã®èªèšŒãããã¡ã€ã«ïŒã5dive èªäœã® STATE_DIR ããã©ã«ããåæ ããŸãã |
| `CLI_CONTINUE_BIN` | `cn` | `src/shared/services/cliRuntime.ts` | Continue CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_QODER_BIN` | `qodercli` | `src/shared/services/cliRuntime.ts` | Qoder CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_QWEN_BIN` | `qwen` | `src/shared/services/cliRuntime.ts` | Qwen Code CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_AIDER_BIN` | `aider` | `src/shared/services/cliRuntime.ts` | Aider CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_GOOSE_BIN` | `goose` | `src/shared/services/cliRuntime.ts` | Goose CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_GEMINI_BIN` | `gemini` | `src/shared/services/cliRuntime.ts` | Google Gemini CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ããµãŒããŒåŽã§ã®æ€åºãšãã«ã¹ãã§ãã¯ã«ã®ã¿äœ¿çšãããŸãã`omniroute run gemini` ã¯ã·ã¹ãã ã® PATH ãã `gemini` ãã€ããªã解決ããŸãã |
| `CLI_KILO_BIN` | `kilocode` | `src/shared/services/cliRuntime.ts` | Kilo Code CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_OPENCODE_BIN` | `opencode` | `src/shared/services/cliRuntime.ts` | OpenCode CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_HERMES_BIN` | `hermes` | `src/shared/services/cliRuntime.ts` | Hermes ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ãäž¡æ¹ã®ã«ã¿ãã°ãšã³ããªïŒ`hermes` ãš `hermes-agent`ïŒã§å
±æãããŸãã |
| `CLI_FORGE_BIN` | `forge` | `src/shared/services/cliRuntime.ts` | ForgeCode CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_JCODE_BIN` | `jcode` | `src/shared/services/cliRuntime.ts` | jcode CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_DEEPSEEK_TUI_BIN` | `deepseek-tui` | `src/shared/services/cliRuntime.ts` | DeepSeek TUI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_CODEWHALE_BIN` | `codewhale` | `src/shared/services/cliRuntime.ts` | CodeWhale CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_SMELT_BIN` | `smelt` | `src/shared/services/cliRuntime.ts` | Smelt CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_PI_BIN` | `pi` | `src/shared/services/cliRuntime.ts` | PiïŒpi-coding-agentïŒãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_CRUSH_BIN` | `crush` | `src/shared/services/cliRuntime.ts` | Crush CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_OMP_BIN` | `omp` | `src/shared/services/cliRuntime.ts` | Oh My PiïŒ`omp`ïŒãšãŒãžã§ã³ããã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_LETTA_BIN` | `letta` | `src/shared/services/cliRuntime.ts` | Letta CLI ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_PRIME_AGENT_BIN` | `prime-agent` | `src/shared/services/cliRuntime.ts` | Prime AgentïŒPrime IntellectïŒãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLI_WINDSURF_BIN` | _ïŒãªãïŒ_ | `src/shared/services/cliRuntime.ts` | Windsurf ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ãWindsurf ã«ã¯**ããã©ã«ãã³ãã³ãããããŸãã**ããããèšå®ããããŸã§ããã€ããªæ€åºã¯ç¡å¹ã®ãŸãŸã§ãã |
| `CLI_DEVIN_BIN` | `devin` | `open-sse/executors/devin-cli.ts` | Devin CLI ãã€ããªïŒv3.8.0ïŒãžã®ã«ã¹ã¿ã ãã¹ãWindsurf/Devin ãšã°ãŒãã¥ãŒã¿ãŒã«ãã£ãŠäœ¿çšãããŸãã |
| `DEVIN_DESKTOP_VERSION` | `3.6.27` | `open-sse/executors/devin-desktop.ts` | Devin Desktop ã® `ide_version`ããªãŒããŒã©ã€ãã«ã¯ `x.y.z` 圢åŒã䜿çšããå¿
èŠããããŸããç¡å¹ãªå€ã®å Žåã¯ãæ€èšŒæžã¿ã®ããã©ã«ãã«ãã©ãŒã«ããã¯ããŸãã |
| `DEVIN_DESKTOP_EXTENSION_VERSION` | `1.48.2` | `open-sse/executors/devin-desktop.ts` | ãã³ãã«ããã Codeium/language-server ã® `extension_version`ãDesktop ã® `ide_version` ãšã¯ç°ãªããŸãããªãŒããŒã©ã€ãã«ã¯ `x.y.z` ã䜿çšããå¿
èŠããããŸããç¡å¹ãªå€ã®å Žåã¯ããã³ãã«ãããããã©ã«ãã䜿çšãããŸãã |
| `CLI_DEVIN_AGENTIC_BIN` | `devin` | `open-sse/executors/devin-cli-agentic.ts` | ãšãŒãžã§ã³ãåããªããžå°çšã® Devin CLI ãªãŒããŒã©ã€ãããšã°ãŒãã¥ãŒã¿ãŒã¯ããŒã«ã«ã® ACP stdio ã¢ããã¹ããªãŒã ã®ã¿ãåãå
¥ããŸãã |
| `DEVIN_AGENTIC_HOME` | _ïŒå¿
é ïŒ_ | `open-sse/executors/devin-cli-agentic.ts` | ãšãŒãžã§ã³ãå Devin ãµãããã»ã¹çšã®çµ¶å¯Ÿãã¹ã§æå®ãããåé¢ããŒã ãåãå
¥ããããããªããžãã¹ã¯ `/home/bridge` ããã³ã¿ã¹ã¯ããŒã«ã«ã® `.sandbox` ãã¹ã§ãïŒWindows ã§ã¯ `C:\...\.sandbox\...`ïŒã |
| `DEVIN_AGENTIC_ACP_TIMEOUT_MS` | `120000` | `open-sse/executors/devin-cli-agentic.ts` | ããªããžãåããã»ã¹ãçµäºããæç€ºçãªã¿ã€ã ã¢ãŠããè¿ããŸã§ã®ãDevin ACP ã®1ã¿ãŒã³ãããã®æå€§æéã |
| `DEVIN_BRIDGE_MODEL` | `devin-cli-agentic/swe-1-7` | `docker/devin-bridge/compose.yml` | åé¢ããªããžçšã®ã¡ã€ã³ Claude Code ã¢ãã«ãšã€ãªã¢ã¹ãã©ã€ãããŒãã¹ã¯ããã®äŸãçŸåšã® Devin ã¢ã«ãŠã³ãããè¿ãããã¢ãã«ã«çœ®ãæããŸãã |
| `DEVIN_BRIDGE_SONNET_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code ãããã©ã«ãã® Sonnet ãèŠæ±ãããšãã«äœ¿çšãããåé¢ããªããžãšã€ãªã¢ã¹ã |
| `DEVIN_BRIDGE_OPUS_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code ãããã©ã«ãã® Opus ãèŠæ±ãããšãã«äœ¿çšãããåé¢ããªããžãšã€ãªã¢ã¹ã |
| `DEVIN_BRIDGE_HAIKU_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code ãããã©ã«ãã® Haiku ãèŠæ±ãããšãã«äœ¿çšãããåé¢ããªããžãšã€ãªã¢ã¹ã |
| `DEVIN_BRIDGE_SUBAGENT_MODEL` | `DEVIN_BRIDGE_MODEL` | `docker/devin-bridge/compose.yml` | Claude Code ã®ãµããšãŒãžã§ã³ãã«äœ¿çšãããåé¢ããªããžãšã€ãªã¢ã¹ã |
| `DEVIN_SEAT_API_URL` | `https://server.codeium.com` | `open-sse/services/usage/devinCli.ts` | Devin CLI ã®ã¯ã©ãŒã¿ïŒ`GetUserStatus`ïŒã§äœ¿çšããã Codeium ã·ãŒã管ç API ã®ãªãã·ã§ã³ã®ãªãŒããŒã©ã€ãã |
| `AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | ããŒã«ã«ã® `auggie` ãããã€ããŒã§äœ¿çšããã AugmentïŒAuggieïŒCLI ãã€ããªã®çµ¶å¯Ÿãã¹ã®ãªãŒããŒã©ã€ããèšå®ãããŠããªãå Žå㯠`CLI_AUGGIE_BIN`ãæ¬¡ã« PATH æ€çŽ¢ãžãã©ãŒã«ããã¯ããŸãã |
| `CLI_AUGGIE_BIN` | `auggie` | `open-sse/executors/auggie.ts` | AugmentïŒAuggieïŒCLI ãã€ããªãã¹ã®ãšã€ãªã¢ã¹ãªãŒããŒã©ã€ãïŒ`AUGGIE_BIN` ã®åŸã«ç¢ºèªãããŸãïŒã |
| `ZCODE_BIN` | `zcode` | `open-sse/executors/zcode.ts` | ããŒã«ã«ã® `zcode` ãããã€ããŒã® stdio ã¯ã©ã€ã¢ã³ãã§äœ¿çšããããã€ããªãèšå®ãããŠããªãå Žå㯠PATH äžã® `zcode` ãžãã©ãŒã«ããã¯ããŸãã |
| `ZCODE_ARGS` | â | `open-sse/executors/zcode.ts` | `cliTools` çµç±ã§èµ·åãããéã« `zcode` ãã€ããªãžæž¡ããã远å åŒæ°ã® JSON é
åïŒ16 å以äžã®æååïŒã |
| `ZCODE_CWD` | `process.cwd()` | `open-sse/executors/zcode.ts` | ZCode app-server ãµãããã»ã¹ã®äœæ¥ãã£ã¬ã¯ããªã |
| `ZCODE_PROVIDER_ID` | `builtin:zai-coding-plan` | `open-sse/executors/zcode.ts` | app-server ãžéä¿¡ããããããã€ã㌠ID ã®ãªãŒããŒã©ã€ãã |
| `ZCODE_SERVER_RUNTIME_ROOT` | `~/.zcode/server` | `open-sse/executors/zcode.ts` | ZCode app-server ã©ã³ã¿ã€ã ã®ã«ãŒãïŒå梱㮠`node` ãš `zcode-server.cjs` ãé
眮ãããå ŽæïŒã |
| `ZCODE_SERVER_NODE` | `/node` | `open-sse/executors/zcode.ts` | ZCode app-server ã®ãã¹ãã«äœ¿çšããã Node å®è¡å¯èœãã¡ã€ã«ã |
| `ZCODE_SERVER_ENTRY` | `/zcode-server.cjs` | `open-sse/executors/zcode.ts` | ZCode ãµãŒããŒã®ãã¹ãã«äœ¿çšããã app-server ãšã³ããªãŒã¹ã¯ãªããã |
| `ZCODE_STARTUP_TIMEOUT_MS` | `10000` | `open-sse/executors/zcode.ts` | ZCode app-server ã®èµ·åã倱æãããšå€æããããŸã§ã®èµ·åã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `ZCODE_RPC_TIMEOUT_MS` | `30000` | `open-sse/executors/zcode.ts` | ZCode app-server åŒã³åºãã«å¯Ÿãããªã¯ãšã¹ãããšã® RPC ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `ZCODE_TURN_TIMEOUT_MS` | `120000` | `open-sse/executors/zcode.ts` | ã¹ãŒããŒãã€ã¶ãŒãã¿ã€ã ã¢ãŠãããããŸã§ã®ã1 åã® ZCode ã¿ãŒã³ã®æå€§æéïŒããªç§ïŒã |
| `ZCODE_POLL_INTERVAL_MS` | `250` | `open-sse/executors/zcode.ts` | ZCode ã¿ãŒã³ã®å®äºã確èªããããŒãªã³ã°ééïŒããªç§ïŒã |
| `HERMES_HOME` | `~/.hermes` | `src/lib/cli-helper/config-generator/hermesHome.ts` | OmniRoute ã Hermes CLI èšå®ãèªã¿æžããã Hermes Agent ããŒã ãã£ã¬ã¯ããªãWindows ã§ Hermes PowerShell ã€ã³ã¹ããŒã©ãŒãèšå®ããç°å¢å€æ°ïŒ`%LOCALAPPDATA%\hermes`ïŒãšäžèŽããŸãã |
### CLI ãããã¡ã€ã«ã®èªååæ
ãããã®æ©èœãã©ã°ã¯ãªããã€ã³æ¹åŒã§ãããã©ã«ãã§ã¯ç¡å¹ã§ãã
CLI Code ããã·ã¥ããŒãããåãæ¿ããããšãã§ããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------- | ---------- | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_AUTO_SYNC_CODEX_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | ãããã€ããŒã¢ãã«ã®åæåŸãã©ã€ãã«ã¿ãã°ã«åºã¥ã㊠`~/.codex/*.config.toml` ãããã¡ã€ã«ãã¡ã€ã«ãèªåçã«æžãæããŸãã`CLI_ALLOW_CONFIG_WRITES` ãå¿
èŠã§ããã¢ã¯ãã£ããŸãã¯ããã©ã«ãã® Codex èšå®ãèªèšŒãCodex-lb èšå®ããããã€ããŒã®éžæã¯å€æŽãããŸããã |
| `OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | ãããã€ããŒã¢ãã«ã®åæåŸãã©ã€ãã«ã¿ãã°ã«åºã¥ã㊠`~/.claude/profiles//settings.json` Claude Code ãããã¡ã€ã«ãã¡ã€ã«ãèªåçã«æžãæããŸãã`CLI_ALLOW_CONFIG_WRITES` ãå¿
èŠã§ããã¢ã¯ãã£ããŸãã¯ããã©ã«ãã® Claude èšå®ãèªèšŒããããã€ããŒã®éžæã¯å€æŽãããŸããã |
### Docker ã®äŸ
```bash
# ãã¹ãã®ãã€ããªãã³ã³ããã«ããŠã³ããããã®å Žæã OmniRoute ã«æå®ããŸãïŒ
CLI_EXTRA_PATHS=/host-cli/bin
CLI_CONFIG_HOME=/host-home
CLI_ALLOW_CONFIG_WRITES=true
CLI_CLAUDE_BIN=/host-cli/bin/claude
```
`CLI_CONFIG_HOME` ã¯ããã¹ãå®éã«ãã¹ããããã€ã³ãããŠã³ããããŠããå Žåã«ã®ã¿æå¹ã§ãã`~/.codex:/host-home/.codex:rw` ã®ãããªããŠã³ããšçµã¿åãããŠãã ããïŒ`docker-compose.yml` ã® `host` ãããã¡ã€ã«ãåç
§ïŒãã³ã³ãããŠãŒã¶ãŒã®ããŒã å
ã«ããã€ã³ãããŠã³ãå
ã«ããªããã¹ã¯ç¡èŠãããŸãããã®å Žæã«æžã蟌ãã§ããã³ã³ããã®åäœææã«ç Žæ£ãããããã§ãã
ã€ã¡ãŒãžã¯ `USER node` ãšããŠå®è¡ããããããããŠã³ããããŠããªã `/root` ã¯æå¹ãªãªãŒããŒã©ã€ãå
ã§ã¯**ãããŸãã**ã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------------------- | ---------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_CONTAINER` | _(èªå)_ | `src/shared/utils/containerEnv.ts` | ã³ã³ããæ€åºã匷å¶çã«æå¹ïŒ`1`/`true`ïŒãŸãã¯ç¡å¹ïŒ`0`/`false`ïŒã«ããŸããèªåæ€åºã§èªèãããªãã©ã³ã¿ã€ã ã§ã®ã¿å¿
èŠã§ãã |
| `OMNIROUTE_ALLOW_CONTAINER_CONFIG_WRITE` | `false` | `src/shared/services/cliRuntime.ts` | ããŠã³ããããŠããªãã³ã³ãããã¹ãžã® CLI ããŒã«èšå®ã®æžã蟌ã¿ãèš±å¯ããŸããCLI ã§ã®åçã®æå®ã¯ `--allow-container-write` ã§ãã |
### CLI ãã€ããªïŒ`omniroute`ïŒçšãã«ããŒ
ãããã®å€æ°ã¯ã`omniroute` CLI ãã€ããªèªäœã®åäœã調æŽããŸãïŒäžèšã®ãµã€ãã«ãŒæ€åºãšã¯å¥ã§ãïŒã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------- | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_LANG` | _(ã·ã¹ãã )_ | `bin/cli/i18n.mjs` | CLI ã®åºåèšèªãåŒ·å¶æå®ããŸããBCP-47 ãã±ãŒã«ïŒäŸïŒ`en`ã`pt-BR`ïŒãæå®ããŸããã·ã¹ãã ã®ãã±ãŒã«ç°å¢å€æ°ïŒLC_ALLãLC_MESSAGESïŒããåªå
ãããŸãã |
| `OMNIROUTE_SHOW_LOG` | _(æªèšå®)_ | `bin/cli/runtime/processSupervisor.mjs` | ç£èŠã¢ãŒãã§ãµãŒããŒã® stdout/stderr ã端æ«ãžè»¢éããã«ã¯ã`1` ã«èšå®ããŸãã`omniroute serve` ã® `--log` ãã©ã°ãšåçã§ãã |
| `OMNIROUTE_CLI_TOKEN` | _(æªèšå®)_ | `bin/cli/api.mjs` | `x-omniroute-cli-token` ããããŒãšããŠæ¿å
¥ããããã·ã³èªèšŒããŒã¯ã³ã§ããã¿ã¹ã¯ 8.12 ã§èªåçæãããŸãã |
| `GEMINI_CLI_HOME` | _(æªèšå®)_ | `bin/cli/commands/setup-gemini.mjs` | æ°žç¶ç㪠Gemini ããŒã ã«ãŒãã§ããã¯ã³ã·ã§ããå®è¡ã§ã¯ãäžæçã«åé¢ãããããŒã ã䜿çšãããŸãã |
| `OMNIROUTE_CHILD_SIGNAL_TIMEOUT_MS` | `5000` | `bin/cli/commands/run.mjs` | ã·ã°ãã«ãåä¿¡ãã CLI åããã»ã¹ã匷å¶çµäºãããŸã§ã®ç¶äºæéïŒããªç§ïŒã§ãã |
| `OMNIROUTE_CLI_SKIP_DEFAULT_DATA_ENV` | _(æªèšå®)_ | `bin/omniroute.mjs` | æç€ºç㪠DATA_DIR ãšãšãã« `1` ã«èšå®ãããšãããã©ã«ããŠãŒã¶ãŒã®ããŒã¿ãã£ã¬ã¯ããªç°å¢ãã¡ã€ã«ãã¹ãããããŸãã |
| `OMNIROUTE_SYNC_TOKEN` | _(æªèšå®)_ | `bin/cli/commands/sync.mjs` | `omniroute sync bundle` çšã®åæããŒã¯ã³ã§ãïŒ`GET /api/sync/bundle` ã¯åæããŒã¯ã³ã®ã¿ãåãä»ããAPI ããŒã¯åãä»ããŸããïŒã`--token` ãšåçã§ãã |
| `OMNIROUTE_HTTP_TIMEOUT_MS` | `30000` | `bin/cli/api.mjs` | CLI â ãµãŒããŒãªã¯ãšã¹ãã®è©Šè¡ããšã® HTTP ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã§ãã |
| `OMNIROUTE_READY_TIMEOUT_MS` | `60000` | `bin/cli/utils/pid.mjs` | CLI ãã¿ã€ã ã¢ãŠãèŠåã衚瀺ãããŸã§ã«ããµãŒããŒã®ãã«ã¹ãšã³ããã€ã³ããåŸ
æ©ããæå€§æéïŒããªç§ïŒã§ããé
ãã³ãŒã«ãã¹ã¿ãŒãïŒäŸïŒWindowsïŒã«åœ¹ç«ã¡ãŸãã`--ready-timeout` ã§ãèšå®ã§ããŸãã |
| `OMNIROUTE_VERBOSE` | `0` | `bin/cli/api.mjs` | CLI ã³ãã³ãã®å®è¡äžã«ãå詊è¡ãããã¯ãªãã®èšºææ
å ±ã stderr ãžåºåããã«ã¯ã`1` ã«èšå®ããŸãã |
| `OMNIROUTE_PLUGIN_PATH` | _(æªèšå®)_ | `bin/cli/plugins.mjs` | CLI ãã©ã°ã€ã³æ€åºçšã®ã«ã¹ã¿ã ãã£ã¬ã¯ããªïŒ`omniroute-cmd-*` ããã±ãŒãžïŒã§ããæªèšå®ã®å Žåãããã©ã«ã㯠`~/.omniroute/plugins/` ã§ããCLI å°çšã§ããã`OMNIROUTE_PLUGINS_DIR`ïŒã»ã¯ã·ã§ã³ 2ïŒã§æå®ããããµãŒããŒåŽã®ãã©ã°ã€ã³ã¹ãã£ããŒã«ã¯æž¡ãããŸããã |
| `OMNIROUTE_NO_UPDATE_NOTIFIER` | _(æªèšå®)_ | `bin/omniroute.mjs` | 空ã§ãªãä»»æã®å€ãèšå®ãããšãããã»ã¹çµäºæã® CLI æŽæ°éç¥ãæå¶ããŸããCIãéé³ã¢ãŒããéããã¹ãåºåã¢ãŒãã§ã¯ããã®éç¥ã¯åå¥ã«ç¡å¹åããããŸãŸã§ãã |
| `OMNIROUTE_DOCTOR_LIVENESS_URL` | _(å°åº)_ | `bin/cli/commands/doctor.mjs` | `omniroute doctor` ã確èªãã Liveness URL ã§ããããã°ã©ã ããæå®ãã `livenessUrl` ãªãã·ã§ã³ãåªå
ãããããããªãå Žåã¯ããã®å€ããã®ãŸãŸäœ¿çšãããŸããæªèšå®ã®å ŽåãCLI ã¯ããŒã«ã«ããã·ã¥ããŒãã® `/api/health/degradation` ãšã³ããã€ã³ããå°åºããŸãã |
| `OMNIROUTE_PROVIDER_CATALOG_PATH` | `src/shared/constants/providers/` | `bin/cli/provider-catalog.mjs` | CLI ã®ãããã€ããŒã³ãã³ãã§äœ¿çšããããããã€ããŒã«ã¿ãã°ã®ãã¹ã§ããããã°ã©ã ããæå®ãã `catalogPath` ãªãã·ã§ã³ãåªå
ãããŸãã絶察ãã¹ã¯ãã®ãŸãŸäœ¿çšãããçžå¯Ÿãã¹ã¯ãããžã§ã¯ãã«ãŒããåºæºã«è§£æ±ºãããŸããæªèšå®ã®å ŽåãCLI ã¯ãããã€ããŒå®æ°ãã£ã¬ã¯ããªã䜿çšãããã©ãŒã«ããã¯ãšããŠåŸæ¥ã® `providers.ts` ãã¡ã€ã«ã䜿çšããŸãã |
| `OMNIROUTE_PROVIDER_TEST_MODEL` | _(ãããã€ããŒã®ããã©ã«ã)_ | `bin/cli/provider-test.mjs` | CLI ã®ãããã€ããŒæ¥ç¶ãã¹ãçšã®ã°ããŒãã«ãã©ãŒã«ããã¯ã¢ãã«ã§ããåªå
é äœã¯ãèšå®æžã¿ã®æ¥ç¶ã¢ãã«ããããã€ããŒåºæã®ã¢ãã«ãªãŒããŒã©ã€ãããã®å€ããããã€ããŒçµã¿èŸŒã¿ã®ãã¹ãã¢ãã«ã®é ã§ãã |
---
## 10. å
éšãšãŒãžã§ã³ãããã³MCP飿º
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ----------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_BASE_URL` | èªåæ€åº | `open-sse/mcp-server/server.ts` | MCP/A2AããŒã«ãOmniRouteãžã¢ã¯ã»ã¹ããããã®æç€ºçãªURLãlocalhostã®èªåæ€åºãäžæžãããŸãã |
| `OMNIROUTE_API_KEY` | _(æªèšå®)_ | MCP/A2Aã¢ãžã¥ãŒã« | å
éšMCPããŒã«ããã³A2Aã¹ãã«åŒã³åºãçšã®APIããŒã |
| `OMNIROUTE_API_KEY_ID` | _(æªèšå®)_ | `open-sse/mcp-server/audit.ts` | MCPç£æ»ãã°ã®åž°å±å
ã瀺ãããŒIDã |
| `ROUTER_API_KEY` | _(æªèšå®)_ | ã¬ã¬ã·ãŒ | `OMNIROUTE_API_KEY`ã®ã¬ã¬ã·ãŒãšã€ãªã¢ã¹ã |
| `OMNIROUTE_A2A_HISTORY_RETENTION_DAYS` | `30` | `src/lib/a2a/taskManager.ts` | æ¥æ¬¡ããŒãžã§è¡ãåé€ããããŸã§ãããŒã«ã«ããŒã¿ããŒã¹ã«A2Aã¿ã¹ã¯å±¥æŽãä¿æããæ¥æ°ãæªèšå®ãæ°å€ä»¥å€ããŸãã¯`<= 0`ã®å Žåã¯`30`ã«ãã©ãŒã«ããã¯ããŸãã |
| `OMNIROUTE_A2A_MEMORY_HITS` | `1` | `src/lib/a2a/taskExecution.ts` | A2Aã®ã¡ã¢ãªãããå¯èŠ³æž¬æ§æ©èœçšãã«ã¹ã€ããã`0`ã«èšå®ãããšãã¿ã¹ã¯ã®ã¡ã¢ãªæ³èµ·æ€çŽ¢ãå®å
šã«ã¹ãããããŸããæªèšå®ãå«ããã®ä»ã®å€ã§ã¯æå¹ãªãŸãŸã§ãã |
| `OMNIROUTE_ISSUE_AGENT_ENABLED` | `false` | `src/app/api/issue-agent/runs/route.ts` | ãªãã©ã€ã³ïŒããŒã«ã«ã®Issue Agentèšé²æžã¿ããªã¢ãŒãžãšã³ããã€ã³ããæå¹ã«ããŸããããŒã«ã«ã®èšé²æžã¿ããªã¢ãŒãžã¯ãŒã¯ãããŒãæç€ºçã«å®è¡ããå Žåãé€ããç¡å¹ã®ãŸãŸã«ããŠãã ããã |
| `OMNIROUTE_ISSUE_AGENT_TIMEOUT_MS` | _(æªèšå®)_ | `src/lib/issueAgent/execution.ts` | åäžã®Issue Agentèšé²æžã¿ããªã¢ãŒãžå®è¡ã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒãå
éšæå€§å€ã«å¶éãããæªèšå®ãŸãã¯ç¡å¹ãªå Žåã¯çµã¿èŸŒã¿ã®ããã©ã«ãå€ã«ãã©ãŒã«ããã¯ããŸãã |
| `OMNIROUTE_CONTEXT` | _(ã¢ã¯ãã£ããªã³ã³ããã¹ã)_ | `bin/cli/program.mjs`, `bin/cli/api.mjs` | `omniroute`ã³ãã³ãã®CLIãªã¢ãŒãã¢ãŒãçšã³ã³ããã¹ãïŒãããã¡ã€ã«ãããŒã«ã«ã®ã³ã³ããã¹ãã¹ãã¢å
ã®ã¢ã¯ãã£ããªã³ã³ããã¹ããäžæžãããŸãã`--context `ãšåçã§ãã |
| `OMNIROUTE_CONTEXT_KEYCHAIN_DISABLED` | `0` | `bin/cli/contexts.mjs` | CLIã³ã³ããã¹ãèªèšŒæ
å ±çšã®ãªãã·ã§ã³ã®`keytar` OSããŒãã§ãŒã³ããã¯ãšã³ããç¡å¹ã«ããŸããæå¹ã«ãããšãèªèšŒæ
å ±ã¯ã¢ãŒã`0600`ã®`config.json`ã«ä¿æãããCLIã¯ãã©ãŒã«ããã¯èŠåãäžåºŠã ãåºåããŸããæå³çãªãããã¬ã¹ïŒã³ã³ããéçšãæ³å®ããŠããŸãã |
| `OMNIROUTE_MCP_ENFORCE_SCOPES` | `false` | `open-sse/mcp-server/server.ts` | MCPããŒã«åŒã³åºãã«å¯ŸããŠã¹ã³ãŒãããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡ãé©çšããŸãã |
| `OMNIROUTE_MCP_SCOPES` | _(ãã¹ãŠ)_ | `open-sse/mcp-server/server.ts` | ã«ã³ãåºåãã®ã¹ã³ãŒãïŒ`admin`ã`combos`ã`health`ã`models`ã`routing`ã`budget`ã`metrics`ã`pricing`ã`memory`ã`skills`ã |
| `OMNIROUTE_MCP_COMPRESS_DESCRIPTIONS` | `false` | `open-sse/mcp-server/descriptionCompressor.ts` | ãããã§ã¹ããã·ãªã¢ã©ã€ãºããåã«MCPããŒã«ã®èª¬æãå§çž®ããŸããæå¹åããå€ïŒ`1`ã`true`ã`on`ã |
| `OMNIROUTE_MCP_DESCRIPTION_COMPRESSION` | `rtk` | `open-sse/mcp-server/descriptionCompressor.ts` | å§çž®ã¢ã«ãŽãªãºã ïŒãããã¡ã€ã«ãç¡å¹åããå€ïŒ`0`ã`false`ã`off`ã |
| `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` | `10000` | `open-sse/mcp-server/fetchTimeout.ts` | MCPãµãŒããŒå
éšã®ç®¡çèªã¿åãïŒãã«ã¹ãã¬ãžãªãšã³ã¹ãã³ã³ããã¯ã©ãŒã¿ã䜿çšéïŒã«å¯Ÿããäžæ¢ãŸã§ã®æéæ ïŒããªç§ïŒã |
| `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS` | `60000` | `open-sse/mcp-server/fetchTimeout.ts` | ãããã€ããŒãåŸ
æ©ãã MCP ãããïŒ`route_request`ã`web_search`ã`web_fetch`ïŒã®äžæãŸã§ã®æéïŒmsïŒã |
| `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | `src/lib/localCorpus/configured.ts` | ã¡ã¢ãªå
ã«ãã£ãã·ã¥ãããããŒã«ã«ã³ãŒãã¹ã®ã€ã³ããã¯ã¹ã€ã³ã¹ã¿ã³ã¹ã®æå€§æ°ïŒLRUãã€ã³ããã¯ã¹åãããã«ãŒããã£ã¬ã¯ããªããšã« 1 ã€ïŒãæå°å€ `1` ã«å¶éãããŸãã |
| `MODEL_SYNC_INTERVAL_HOURS` | `6` | `src/shared/services/modelSyncScheduler.ts` | ã¢ãã«ã«ã¿ãã°ã®åæééïŒæéïŒã |
| `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES` | `70` | `src/lib/usage/providerLimits.ts` | ãããã€ããŒã®ã¬ãŒãå¶éããã³ã¯ã©ãŒã¿ã®ããŒãªã³ã°ééã |
| `PROVIDER_LIMITS_SYNC_SPACING_MS` | `1500` | `src/lib/usage/providerLimits.ts` | äžæ¬åæã§é£ç¶ãã OAuth ã¯ã©ãŒã¿ååŸéã®ééïŒmsïŒãã¢ããã¹ããªãŒã ãžã®ã¢ã¯ã»ã¹ãæ¥å¢ããªããããOAuth æ¥ç¶ã¯äžåºŠã« 1 ã€ãã€ååŸãããŸãã`0` ã§ç¡å¹åïŒåæå®è¡ïŒã |
| `OMNIROUTE_QUOTA_FETCH_MIN_INTERVAL_MS` | `250` | `open-sse/services/quotaFetchThrottle.ts` | ãªã¯ãšã¹ãåäœã®ããªãã©ã€ãïŒç£èŠãã¹ã«ããããé£ç¶ããã¢ããã¹ããªãŒã ã¯ã©ãŒã¿ååŸéã®æå°ééïŒmsïŒãåæãããã¯ãŒã¯åŒã³åºãã®ééã空ãã1 ã€ã® IP äžã«ãã倿°ã®ã¢ã«ãŠã³ãããã¢ããã¹ããªãŒã ãžã®ã¢ã¯ã»ã¹ãæ¥å¢ããã®ãé²ããŸããCodexïŒ`/wham/usage`ïŒãDeepSeekãBailianïŒäž¡æ¹ã®ååŸç®æïŒãOpenCodeãCrof ã®ã¯ã©ãŒã¿ååŸåŠçã«çµã¿èŸŒãŸããŠããŸãïŒ#6009ã#6911ïŒãæ±çšã® `usage.ts::getUsageForProvider` ãã£ã¹ããããã¹ïŒgithub/glm/minimax/nanogpt/xai/etc.ïŒã¯ãŸã 察象å€ã§ãå¥é远跡ãããŠããŸãããã£ãã·ã¥ãããã«ã¯åœ±é¿ããŸããã`0` ã§ç¡å¹åã`0..5000` ã®ç¯å²ã«å¶éãããŸãã |
| `PROVIDER_LIMITS_POST_USAGE_REFRESH_DELAY_MS` | `5000` | `src/lib/usage/providerLimits.ts` | å®éã®äœ¿çšã€ãã³ãåŸã«ãããã€ããŒå¶éãæŽæ°ãããŸã§ã®é
å»¶ïŒmsïŒãã¢ããã¹ããªãŒã ã®ã¯ã©ãŒã¿ API ãæ¶è²»éãç»é²ããããã®æéã確ä¿ããŸãã |
| `OMNIROUTE_LOGIN_BROWSER_PATH` | èªåæ€åº | `open-sse/services/adobeFireflyBrowserLogin.ts` | Adobe Firefly ã®å¯Ÿè©±åãµã€ã³ã€ã³ããã³ç»é¢å€ã§ã®æŽæ°ã«äœ¿çšããããã·ã¹ãã ã® Chrome ãŸã㯠Edge å®è¡ãã¡ã€ã«ãžã®çµ¶å¯Ÿãã¹ã |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | æå¹ | `open-sse/services/adobeFireflySession.ts` | ã¢ã«ãŠã³ãåäœã® Chrome CDP ã»ãã·ã§ã³ã䜿çšããŠãIMS ããã³ãã©ãŠã¶ãŒãªã¹ã¯ç¶æ
ãææ°ã«ä¿ã¡ãŸãããã©ãŠã¶ãŒã«ããæŽæ°ãç¡å¹ã«ããã«ã¯ `0` ã«èšå®ããŸãã |
| `ADOBE_FIREFLY_SESSION_DISK` | æå¹ | `open-sse/services/adobeFireflySession.ts` | 修埩ããã Adobe ã»ãã·ã§ã³ã `DATA_DIR` é
äžã«æ°žç¶åããããã»ã¹ã®åèµ·ååŸãä¿æããŸããã»ãã·ã§ã³ãã¡ã¢ãªå
ã®ã¿ã«ä¿æããã«ã¯ `0` ã«èšå®ããŸãã |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly ã®çæéä¿¡éã®æå°ééïŒããªç§ïŒã`0` ã§ééèšå®ãç¡å¹ã«ããŸãã |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Adobe ãžã®éä¿¡ã 3 åæåããããšã«èšãã远å ã®åŸ
æ©æéïŒããªç§ïŒã |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyClient.ts` | Adobe ããäžæç㪠408 å¿çãåä¿¡ããåŸã®åºæ¬ããã¯ãªãæéïŒããªç§ïŒãæå€§ 5 åã®è©Šè¡ã«ããããéä¿¡ééãšçµã¿åãããŠé©çšãããŸãã |
| `OMNIROUTE_DISABLE_BACKGROUND_SERVICES` | `false` | `src/instrumentation-node.ts` | ãã¹ãŠã®ããã¯ã°ã©ãŠã³ããµãŒãã¹ïŒåæãäŸ¡æ Œèšå®ãã¢ãã«æŽæ°ïŒãç¡å¹ã«ããŸããCIïŒãã¹ãã«æçšã§ãã |
| `OMNIROUTE_HEADLESS` | _ïŒæªèšå®ïŒ_ | `src/lib/system/headless.ts` | ãããã·ãšã³ãžã³ã®ã¿ã§èµ·åããŸãããªãã·ã§ã³ã®ãµãã·ã¹ãã ãã¹ããããã`/dashboard` â 404 ãšãªããŸãã`omniroute serve --headless` ãšåãã§ãã[HEADLESS.md](../guides/HEADLESS.md) ãåç
§ããŠãã ããã |
| `OMNIROUTE_ENABLE_RUNTIME_BACKGROUND_TASKS` | _ïŒæªèšå®ïŒ_ | `src/lib/config/runtimeSettings.ts` | èªåãã¹ãã®æ€åºæã§ãããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã匷å¶çã«æå¹ã«ããŸãããã¹ãçšãã¥ãŒãªã¹ãã£ãã¯ãäžæžãããã«ã¯ `1` ã«èšå®ããŸãã |
| `OMNIROUTE_BUDGET_RESET_JOB_INTERVAL_MS` | `600000` | `src/lib/jobs/budgetResetJob.ts` | äºç®ãªã»ããã®ãã§ãã¯ééïŒããªç§ïŒãäžé㯠`10000`ã |
| `OMNIROUTE_CONNECTION_RECOVERY_INTERVAL_MS` | `60000` | `src/lib/quota/connectionRecovery.ts` | ããã¢ã¯ãã£ããªæ¥ç¶ã¯ãŒã«ããŠã³åŸ©æ§ã®å®è¡ééïŒããªç§ïŒïŒäžæç㪠`rate_limited_until` ã®æéãåããæ¥ç¶ãããªã¯ãšã¹ãã®ããããã¹å€ã§åæ€èšŒããŸããäžé㯠`5000`ã |
| `OMNIROUTE_DISABLE_CONNECTION_RECOVERY` | `false` | `src/lib/quota/connectionRecovery.ts` | ããã¢ã¯ãã£ããªæ¥ç¶ã¯ãŒã«ããŠã³åŸ©æ§ã¹ã±ãžã¥ãŒã©ãŒãç¡å¹ã«ããŸãïŒ`getProviderCredentials` ã§ã®é
延埩æ§ã¯åŒãç¶ãé©çšãããŸãïŒã |
| `OMNIROUTE_REASONING_CACHE_CLEANUP_INTERVAL_MS` | `1800000` | `src/lib/jobs/reasoningCacheCleanupJob.ts` | æšè«ãã£ãã·ã¥ã®ã¯ãªãŒã³ã¢ããééïŒããªç§ïŒãäžé㯠`60000`ã |
| `OMNIROUTE_REASONING_MIN_BUDGET` | _æªèšå®_ïŒç¡å¹ïŒ | `open-sse/services/reasoningTokenBuffer.ts` | æèã¢ãã«ã®åºåäºç®ã«å¯Ÿãããªããã€ã³ã®äžéïŒåŒã³åºãå
ã® `max_tokens` ã `[256, floor)` ã®ç¯å²ã«ããå ŽåãäžéãŸã§åŒãäžããããŸãïŒã¢ãã«ã®åºåäžéãŸã§ïŒãæªèšå®ã®å Žåãã¯ã©ã€ã¢ã³ãã®äºç®ã¯æ¡å€§ãããŸããïŒ#9507ïŒã |
| `OMNIROUTE_REASONING_EFFORT_PROBE_PROVIDERS` | _æªèšå®_ïŒç¡å¹ïŒ | `open-sse/services/learnedReasoningEffortCaps.ts` | ãªããã€ã³ã®ã«ã³ãåºåããããã€ã㌠IDïŒãŸã㯠`*`ïŒïŒ`reasoning_effort` ã® 400/422 ãšã©ãŒã«åãå
¥ãå¯èœãªã»ããã瀺ãããŠããªãå Žåã1 段éäœããã£ã¢ã§ 1 åå詊è¡ãïŒ`low` æªæºã«ã¯ããŸããïŒããããŒãã«å¿çããã£ãå Žåã«éããã®ãã£ã¢ãåŠç¿ããŸãïŒ#14895ïŒã |
| `OMNIROUTE_LOG_EXPORT_CRON` | `0 * * * *` | `src/lib/jobs/logExportJob.ts` | æå¹ãªãã¹ãŠã®ãã°ãšã¯ã¹ããŒãå
ãžåŠçãè¡ããåŒã³åºããã°ãšã¯ã¹ããŒããžã§ãã® Cron åŒïŒUTCïŒã |
| `OMNIROUTE_CONFIG_HOT_RELOAD_MS` | `5000` | `src/lib/config/hotReload.ts` | èšå®ããããªããŒãã®ããŒãªã³ã°ééïŒããªç§ïŒã`1000` æªæºã¯æåŠãããŸãã |
| `OMNIROUTE_DISABLE_REDIS_AUTH_CACHE` | _ïŒæå¹ïŒ_ | `src/lib/db/apiKeys.ts` | `1` ã«èšå®ãããšãRedis ããŒã¹ã® API ããŒèªèšŒãã£ãã·ã¥ããã€ãã¹ããŸãïŒDB èªã¿åãã匷å¶ããŸãïŒã |
| `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | `0` | `open-sse/services/compression/engines/rtk/filterLoader.ts` | 峿 Œãªçœ²åãã§ãã¯ãè¡ããããŠãŒã¶ãŒç®¡çã® RTK ãããžã§ã¯ããã£ã«ã¿ãŒã«ãŒã«ãä¿¡é ŒããŸãã |
| `OMNIROUTE_LITE_MAX_TOOL_LENGTH` | `2000` | `open-sse/services/compression/lite.ts` | `lite.maxToolLength` ãæªèšå®ã®å Žåã®ãLite ã«ããããã¢ã¯ãã£ããªããŒã«çµæåãè©°ãã®æåæ°äžéãç¯å²ã¯ 256ïœ1000000ãããã·ã¥ããŒãèšå®ããã®ç°å¢å€æ°ããåªå
ãããŸãã |
| `OMNI_COMPRESSION_WORKERS` | `2` | `open-sse/services/compression/compressionWorkerPool.ts` | åæå®è¡å¯èœãªåæ RTK/Caveman ã¯ãŒã«ãŒã®æå€§æ°ãè¶
éãããžã§ã㯠FIFO æ¹åŒã§åŸ
æ©ããŸãã |
| `OMNI_COMPRESSION_WORKER_TIMEOUT_MS` | `120000` | `open-sse/services/compression/compressionWorkerPool.ts` | ãžã§ãåäœã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒãã¿ã€ã ã¢ãŠãããã¯ãŒã«ãŒã¯çµäºããããªã¯ãšã¹ãã¯å€æŽãããªããŸãŸãã§ã€ã«ãªãŒãã³ããŸãã |
| `OMNI_COMPRESSION_WORKER_IDLE_MS` | `60000` | `open-sse/services/compression/compressionWorkerPool.ts` | æªäœ¿çšã®å§çž®ã¯ãŒã«ãŒãçµäºããããŸã§ã®ã¢ã€ãã«æéïŒããªç§ïŒã |
| `OMNI_COMPRESSION_WORKER_MAX_OLD_MB` | `1024` | `open-sse/services/compression/compressionWorkerPool.ts` | ãã¹ãŠã®ã¢ãŒãã«ããããåå§çž®ã¯ãŒã«ãŒã® V8 æ§äžä»£ããŒãäžéïŒMBïŒãäžé㯠`128`ããããè¶
ãããžã§ãã¯ãã²ãŒããŠã§ã€ã®ããŒããå¢å€§ããã代ããã«ãã§ã€ã«ãªãŒãã³ïŒéå§çž®ïŒããŸãã |
| `COMPRESSION_PIPELINE_BREAKER_ENABLED` | `false` | `open-sse/services/compression/pipelineEngineBreaker.ts` | T02 ã¹ã¿ãã¯åãã€ãã©ã€ã³ã®ãšã³ãžã³åäœãµãŒããããã¬ãŒã«ãŒã®ãã¹ã¿ãŒã¹ã€ããã**ãªããã€ã³ïŒããã©ã«ãã¯ãªãïŒ** â ãªã³ã®å Žåãè€æ°ã®ãªã¯ãšã¹ãã«ããã£ãŠç¹°ãè¿ãäŸå€ãã¹ããŒãããšã³ãžã³ã¯ãã¯ãŒã«ããŠã³æéäžã¹ãããïŒãã§ã€ã«ãªãŒãã³ïŒãããŸãããªãã®å ŽåãåŸæ¥ã®åäœãšãã€ãåäœã§åäžã§ãã |
| `COMPRESSION_PIPELINE_BREAKER_THRESHOLD` | `3` | `open-sse/services/compression/pipelineEngineBreaker.ts` | ãšã³ãžã³ã®ãã¬ãŒã«ãŒãéããŸã§ã®ããªã¯ãšã¹ãããŸããã é£ç¶å€±æåæ°ã |
| `COMPRESSION_PIPELINE_BREAKER_COOLDOWN_MS` | `30000` | `open-sse/services/compression/pipelineEngineBreaker.ts` | ãªãŒãã³ç¶æ
ã®ãšã³ãžã³ãããŒããªãŒãã³ã®ãããŒãåã«ã¹ãããããç¶ããæéïŒããªç§ïŒã |
| `COMPRESSION_CCR_RETRIEVAL_RAMP_FACTOR` | `2` | `open-sse/services/compression/engines/ccr/index.ts` | T08/H8 CCR ååŸãã£ãŒãããã¯ã®ã©ã³ãä¿æ°ïŒä¿åæžã¿ãããã¯ã®éå»ã®ååŸåæ°ã«å¿ããŠãæå¹ãª `minChars` ãç·åœ¢ã«åŒãäžããŸãïŒé »ç¹ã«ååŸãããã³ã³ãã³ãã»ã©å§çž®çãäœããªããååŸåæ°ã `>=3` ã®å Žåã¯å§çž®ãããŸããïŒã`1` ã«ãããšã©ã³ããç¡å¹ã«ãªããŸãïŒãããå€ã«éããå Žåã®ã¿äºå€çã«ã¹ãããïŒã |
| `COMPRESSION_CCR_DURABLE_STORE` | `true` | `open-sse/services/compression/engines/ccr/index.ts` | CCR æ°žç¶ãããã¯ã¹ãã¢ïŒ#9061ïŒãã€ã³ã¡ã¢ãªã¹ãã¢ã SQLite ã§ããã¯ã¢ããããLRU ã«ãããšãã¯ã·ã§ã³ãTTLãåèµ·åããŸãã¯å¥ã€ã³ã¹ã¿ã³ã¹ã«å°éããååŸãªã¯ãšã¹ããçºçããŠããããã¯ãä¿æããŸãããããã¯ãã¡ã¢ãªå
ã«ã®ã¿ä¿æããã«ã¯ `false` ã«èšå®ããŸãã512KB ãè¶
ãããããã¯ãšã¯ã©ãŠãã©ã³ã¿ã€ã ã§ã¯ãèšå®ã«é¢ä¿ãªãã¡ã¢ãªå
ã«ã®ã¿ä¿æãããŸãã |
| `COMPRESSION_PREFIX_FREEZE_ENABLED` | `false` | `open-sse/services/compression/prefixFreeze.ts` | T08/H5 䜿çšç¶æ³ã«åºã¥ããã¬ãã£ãã¯ã¹åºå®ã®ãã¹ã¿ãŒã¹ã€ããã**ãªããã€ã³ïŒããã©ã«ãã¯ãªãïŒ** â ãªã³ã«ãããšãèŠ³æž¬åæ°ããããå€ä»¥äžïŒ`>=`ïŒã®ã·ã¹ãã ããã³ããã¯å®å®ãããã£ãã·ã¥å¯èœãªãã¬ãã£ãã¯ã¹ãšããŠæ±ãããéçãã£ãã·ã¥ãã¥ãŒãªã¹ãã£ãã¯ã§æ€åºã§ããªããããã€ããŒã§ãå§çž®å¯Ÿè±¡ããé€å€ãããŸãïŒåºå®ã¯å
容ã*ä¿æ*ããã ãã§ã倿Žããããšã¯ãããŸããïŒã |
| `COMPRESSION_PREFIX_FREEZE_THRESHOLD` | `3` | `open-sse/services/compression/prefixFreeze.ts` | ã·ã¹ãã ããã³ãããåºå®ãããå®å®ãã¬ãã£ãã¯ã¹ãšããŠæ±ããããŸã§ã«å¿
èŠãªèŠ³æž¬åæ°ã |
| `OMNIROUTE_BOOTSTRAPPED` | `false` | `src/app/(dashboard)/dashboard/page.tsx` | åæã»ããã¢ããåŸã«ããŒãã¹ãã©ããã¹ã¯ãªããã«ãã£ãŠ `true` ã«èšå®ãããŸããã»ããã¢ãããŠã£ã¶ãŒãã®è¡šç€ºãå¶åŸ¡ããŸãã |
| `OMNIROUTE_ALLOW_BODY_PROJECT_OVERRIDE` | `0` | `open-sse/executors/antigravity.ts` | ãšã¹ã±ãŒããããïŒãªã¯ãšã¹ãæ¬æã«ãã Antigravity ã®ãããžã§ã¯ããã£ãŒã«ãã®äžæžããèš±å¯ããŸãã |
| `ANTIGRAVITY_CREDITS` | `off` | `open-sse/services/antigravityCredits.ts` | Google One AI ã¯ã¬ãžããããªã·ãŒïŒ`off` ã¯ã¯ã¬ãžãããæ¿å
¥ããã`retry` ã¯å¯Ÿè±¡ãšãªãã¯ã©ãŒã¿èµ·å ã® 429 ã®çºçåŸã«äžåºŠã ãæ¿å
¥ãã`always` ã¯æåã®ãªã¯ãšã¹ãã§æ¿å
¥ããŸãã |
| `ANTIGRAVITY_ALLOW_SIGNATURE_BYPASS` | `0` | `open-sse/translator/request/openai-to-gemini.ts` | ã¢ããã¹ããªãŒã ãå®éã®çœ²åãæåŠããå Žåã«ãAntigravity ãªã¯ãšã¹ããã©ã³ã¹ã¬ãŒã¿ãŒã峿 Œãª CLI ãªã¯ãšã¹ãçœ²åæ€èšŒãã¹ãããããããšãèš±å¯ããŸãïŒãããã°ïŒæ§åŒ CLI ã¢ãŒãïŒããŒã以å€ã®å€ã§ãã€ãã¹ãæå¹ã«ãªããŸãã |
| `AGY_TOKEN_FILE` | `~/.gemini/antigravity-cli/antigravity-oauth-token` | `src/app/api/providers/agy-auth/apply-local/route.ts` | ããŒã«ã«ãã°ã€ã³ã®èªåæ€åºã€ã³ããŒãã«äœ¿çšãã Antigravity CLIïŒagyïŒã®ããŒã¯ã³ãã¡ã€ã«ãã¹ãäžæžãããŸãã |
### OAuth CLI ããªããžïŒå
éšïŒ
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------- | ------------ | ------------------------------- | ------------------------------------------ |
| `OMNIROUTE_SERVER` | èªåæ€åº | `src/lib/oauth/config/index.ts` | CLIâOmniRoute èªèšŒããªããžã®ãµãŒã㌠URLã |
| `OMNIROUTE_TOKEN` | _ïŒæªèšå®ïŒ_ | `src/lib/oauth/config/index.ts` | CLI ããªããžã®èªèšŒããŒã¯ã³ã |
| `OMNIROUTE_USER_ID` | `cli` | `src/lib/oauth/config/index.ts` | CLI ããªããžã»ãã·ã§ã³ã®ãŠãŒã¶ãŒ IDã |
| `SERVER_URL` | _ïŒæªèšå®ïŒ_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_SERVER` ã®ã¬ã¬ã·ãŒãšã€ãªã¢ã¹ã |
| `CLI_TOKEN` | _ïŒæªèšå®ïŒ_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_TOKEN` ã®ã¬ã¬ã·ãŒãšã€ãªã¢ã¹ã |
| `CLI_USER_ID` | _ïŒæªèšå®ïŒ_ | `src/lib/oauth/config/index.ts` | `OMNIROUTE_USER_ID` ã®ã¬ã¬ã·ãŒãšã€ãªã¢ã¹ã |
---
## 11. OAuthãããã€ããŒã®èªèšŒæ
å ±
**localhostéçºçš**ã®çµã¿èŸŒã¿èªèšŒæ
å ±ããªã¢ãŒããããã€ã¡ã³ãã®å Žåã¯ãåãããã€ããŒã®éçºè
ã³ã³ãœãŒã«ã§ç¬èªã®ãã®ãç»é²ããŠãã ããã
| 倿° | ãããã€ã㌠| æ³šèš |
| :------------------------------------------ | :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CLAUDE_OAUTH_CLIENT_ID` | Claude Code (Anthropic) | ãããªãã¯ã¯ã©ã€ã¢ã³ã â ã·ãŒã¯ã¬ããã¯äžèŠã§ãã |
| `CLAUDE_CODE_REDIRECT_URI` | Claude Code | ãªãã€ã¬ã¯ãURIãäžæžãããŸããããã©ã«ã: `https://platform.claude.com/oauth/code/callback` |
| `CODEX_OAUTH_CLIENT_ID` | Codex / OpenAI | ãããªãã¯ã¯ã©ã€ã¢ã³ãã |
| `GEMINI_OAUTH_CLIENT_ID` | Gemini (Google) | äžèŽãã `_SECRET` ãå¿
èŠã§ãã |
| `GEMINI_OAUTH_CLIENT_SECRET` | Gemini (Google) | â |
| `KIMI_CODING_OAUTH_CLIENT_ID` | Kimi Coding (Moonshot) | ãããªãã¯ã¯ã©ã€ã¢ã³ãã |
| `MUSE_CODE_OAUTH_CLIENT_ID` | Muse Code (Meta) | ãããªãã¯Muse CLIããã€ã¹ãããŒã¯ã©ã€ã¢ã³ãIDã®ãªãã·ã§ã³ã®äžæžããçµã¿èŸŒã¿ã®ãããªãã¯ã¯ã©ã€ã¢ã³ãã䜿çšããã«ã¯æªèšå®ã®ãŸãŸã«ããŸãã |
| `ANTIGRAVITY_OAUTH_CLIENT_ID` | Antigravity (Google) | äžèŽãã `_SECRET` ãå¿
èŠã§ãã |
| `ANTIGRAVITY_OAUTH_CLIENT_SECRET` | Antigravity (Google) | â |
| `GITHUB_OAUTH_CLIENT_ID` | GitHub Copilot | ãããªãã¯ã¯ã©ã€ã¢ã³ãã |
| `GHE_COPILOT_OAUTH_CLIENT_ID` | GHE Copilot | GitHub Enterprise Copilotã®OAuthã¯ã©ã€ã¢ã³ãIDã®ãªãã·ã§ã³ã®äžæžããæªèšå®ã®å Žåã`GITHUB_OAUTH_CLIENT_ID`ã®ãããªãã¯ããã©ã«ãã«ãã©ãŒã«ããã¯ããŸãã |
| `COPILOT_INTEGRATION_ID` | GitHub Copilot | `Copilot-Integration-Id`ããã³`Editor-Plugin-Version`ããããŒã§éä¿¡ãããGitHub Copilotã¯ã©ã€ã¢ã³ãçµ±åIDã®ãªãã·ã§ã³ã®äžæžããããã©ã«ãã¯`copilot-developer-cli`ã§ãã |
| `WINDSURF_API_KEY` | Windsurf / Devin (v3.8) | æ¥ç¶ããšã®èªèšŒæ
å ±ãå©çšã§ããªãå Žåã«`open-sse/executors/devin-cli.ts`ã§äœ¿çšãããAPIããŒã®ãã©ãŒã«ããã¯ããªãã·ã§ã³ã |
| `CLI_DEVIN_BIN` | Devin CLI (v3.8) | Devin CLIãã€ã㪠(`devin`) ãžã®ã«ã¹ã¿ã ãã¹ã`open-sse/executors/devin-cli.ts`ã«ãã£ãŠè§£æ±ºãããŸãã |
| `GITLAB_DUO_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | GitLab Duoã®OAuthã¯ã©ã€ã¢ã³ãIDã`https://gitlab.com/-/profile/applications`ã§ããªãã€ã¬ã¯ãURIã`/callback`ãã¹ã³ãŒãã`api, read_user, openid, profile, email`ãšããŠã¢ããªãç»é²ããŠãã ããã`GITLAB_OAUTH_CLIENT_ID`ã«ãã©ãŒã«ããã¯ããŸãã |
| `GITLAB_DUO_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | GitLab Duoã®OAuthã¯ã©ã€ã¢ã³ãã·ãŒã¯ã¬ããããªãã·ã§ã³ â PKCEãããŒã§ã¯ã·ãŒã¯ã¬ããã¯äžèŠã§ãã`GITLAB_OAUTH_CLIENT_SECRET`ã«ãã©ãŒã«ããã¯ããŸãã |
| `GITLAB_DUO_BASE_URL` | GitLab Duo (v3.8) | GitLabããŒã¹URL (ã»ã«ããã¹ãåGitLab) ãäžæžãããŸããããã©ã«ãã¯`https://gitlab.com`ã§ãã`GITLAB_BASE_URL`ã«ãã©ãŒã«ããã¯ããŸãã |
| `GITLAB_BASE_URL` | GitLab Duo (v3.8) | `GITLAB_DUO_BASE_URL` ã®ã¬ã¬ã·ãŒãã©ãŒã«ããã¯ã`_DUO_` ããªã¢ã³ããèšå®ãããŠããªãå Žåã«äœ¿çšãããŸãã |
| `GITLAB_OAUTH_CLIENT_ID` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` ã§äœ¿çšããã `GITLAB_DUO_OAUTH_CLIENT_ID` ã®ã¬ã¬ã·ãŒãã©ãŒã«ããã¯ã |
| `GITLAB_OAUTH_CLIENT_SECRET` | GitLab Duo (v3.8) | `src/lib/oauth/constants/oauth.ts` ã§äœ¿çšããã `GITLAB_DUO_OAUTH_CLIENT_SECRET` ã®ã¬ã¬ã·ãŒãã©ãŒã«ããã¯ã |
| `QODER_OAUTH_CLIENT_SECRET` | Qoder | â |
| `QODER_OAUTH_AUTHORIZE_URL` | Qoder | Qoder OAuth ãæå¹ã«ããããã«èšå®ããŸãã |
| `QODER_OAUTH_TOKEN_URL` | Qoder | â |
| `QODER_OAUTH_USERINFO_URL` | Qoder | â |
| `QODER_OAUTH_CLIENT_ID` | Qoder | â |
| `QODER_PERSONAL_ACCESS_TOKEN` | Qoder | çŽæ¥ç㪠API ããŒãã©ãŒã«ãã㯠(OAuth ããã€ãã¹ããŸã)ã |
| `QODER_CLI_WORKSPACE` | Qoder | Qoder CLI ã®ã¯ãŒã¯ã¹ããŒã¹ IDã |
| `OMNIROUTE_QODER_WORKSPACE` | Qoder | `QODER_CLI_WORKSPACE` ã®ãšã€ãªã¢ã¹ã |
| `QODER_CLI_CONFIG_DIR` | Qoder | Qoder CLI ã®èšå®ãã£ã¬ã¯ããªãäžæžãããŸã (åé¢ããã PAT ã»ãã·ã§ã³ã§ããã©ãŠã¶ãã°ã€ã³ã®äžæžããåé¿ããŸã)ã |
| `BLACKBOX_WEB_VALIDATED_TOKEN` | Blackbox Web | `/api/chat` ã§ `validated` ãšããŠéä¿¡ããããã³ããšã³ãã® `tk` ããŒã¯ã³ãBlackbox ãããŒã¯ã³ã®äžèŽã匷å¶ããå Žåã«å¿
èŠã§ãããã以å€ã®å ŽåãOmniRoute ã¯ã©ã³ãã 㪠UUID ã«ãã©ãŒã«ããã¯ããŸããIssue #2252 ãåç
§ããŠãã ããã |
| `VISION_BRIDGE_BASE_URL` | Vision Bridge guardrail | Anthropic 以å€ã® vision-bridge åŒã³åºãçšã® OpenAI äºæããŒã¹ URLãã¬ã¬ã·ãŒãª OpenAI URL ç°å¢å€æ°ãŸã㯠api.openai.com ã«ããã©ã«ãèšå®ãããŸããOmniRoute ã® `/v1` ã»ã«ãã«ãŒãããŸãã¯ä»»æã® OpenAI äºæãšã³ããã€ã³ã (Gemini OpenAI äºæãOpenRouter) ãæããŸããIssue #2232ãURL ã OmniRoute èªèº«ã® `/v1` ã§ããå Žåãèšè¿°ãµãèŠæ±ã¯ `x-omniroute-admission-bypass: internal` ãéä¿¡ãã解決ãããã»ã«ãã«ãŒãèªèšŒæ
å ± (ããŒã«ã«ã¢ãŒãã§ã¯ `sk_omniroute` ã»ã³ããã«ããŸã㯠`OMNIROUTE_API_KEY` / `ROUTER_API_KEY` â #1350) ã§èªèšŒãããããã`REQUIRE_API_KEY=true` ã®ãããã€ãæ©èœããŸãã |
| `VISION_BRIDGE_API_KEY` | Vision Bridge guardrail | äžèš URL çšã® API ããŒãAnthropic 以å€ã® vision-bridge åŒã³åºãã®å Žåããããã€ããŒããšã® OpenAI / Google ç°å¢å€æ°ãäžæžãããŸããAnthropic ã¢ãã«ã¯å°çšã® Anthropic ããŒãã¹ãä¿æããŸããIssue #2232ã |
| `OMNIROUTE_VISION_BRIDGE_NEGATIVE_CACHE_MS` | Vision Bridge guardrail | ãå©çšå¯èœãªåè£ãªãããšããã«ãŒãã£ã³ã°çµæããã£ãã·ã¥ãããæé (ããªç§åäœãããã©ã«ã `30000`)ãç¡å¹ãªå€ãŸãã¯è² ã®å€ã¯ããã©ã«ãã«ãã©ãŒã«ããã¯ããŸãã`0` ã¯ãã¬ãã£ããã£ãã·ã¥ãç¡å¹ã«ããŸãããœãŒã¹: `src/lib/guardrails/visionBridgeRouter.ts`ã |
> [!WARNING]
>
> 1. [Google Cloud Console â èªèšŒæ
å ±](https://console.cloud.google.com/apis/credentials) ã«ç§»åããŸãã
> 2. OAuth 2.0 ã¯ã©ã€ã¢ã³ã ID (ã¿ã€ã: ãWeb ã¢ããªã±ãŒã·ã§ã³ã) ãäœæããŸãã
> 3. æ¿èªæžã¿ãªãã€ã¬ã¯ã URI ãšããŠãµãŒã㌠URL ã远å ããŸãã
> 4. `.env` å
ã®èªèšŒæ
å ±å€ã眮ãæããŸãã
---
## 12. ãããã€ããŒã® User-Agent ãªãŒããŒã©ã€ã
åã¢ããã¹ããªãŒã ãããã€ããŒã«éä¿¡ããã `User-Agent` ããããŒããªãŒããŒã©ã€ãããŸããããã¯ãexecutor åºåºã¯ã©ã¹ã«ãã£ãŠå®è¡æã«åçã«è§£æ±ºãããŸãã
```
process.env[`${PROVIDER_ID}_USER_AGENT`]
```
> **ãœãŒã¹:** `open-sse/executors/base.ts` â `buildHeaders()`
| 倿° | ããã©ã«ãå€ | æŽæ°ããã¿ã€ãã³ã° |
| -------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `CLAUDE_USER_AGENT` | `claude-cli/2.1.280 (external, cli)` | Anthropic ãæ°ãã CLI ããŒãžã§ã³ããªãªãŒã¹ãããšã |
| `CLAUDE_DISABLE_TOOL_NAME_CLOAK` | `false` | `executors/base.ts` + `executors/cliproxyapi.ts` | Anthropic åãã®äž¡æ¹ã®çµè·¯ïŒãã€ãã£ã OAuth ããã³ CLIProxyAPIïŒã§ããµãŒãããŒãã£è£œããŒãã¹ã®ããŒã«åããã®ãŸãŸ Anthropic ã«è»¢éããã«ã¯ã`1`/`true` ã«èšå®ããŸããããã©ã«ãã§ã¯ãexecutor 㯠Claude Code 以å€ã®ããŒã«åã«æ±ºå®è«çãªãšã€ãªã¢ã¹ãå²ãåœãŠïŒClaude Code ã®æšæºãããã³ã°ãååšããå Žåã¯ããã䜿çšãããã以å€ã®å Žå㯠PascalCase ã䜿çšïŒãã¬ã¹ãã³ã¹ã§ã¯ `_toolNameMap` ãä»ããŠå
ã«æ»ããŸããããã«ãããsnake_case ã®ããŒã«ã䜿çšããããŒãã¹ãããã£ã³ã¬ãŒããªã³ãããããµãŒãããŒãã£è£œã¯ã©ã€ã¢ã³ããšããŠæåŠãããã®ãé²ããŸãããããã°å°çšã§ãã |
| `CODEX_USER_AGENT` | `codex-cli/0.155.0 (Windows 10.0.26200; x64)` | OpenAI ã Codex CLI ãæŽæ°ãããšã |
| `CODEX_CLIENT_VERSION` | `0.155.0` | å®å
šãª UA æååãšã¯ç¬ç«ã㊠Codex ã¯ã©ã€ã¢ã³ãã®ããŒãžã§ã³ããªãŒããŒã©ã€ããã |
| `CLAUDE_CODE_CLIENT_VERSION` | `2.1.280` | `CLAUDE_USER_AGENT` ãšã¯ç¬ç«ããŠãéç¥ããã Claude Code ã®ããŒãžã§ã³ããªãŒããŒã©ã€ããããAnthropic ã¯äžéšã®ã¢ãã«ããã®å€ã«åºã¥ããŠå¶éããŸãïŒ#12417ïŒã |
| `CLAUDE_CODE_CLIENT_BUILD_REVISION` | `1e2` | OmniRoute ã Claude ã®è«æ±ãããã¯å
ã® `cc_version=` ã«ä»å ãã3æåã®ãµãã£ãã¯ã¹ããªãŒããŒã©ã€ãããã`CLAUDE_CODE_CLIENT_VERSION` ãšäœµããŠæŽæ°ããŠãã ãããããŒãžã§ã³ã ããåºå®ãããšãå®åšãããã€ããªãçæããªã `version.revision` ã®çµã¿åãããéç¥ãããŸãã |
| `GITHUB_COPILOT_CLI_VERSION` | `1.0.91` | `GITHUB_USER_AGENT` ãšã¯ç¬ç«ããŠãéç¥ããã Copilot CLI ã®ããŒãžã§ã³ããªãŒããŒã©ã€ããã |
| `GITHUB_USER_AGENT` | `GitHubCopilotChat/0.54.0` | GitHub Copilot Chat ãæŽæ°ããããšã |
| `ANTIGRAVITY_USER_AGENT` | `antigravity/2.0.1 darwin/arm64` | Antigravity IDE ãæŽæ°ããããšã |
| `KIRO_USER_AGENT` | `AWS-SDK-JS/3.0.0 kiro-ide/1.0.0` | Kiro IDE ãæŽæ°ããããšã |
| `KIRO_OAUTH_CLIENT_ID` | `kiro-cli` | Kiro ã®ãœãŒã·ã£ã«ããã€ã¹ã³ãŒãçš `clientId`ïŒå
¬é IDïŒããªãŒããŒã©ã€ããã |
| `KIRO_VERIFY_FULL_CRC` | `false` | ãªããã€ã³: Kiro ã€ãã³ãã¹ããªãŒã ã§ãã¬ãŒã ããšã®å®å
šãªã¡ãã»ãŒãž CRC æ€èšŒãè¡ãïŒç Žæããã¹ããªãŒã ã®ãããã°çšïŒ |
| `QODER_USER_AGENT` | `Qoder-Cli` | Qoder CLI ãæŽæ°ããããšã |
| `CURSOR_USER_AGENT` | `Cursor/3.3` | Cursor ãæŽæ°ããããšã |
> [!TIP]
> `{PROVIDER_ID}_USER_AGENT` ãšãããã¿ãŒã³ã䜿çšããŠã**ä»»æã®**ãããã€ããŒã« User-Agent ãªãŒããŒã©ã€ãã远å ã§ããŸããexecutor ã¯ç°å¢å€æ°åãåçã«æ§ç¯ããŸãã
---
## 13. CLI ãã£ã³ã¬ãŒããªã³ãäºææ§
æå¹ã«ãããšãOmniRoute 㯠HTTP ããããŒãš JSON ããã£ã®ãã£ãŒã«ããäžŠã¹æ¿ããå
¬åŒ CLI ããŒã«ã®æ£ç¢ºãªã·ã°ããã£ã«äžèŽãããŸããããã«ããããããã· IP ãç¶æããªãããã¢ã«ãŠã³ãããã©ã°ä»ãããããªã¹ã¯ã軜æžããŸãã
**ãœãŒã¹:** `open-sse/config/cliFingerprints.ts`ã`open-sse/executors/base.ts`
### ãããã€ããŒå¥
| 倿° | æå¹å | 广 |
| ------------------------ | ------ | ------------------------------------------- |
| `CLI_COMPAT_CODEX` | `=1` | Codex CLI ã®ãªã¯ãšã¹ãã·ã°ããã£ãæš¡å£ |
| `CLI_COMPAT_CLAUDE` | `=1` | Claude Code ã®ãªã¯ãšã¹ãã·ã°ããã£ãæš¡å£ |
| `CLI_COMPAT_GITHUB` | `=1` | GitHub Copilot ã®ãªã¯ãšã¹ãã·ã°ããã£ãæš¡å£ |
| `CLI_COMPAT_ANTIGRAVITY` | `=1` | Antigravity ã®ãªã¯ãšã¹ãã·ã°ããã£ãæš¡å£ |
| `CLI_COMPAT_CURSOR` | `=1` | Cursor ã®ãªã¯ãšã¹ãã·ã°ããã£ãæš¡å£ |
| `CLI_COMPAT_KIMI_CODING` | `=1` | Kimi Coding ã®ãªã¯ãšã¹ãã·ã°ããã£ãæš¡å£ |
| `CLI_COMPAT_KILOCODE` | `=1` | Kilo Code ã®ãªã¯ãšã¹ãã·ã°ããã£ãæš¡å£ |
| `CLI_COMPAT_CLINE` | `=1` | Cline ã®ãªã¯ãšã¹ãã·ã°ããã£ãæš¡å£ |
### ã°ããŒãã«
| 倿° | æå¹å | 广 |
| ---------------- | ------ | ------------------------------------------------------------------------ |
| `CLI_COMPAT_ALL` | `=1` | **ãã¹ãŠã®**ãããã€ããŒã§ãã£ã³ã¬ãŒããªã³ãäºææ§ãäžæ¬ã§æå¹ã«ããŸãã |
### Kimi Coding CLI ã® ID ãªãŒããŒã©ã€ã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ----------------------- | -------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------ |
| `KIMI_CLI_VERSION` | `1.36.0` | `src/lib/oauth/providers/kimi-coding.ts` | OAuth/API åŒã³åºãæã«éä¿¡ããã Kimi CLI ã®ããŒãžã§ã³ãäžæžãããŸãã |
| `KIMI_CODING_DEVICE_ID` | _ïŒååŸæžã¿ã®ããã©ã«ãïŒ_ | `src/lib/oauth/providers/kimi-coding.ts` | ã¯ã©ã€ã¢ã³ãããããŒã§äœ¿çšããããååŸæžã¿ã® Kimi ããã€ã¹ ID ãäžæžãããŸãã |
> [!NOTE]
> ãã®æ©èœã¯ User-Agent ãªãŒããŒã©ã€ãïŒÂ§12ïŒãšäœµçšã§ããŸãããã£ã³ã¬ãŒããªã³ãã·ã¹ãã ã¯ããããŒãšããã£ãã£ãŒã«ãã®é åºãåŠçããUser-Agent ãªãŒããŒã©ã€ãã¯ç¹å®ã® UA æååãåŠçããŸããäž¡æ¹ãåå¥ã«æå¹åã§ããŸãã
---
## 14. API ããŒãããã€ããŒ
çŽæ¥èªèšŒã䜿çšãããããã€ããŒåãã® API ããŒã§ãã**æšå¥šèšå®:** Dashboard â Providers â Add API Keyã
Docker ãŸãã¯ãããã¬ã¹ãããã€ã§ã¯ãä»£æ¿ææ®µãšããŠç°å¢å€æ°ã䜿çšããŠèšå®ã§ããŸãã
èªèããããã¿ãŒã³: `{PROVIDER_ID}_API_KEY`
| 倿° | ãããã€ã㌠|
| ------------------ | ------------------------------------------------------------- |
| `DEEPSEEK_API_KEY` | DeepSeek |
| `NVIDIA_API_KEY` | NVIDIA NIM |
| `JINA_AI_API_KEY` | Jina AIïŒFoundation API + Reader ãã©ãŒã«ããã¯ïŒ |
| `JINA_API_KEY` | Jina AIïŒ`JINA_AI_API_KEY` ã®ãšã€ãªã¢ã¹ïŒ |
| `GEMINI_API_KEY` | GeminiïŒGoogle AI StudioïŒã®åã蟌㿠+ ãã£ãããã©ãŒã«ãã㯠|
| `GOOGLE_API_KEY` | GeminiïŒ`GEMINI_API_KEY` ã®ãšã€ãªã¢ã¹ïŒ |
> [!NOTE]
> GroqãxAIãMistralãPerplexityãTogether AIãFireworksãCerebrasãCohereãNebiusãQianfan ã®éç㪠`${PROVIDER}_API_KEY` ãšã³ããªã¯ãã©ã³ã¿ã€ã ã§èªã¿èŸŒãŸããªããªã£ããããv3.8.0 ã§åé€ãããŸããããããã®ãããã€ããŒã¯ãDashboard / `data/provider-credentials.json` / æå·å DB ã®ã¿ã«äŸåããŸããç§»è¡æé ã«ã€ããŠã¯ããã®ããã¥ã¡ã³ãã®æ«å°Ÿã«ãã _ç£æ»: å逿žã¿ / ç¡å¹ãªå€æ°_ ã»ã¯ã·ã§ã³ãåç
§ããŠãã ããã
> [!TIP]
> Dashboard ã§èšå®ãããããŒã¯ SQLite ã«æå·åããŠä¿åãããç°å¢å€æ°ãããåªå
ãããŸãã
>
> **Jina:** Dashboard ã« `jina-ai`ïŒãŸãã¯å
±æã® `jina-reader`ïŒæ¥ç¶ãååšããå Žåã`jina-ai/âŠ` ã®åã蟌ã¿ãåã©ã³ãã³ã°ãåé¡ãã»ã°ã¡ã³ãåãããã³ `jina-search` ã§ã¯ãã¯ã©ã¹ã¿ãŒã®ç°å¢å€æ°ããŒã«èª²éãããããšã¯**ãããŸãã**ã`getProviderCredentials` ã¯å
çå
è¶³æ¹åŒã§ãã`JINA_AI_API_KEY` / `JINA_API_KEY` ã¯ã䜿çšå¯èœãª Dashboard ããŒãååšããªãå Žåã«ã®ã¿äœ¿çšãããŸããåŒã³åºããã°ã§ã¯ãç°å¢å€æ°ãžã®ãã©ãŒã«ããã¯ã `connection_id=env:JINA_AI_API_KEY` ãšããŠèšé²ãããŸããReader ã«ãŒãïŒ`jina-reader`ã`r.jina.ai`ïŒã `/v1/embeddings` ãŸã㯠`/v1/rerank` ãåŠçããããšã¯ãããŸããã
>
> **Gemini:** `gemini/gemini-embedding-2`ïŒãšã€ãªã¢ã¹ `google/gemini-embedding-2`ïŒã¯ãDashboard ã® `gemini` æ¥ç¶ãæåã«äœ¿çšããŸãã`GEMINI_API_KEY` / `GOOGLE_API_KEY` ã¯ã䜿çšå¯èœãª Dashboard ããŒãååšããªãå Žåã«ã®ã¿äœ¿çšãããŸããåŒã³åºããã°ã§ã¯ãç°å¢å€æ°ãžã®ãã©ãŒã«ããã¯ã `connection_id=env:GEMINI_API_KEY` ãšããŠèšé²ãããŸãããã€ãã£ãã®ãã«ãã¢ãŒãã«ãã©ãã£ãã¯ã§ã¯ã`:embedContent` / `:batchEmbedContents` ã«å¯Ÿã㊠`x-goog-api-key` ã䜿çšãããŸããN åã® OpenAI `input` é
ç®ã¯ N åã®ãã¯ãã«ã«ãªããŸãã
---
## 15. ã¿ã€ã ã¢ãŠãèšå®
ãã¹ãŠã®å€ã®åäœã¯**ããªç§**ã§ããèšå®ã®è§£æ±ºã¯ `src/shared/utils/runtimeTimeouts.ts` ã«éçŽãããŠããŸãã
### ã¿ã€ã ã¢ãŠãã®éå±€
```
REQUEST_TIMEOUT_MSïŒã°ããŒãã«ãªãŒããŒã©ã€ãïŒ
âââ FETCH_TIMEOUT_MSïŒã¢ããã¹ããªãŒã ãããã€ããŒåŒã³åºããããã©ã«ã: 600000ïŒ
â âââ FETCH_HEADERS_TIMEOUT_MSïŒFETCH_TIMEOUT_MS ããç¶æ¿ïŒ
â âââ FETCH_BODY_TIMEOUT_MSïŒFETCH_TIMEOUT_MS ããç¶æ¿ïŒ
â âââ TLS_CLIENT_TIMEOUT_MSïŒFETCH_TIMEOUT_MS ããç¶æ¿ïŒ
â â âââ TLS_FIRST_BYTE_WATCHDOG_MSïŒç¬ç«ãããã©ã«ã: 10000ïŒ
â âââ RESPONSES_FIRST_BYTE_TIMEOUT_MSïŒç¬ç«ãããã©ã«ã: 15000ïŒ
â âââ OPENCODE_RESPONSES_HEADERS_WAIT_MSïŒç¬ç«ãããã©ã«ã: 0 = ç¡å¹ãæšå¥š: 30000ïŒ
â âââ OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONSïŒç¬ç«ãããã©ã«ã: 2ïŒ
â âââ FETCH_CONNECT_TIMEOUT_MSïŒç¬ç«ãããã©ã«ã: 30000ïŒ
â âââ FETCH_KEEPALIVE_TIMEOUT_MSïŒç¬ç«ãããã©ã«ã: 4000ïŒ
âââ STREAM_IDLE_TIMEOUT_MSïŒREQUEST_TIMEOUT_MS ããç¶æ¿ãããã©ã«ã: 600000ïŒ
âââ STREAM_ACTIVE_TIMEOUT_MSïŒç¬ç«ãããã©ã«ã: 1260000ã0 ã§ç¡å¹ïŒ
âââ STREAM_READINESS_TIMEOUT_MSïŒREQUEST_TIMEOUT_MS ããç¶æ¿ãããã©ã«ã: 80000ïŒ
âââ STREAM_READINESS_MAX_TIMEOUT_MSïŒé©å¿çãªæºååŸ
æ©æéã®å»¶é·ã«äžéãèšå®ãããã©ã«ã: 180000ïŒ
âââ API_BRIDGE_PROXY_TIMEOUT_MSïŒREQUEST_TIMEOUT_MS ããç¶æ¿ãããã©ã«ã: 30000ïŒ
âââ API_BRIDGE_SERVER_REQUEST_TIMEOUT_MSïŒæŽŸçãããã©ã«ã: 300000ïŒ
âââ API_BRIDGE_SERVER_HEADERS_TIMEOUT_MSïŒããã©ã«ã: 60000ïŒ
âââ API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MSïŒããã©ã«ã: 5000ïŒ
âââ API_BRIDGE_SERVER_SOCKET_TIMEOUT_MSïŒããã©ã«ã: 0 = ç¡å¹ïŒ
```
| 倿° | ããã©ã«ã | 説æ |
| ----------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `REQUEST_TIMEOUT_MS` | _ïŒæªèšå®ïŒ_ | ã°ããŒãã«ã·ã§ãŒãã«ãã â `FETCH_TIMEOUT_MS` ãš `STREAM_IDLE_TIMEOUT_MS` ã®äž¡æ¹ã®ããã©ã«ãå€ãäžæžãããŸãã |
| `FETCH_TIMEOUT_MS` | `600000` | äžæµãããã€ããŒåŒã³åºãã«å¯Ÿãã HTTP ãªã¯ãšã¹ãå
šäœã®ã¿ã€ã ã¢ãŠãã |
| `STREAM_IDLE_TIMEOUT_MS` | `600000` | äžæ¢ãããŸã§ã«èš±å®¹ããããäžæµããã®çãã€ãéã®æå€§ç¡éä¿¡æéãæ¡åŒµæèã¢ãã«ã 90 ç§ãè¶
ããŠåæ¢ããããšã¯ã»ãšãã©ãããŸããã |
| `STREAM_ACTIVE_TIMEOUT_MS` | `1260000` | ã¢ã¯ãã£ã㪠SSE ã¹ããªãŒã ã®åèšåç¶æéã®äžéãäžæµãããã€ããåä¿¡ããŠããªã»ãããããã`REQUEST_TIMEOUT_MS` ãšã¯ç¬ç«ããŠããŸããã¬ãžã¹ããªå
ã§æå€§ã®ã¢ãã«å¥ `timeoutMs`ïŒ1200000ãCodexïŒã« 60000 ã®äœè£ãå ããŠç®åºãããŠãããããèš±å¯ãããå
šäºç®ã䜿çšããã¢ãã«ãåçéäžã§åŒ·å¶çµäºãããããšã¯ãããŸãããç¡å¹ã«ããã«ã¯ `0` ã«èšå®ããŸãã |
| `OMNIROUTE_SSE_COMMENTS` | _ïŒç¡å¹ïŒ_ | OmniRoute ã SSE ã® `:` ã³ã¡ã³ãè¡ïŒäŸ: `: keepalive` ããŒãããŒãã `x-omniroute-*` ã¡ã¿ããŒã¿ãã¬ãŒã©ãŒïŒãéä¿¡ã§ãããã©ããã峿 Œãª OpenAI äºæã¯ã©ã€ã¢ã³ãã¯ãã¹ãŠã® SSE è¡ã«å¯Ÿã㊠JSON.parse ãå®è¡ãã`:` ã³ã¡ã³ãã§ã¯ã©ãã·ã¥ãããããããã©ã«ãã§ã¯ç¡å¹ã§ãïŒ#10524ïŒã`data:` ããŒãããŒãã«ã¯åœ±é¿ããŸãããå床æå¹ã«ããã«ã¯ `on`/`true`/`1`/`yes` ãèšå®ããŸãã`open-sse/utils/sseHeartbeat.ts` ã§äœ¿çšãããŸãã |
| `SSE_COALESCE_MS` | `0`ïŒãªãïŒ | ãªããã€ã³: Claude ã¯ã©ã€ã¢ã³ãã«éä¿¡ãããé£ç¶ãã Claude `content_block_delta` ã€ãã³ãïŒãããã¯ã€ã³ããã¯ã¹ãšãã«ã¿åãåããã®ïŒãããŒãžããå°ãªããšã N ããªç§ããšã«ãã©ãã·ã¥ããŸããæ
å ±ã®æå€±ã¯ãããŸããã`signature_delta` ãšå¢çã€ãã³ãã¯æ±ºããŠããŒãžãããŸããã以äžã®åå¥å€æ°ãèšå®ãããŠããªãéãããã¹ãŠã®ãã«ã¿åã«é©çšãããŸãã`open-sse/utils/sseDeltaCoalesce.ts` ã§äœ¿çšãããŸãã |
| `SSE_COALESCE_THINKING_MS` | `0`ïŒãªãïŒ | `thinking_delta` ã«å¯Ÿãã `SSE_COALESCE_MS` ã®åå¥ãªãŒããŒã©ã€ãã |
| `SSE_COALESCE_TEXT_MS` | `0`ïŒãªãïŒ | `text_delta` ã«å¯Ÿãã `SSE_COALESCE_MS` ã®åå¥ãªãŒããŒã©ã€ãã |
| `SSE_COALESCE_INPUT_JSON_MS` | `0`ïŒãªãïŒ | `input_json_delta` ã«å¯Ÿãã `SSE_COALESCE_MS` ã®åå¥ãªãŒããŒã©ã€ãã |
| `SSE_FRAME_COALESCE_MS` | `0`ïŒãªãïŒ | ãªããã€ã³: N ããªç§ä»¥å
ã«è»¢éããã SSE ãã¬ãŒã ããããåããã¯ã©ã€ã¢ã³ããžã® 1 åã®æžã蟌ã¿ã«ãŸãšããŸããæåã®ãã¬ãŒã ãšçµäºãã¬ãŒã ïŒ`[DONE]`ã`message_stop`ã`error`ã`response.completed`/`failed`/`incomplete`ïŒã¯æ±ºããŠé
å»¶ããŸããããããåŠçãæå¹ãªå ŽåãITL ã¯ãããééãæž¬å®ããŸãã`open-sse/utils/sseOutputSink.ts` ã§äœ¿çšãããŸãã |
| `SSE_STALL_WATCHDOG` | `timer` | ã¹ããªãŒãã³ã°ã¬ã¹ãã³ã¹ã®ãã€ã忢ãç£èŠãããŠã©ããããã°ã®å®è£
ã`timer` ã¯äžæµãã£ã³ã¯ããšã« 1 ã€ã®ã¿ã€ããŒãåèšå®ããŸãïŒåæ¢äºç®ã®æç¹ã§æ£ç¢ºã«çºç«ïŒã`interval` ã¯ã¹ããªãŒã ããšã« 1 ã€ã®ãã§ãã¯ãç¶æããåšæã¯ `clamp(budget/4, 1s, 5s)` ãšãªãããã忢ã¯äºç® + åšæä»¥å
ã«æ€åºãããŸãã`open-sse/utils/streamStallWatchdog.ts` ã§äœ¿çšãããŸãã |
| `STREAM_READINESS_TIMEOUT_MS` | `80000` | ping 以å€ã®æåã® SSE ã€ãã³ããåä¿¡ãããŸã§ã®æéã`REQUEST_TIMEOUT_MS` ãèšå®ãããŠããå Žåã¯ããã®å€ãç¶æ¿ããŸãã |
| `STREAM_READINESS_MAX_TIMEOUT_MS` | `180000` | å€§èŠæš¡ãããŒã«å€çšããŸãã¯é«åºŠãªæšè«ã䌎ãã¹ããªãŒãã³ã°ãªã¯ãšã¹ãã«å¯Ÿãããé©å¿åã®ååã€ãã³ãæºååŸ
æ©æéã®äžéã |
| `OMNIROUTE_AGENT_GOAL_POLICY_ENABLED` | `true` | `/goal` ãã¥ãŒãªã¹ãã£ãã¯ã®ãã«ã¹ã€ãããæ€åºãå®å
šã«ç¡å¹ã«ããã«ã¯ `false`/`0`/`off` ã«èšå®ããŸããããã«ããããªã¯ãšã¹ãæ¬æãããããŒã«ãã£ãŠæºåã¿ã€ã ã¢ãŠããšã¹ããªãŒã 埩æ§ãå»¶é·ãããããšããªããªããã¯ã©ã€ã¢ã³ãå¶åŸ¡ã«ããã¿ã€ã ã¢ãŠãå¢å¹
ã軜æžã§ããŸãã |
| `OMNIROUTE_AGENT_GOAL_READINESS_MAX_TIMEOUT_MS` | `600000` | æ€åºããã `/goal` ãšãŒãžã§ã³ãå®è¡ããŸã㯠`x-omniroute-agent-goal` ã«ãã£ãŠåŒ·å¶ããããªã¯ãšã¹ãã«å¯Ÿãããååã€ãã³ãæºååŸ
æ©æéã®äžéã |
| `OMNIROUTE_AGENT_GOAL_STREAM_RECOVERY` | `true` | æ€åºããã `/goal` ãšãŒãžã§ã³ãå®è¡ã«å¯ŸããŠãæ©æã¹ããªãŒã 埩æ§ãèªåçã«æå¹ã«ããŸããgoal åºæã®ãªããã€ã³ãç¡å¹ã«ããã«ã¯ `false`/`0`/`off` ã«èšå®ããŸããããã¯ãªãã¬ãŒã¿ãŒã®ããã©ã«ãã«åŸ©æ§æ©èœã远å ããããšããã§ãããæç€ºç㪠`STREAM_RECOVERY_ENABLED`/DB èšå®ã«ãããªããã¢ãŠããäžæžãããããšã¯ãããŸããã |
| `OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS` | `true` | OpenAI SDK ã® `responses.stream()` ã§ 502 ãšã©ãŒãçºçãããéæšæºã® `codex.*` SSE ã€ãã³ãïŒäŸ: `codex.rate_limits`ïŒãé€å»ããŸããããã©ã«ãã§æå¹ã§ãïŒ#11014ïŒã転éããã«ã¯ `0`/`false`/`no`/`off` ãèšå®ããŸãã |
| `OMNIROUTE_CODEX_APPSERVER_WS` | _ïŒæªèšå®ïŒ_ | ãªããã€ã³ã® Codex app-server ãã©ã³ã¹ããŒããããŒã«ã«ã® `codex app-server` ãµã€ãã«ãŒã® WebSocket ãšã³ããã€ã³ãïŒ`ws://`/`wss://`ïŒãããŒã¯ã³ãšãšãã«èšå®ãããšãCodex ãªã¯ãšã¹ã㯠HTTP Responses API ã®ä»£ããã« JSON-RPC ãä»ããŠãµã€ãã«ãŒãžã«ãŒãã£ã³ã°ãããŸããæ¥ç¶ããšã« `providerSpecificData.codexAppServerUrl` ã䜿çšããŠèšå®ããããšãã§ããŸãã`open-sse/executors/codex/appServerConfig.ts` ã§äœ¿çšãããŸãã |
| `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` | _ïŒæªèšå®ïŒ_ | app-server ã«æç€ºããã€ã³ã©ã€ã³ã®ã±ã€ãããªãã£ããŒã¯ã³ãŸã㯠bearer ããŒã¯ã³ãæ¥ç¶ããšã®ãªãŒããŒã©ã€ã: `providerSpecificData.codexAppServerToken`ã |
| `OMNIROUTE_CODEX_APPSERVER_WS_TOKEN_FILE` | _(æªèšå®)_ | app-server ã®æ©èœããŒã¯ã³ïŒ`codex app-server --ws-token-file` ããååŸïŒãä¿æãããã¡ã€ã«ãžã®ãã¹ã`OMNIROUTE_CODEX_APPSERVER_WS_TOKEN` ãæªèšå®ã®å Žåã«äœ¿çšãããŸããæ¥ç¶ããšã®ãªãŒããŒã©ã€ã: `providerSpecificData.codexAppServerTokenFile`ã |
| `OMNIROUTE_CODEX_APPSERVER_CWD` | `/tmp` | app-server ã®ã¿ãŒã³ãå®è¡ãããäœæ¥ãã£ã¬ã¯ããªãæ¥ç¶ããšã®ãªãŒããŒã©ã€ã: `providerSpecificData.codexAppServerCwd`ã |
| `OMNIROUTE_CODEX_APPSERVER_APPROVAL` | _(æªèšå®)_ | app-server ã®ã¿ãŒã³ã«æž¡ãããæ¿èªããªã·ãŒïŒäŸ: `never`ã`on-request`ïŒãæ¥ç¶ããšã®ãªãŒããŒã©ã€ã: `providerSpecificData.codexAppServerApprovalPolicy`ã |
| `OMNIROUTE_CODEX_APPSERVER_SANDBOX` | _(æªèšå®)_ | app-server ã®ã¿ãŒã³ã«æž¡ããããµã³ãããã¯ã¹ããªã·ãŒïŒäŸ: `read-only`ã`workspace-write`ã`danger-full-access`ïŒãæªèšå®ã®å Žåãexecutor ã®ããã©ã«ã㯠`workspace-write` ã§ãïŒã»ãã¥ãªãã£åŒ·åæžã¿ã以å㯠`danger-full-access`ïŒãæ¥ç¶ããšã®ãªãŒããŒã©ã€ã: `providerSpecificData.codexAppServerSandbox`ã |
| `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE` | `false` | app-server èªäœã®æ¿èªããã³ããïŒãã¹ãäžã§ã®ã³ãã³ãïŒãã¡ã€ã«ïŒæš©éã®å®è¡ïŒãèªåæ¿èªããŸããããã©ã«ãã§ã¯ãªãã§ãããã³ããã¯èªåçã«æåŠãããŸããããŒãã¹ã®ããŒã«åŒã³åºãã«ã¯åœ±é¿ããŸããïŒå¥ã® `item/tool/call` ãã¹ã¹ã«ãŒãçµç±ããŸãïŒã`true`/`1`/`yes` ãæå®ã§ããŸããæ¥ç¶ããšã®ãªãŒããŒã©ã€ã: `providerSpecificData.codexAppServerAutoApprove`ã |
| `FETCH_HEADERS_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | ã¬ã¹ãã³ã¹ããããŒãåä¿¡ãããŸã§ã®æéã |
| `OMNIROUTE_FETCH_START_TIMEOUT_CAP_MS` | `110000` | ã¹ããªãŒãã³ã°ãªã¯ãšã¹ãã§ã¬ã¹ãã³ã¹ããããŒãåŸ
ã€æå€§æéïŒmsïŒã`0` ã«ãããšãã®äžéãç¡å¹ã«ãªããŸãããããã€ããŒã§ `fetchStartTimeoutCapMs` ãæç€ºçã«æå®ãããŠããå Žåã¯ããã¡ããåªå
ãããŸãã |
| `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` | `30000` (30ç§) | ãããã·ã䜿çšããªãçŽæ¥æ¥ç¶ã®å詊è¡ã§ãã¬ã¹ãã³ã¹éå§ãåŸ
ã€æå€§æéïŒmsïŒãã¿ã€ã ã¢ãŠããããšãæ°ãããœã±ããã§1åå詊è¡ããŸãã`0` ã«èšå®ãããšå¶éãç¡å¹ã«ãªãã以åã®åäœãç¶æãããŸãã |
| `OMNIROUTE_LOCAL_DIRECT_HEADERS_TIMEOUT_MS` | `300000` (5å) | ã¿ãŒã²ãããã¹ãããã©ã€ããŒãïŒLANïŒã«ãŒãããã¯ïŒäŸ: `localhost`ã`host.docker.internal`ã`192.168.x.x`ïŒã§ããããããã·ã䜿çšããªãçŽæ¥æ¥ç¶ã®è©Šè¡ã«å¯Ÿããã¬ã¹ãã³ã¹éå§åŸ
æ©æéã®äžéïŒmsïŒãããã«ããããã€ãã£ã Ollama ã®ã³ãŒã«ãã¹ã¿ãŒããäžèšã®ããã©ã«ã30ç§ã§æã¡åãããã®ãé²ããŸããäžéãšããŠæ©èœããå®éã®åŸ
æ©æéã«ã¯ããã®å€ãš `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` ã®ãã¡å€§ããæ¹ã䜿çšãããŸãã`0` ãŸãã¯ç¡å¹ãªå€ãæå®ãããšãããŒã«ã«ã®äžéãè§£é€ãããŸãããªã¢ãŒããã¹ãã«ã¯åœ±é¿ããŸããã |
| `OMNIROUTE_DIRECT_RESPONSE_RETRY_TIMEOUT_MS` | `600000` (10å) | äžèšã®ããŒã«æžã¿æ¥ç¶ã§ã®è©Šè¡ãã¬ã¹ãã³ã¹éå§ã¿ã€ã ã¢ãŠãã«ãªã£ãåŸãæ°ãããœã±ããã§è¡ã RETRY 詊è¡ã®äžéïŒmsïŒïŒ#13703ïŒãåŒã³åºãå
ãç¬èªã®æéã·ã°ãã«ïŒè§£æ±ºæžã¿ã®æ¥ç¶ïŒã¢ãã«ïŒãããã€ããŒïŒ`FETCH_TIMEOUT_MS` ã®ã«ã¹ã±ãŒãïŒããã§ã«èšå®ããŠããå Žåã«ã®ã¿é©çšãããŸããæ³å®ãããçµè·¯ã§ã¯ããã®ã·ã°ãã«ãå®éã®å¶éãšãªã£ãŠå
ã«çºç«ãããããããã¯äžåŸã®äžéã§ã¯ãªããäœè£ãæãããå®å
šçã§ããããããªãå Žåãå詊è¡ã§ã¯ããŒã«æžã¿æ¥ç¶ã§ã®è©Šè¡ãšåãçã `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS` ãŠã£ã³ããŠãåå©çšãããæ£åžžã§ã TTFB ãé
ãæšè«ã¢ãã«ã§ 504 ãçºçããŠããŸãããäžèšã®äžåŸã®äžéãäžåãããšã¯ãããŸãããåŒã³åºãå
ãæéã·ã°ãã«ããŸã£ããæå®ããŠããªãå Žåãå詊è¡ã§ã¯äžåŸã®äžéããã®ãŸãŸç¶æãããŸãã |
| `FETCH_BODY_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | ã¬ã¹ãã³ã¹æ¬æå
šäœãåä¿¡ãããŸã§ã®æéã |
| `FETCH_CONNECT_TIMEOUT_MS` | `30000` | TCP æ¥ç¶ç¢ºç«ã®ã¿ã€ã ã¢ãŠãã |
| `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Keep-Alive ãœã±ããã®ã¢ã€ãã«ã¿ã€ã ã¢ãŠãã |
| `TLS_CLIENT_TIMEOUT_MS` | = `FETCH_TIMEOUT_MS` | TLS ãã£ã³ã¬ãŒããªã³ããããã·ïŒwreq-jsïŒã®ã¿ã€ã ã¢ãŠãã |
| `TLS_FIRST_BYTE_WATCHDOG_MS` | `10000` | wreq-js TLS ãã£ã³ã¬ãŒããªã³ããã©ã³ã¹ããŒãã®æ¬æã«éå®ããŠãæåã®ãã€ããåä¿¡ãããŸã§ã®æéãå¶éããŸãã`TLS_CLIENT_TIMEOUT_MS` ã ãã§ã¯ãããããŒãå°çãããšããã«è§£æ±ºããããããæ¬æã®åæ¢ãæ€åºã§ããŸããïŒ#12656ïŒãã¿ã€ã ã¢ãŠããããš wreq ãªãŒããŒããã£ã³ã»ã«ããçŽæ¥æ¥ç¶ïŒãããã·ãã£ã¹ãããã£ãŒã«ãã©ãŒã«ããã¯ããŸãã`0` ã«ãããšãŠã©ããããã°ãç¡å¹ã«ãªããŸãã |
| `RESPONSES_FIRST_BYTE_TIMEOUT_MS` | `15000` | OpenCode executor ã®ã¿ãã〠`OPENCODE_RESPONSES_STALL_ROTATION` æ©èœãã©ã°ããªã³ã®å ŽåïŒããã©ã«ãã¯ãªãïŒã®ã¿é©çšãããŸããããããŒåä¿¡åŸãã¹ããªãŒãã³ã°ããã Responses å¿çã®æ¬æã®æåã®ãã€ããåŸ
ã€æéãå¶éããŸãïŒ#13484ïŒãResponses ã¹ããªãŒã 㯠`response.created` ã§éå§ãããããããã®æéãè¶
ããŠäœãåä¿¡ããªãå Žåã¯åæ¢ãšã¿ãªãããŸãããã®ã¢ã«ãŠã³ãã¯ã¯ãŒã«ããŠã³ããããªã¯ãšã¹ãã¯æ¬¡ã®ã¢ã«ãŠã³ããž1åããŒããŒã·ã§ã³ãããŸãã2åç®ã®åæ¢ã§ã¯å³åº§ã«å€±æããŸãã`0` ã«ãããšããã©ã°ããªã³ã§ããã®ã¬ãŒããç¡å¹ã«ãªããŸãã |
| `OPENCODE_RESPONSES_HEADERS_WAIT_MS` | `0` (= ãªã) | OpenCode executor ã®ã¿: å¥ã®ã¢ã«ãŠã³ãããŸã å©çšå¯èœãªå Žåãã¹ããªãŒãã³ã°ããã Responses åŒã³åºãã§äžæµã®ã¬ã¹ãã³ã¹ããããŒãåŸ
ã€æéãå¶éããŸãããã¥ãŒã«å
¥ã£ããªã¯ãšã¹ãã¯ããããŒåŸ
æ©æéå
šäœã«ããã£ãŠåŸ
æ©ãããæ¬¡ãžé²ã¿ãŸãã圱é¿ãåããã®ã¯ã¹ããªãŒãã³ã°ããã Responses åŒã³åºãã®ã¿ã§ãïŒResponses ã¹ããªãŒã 㯠`response.created` ã§éå§ããããããããã§äœãåä¿¡ããªãç¶æ
ã¯çæäžã§ã¯ãªããã¥ãŒåŸ
ã¡ãæå³ããŸãïŒãchat completions ãšéã¹ããªãŒãã³ã°åŒã³åºãã«ã¯åœ±é¿ããããã®æéæ ã¯å®å¹ç㪠fetch-start ã®äžéãççž®ããã ãã§ãå»¶é·ããããšã¯ãããŸãããæå¹åããå Žåã®æšå¥šå€: `30000`ã`0` ã«ãããšç¡å¹ã«ãªããŸãã |
| `OPENCODE_RESPONSES_HEADERS_WAIT_MAX_ROTATIONS` | `2` | OpenCode executor ã®ã¿: äžèšã®ããããŒåŸ
æ©äžéã«éããéããªã¯ãšã¹ãããšã«æ¬¡ã®ã¢ã«ãŠã³ããžåãæ¿ããããåæ°ãæåŸã«æ®ã£ãã¢ã«ãŠã³ãã«ã¯ãåžžã«ããããŒåŸ
æ©æéå
šäœãå²ãåœãŠãããŸãã |
| `OPENCODE_PARK_AND_RESUME` | `false` | OpenCode executor ã®ã¿: äžæç㪠429 ãç¹°ãè¿ãããå ŽåïŒãŸãã¯æ°ããããŒã«è² è·ããŒã«ãŒãããå ŽåïŒãããŒãããŒããç¶æããªãããªã¯ãšã¹ããä¿çããããªãŒãå
šäœãžãã¡ã³ã¢ãŠããã代ããã«ãæå€§ 3 åã®ã¢ã«ãŠã³ããé çªã«è©Šããäžéä»ãã®ã¬ã°ã 1 ååå®è¡ããŸã (#13924)ãããã©ã«ãã§ã¯ç¡å¹ã§ããç¡å¹æã¯ãåŸæ¥ã©ãã 429 ããšã«æ¬¡ã®ã¢ã«ãŠã³ããžåãæ¿ããŸãã |
| `OPENCODE_PARK_REPLAY_SERVE_SETASIDE` | `false` | OpenCode executor ã®ã¿: park-and-resume ã®åå®è¡ã¬ã°ã§ãã¯ãŒã«ããŠã³æžã¿ã®ãã¹ãŠã®ã¢ã«ãŠã³ãããããã·æåŠã¡ã¢ãªã«ãã£ãŠé€å€ãããŠããå Žåãäœãåå®è¡ããªã代ããã«ããããã®ã¢ã«ãŠã³ãã䜿çšããŸã (#14851ã#14750 ã®ãã©ããŒã¢ãã)ãããã©ã«ãã§ã¯ç¡å¹ã§ãããã®å Žåã#14750 ããåãšåæ§ã«ãåå®è¡ã¬ã°ã¯ç©ºã«ãªããŸãã |
| `STREAM_READINESS_STALL_RETRY` | `false` | ã¹ããªãŒãã³ã°ãã£ããã®ã¿: æåã®ã¢ããã¹ããªãŒã æ¬æã䜿çšå¯èœãªã€ãã³ããçæããåã«åæ¢ããå Žåãåãã«ãŒãã£ã³ã°ãã¹ãéããŠãåãæºåå®äºåŸ
æ©æéã®äžéã䜿çšããã¢ã«ãŠã³ãã«ããã«ãã£ãç§ããã«ãäžéä»ãã® 2 åç®ã®è©Šè¡ã 1 åå®è¡ããŸããããã©ã«ãã§ã¯ç¡å¹ã§ããç¡å¹æã¯ãæåã®æ¬æã忢ãããšå詊è¡ããã«ãªã¯ãšã¹ãã倱æããŸãã |
| `OPENCODE_POOL_RESELECT` | `false` | OpenCode executor ã®ã¿: éåžžã®ããŒã«ã³ã³ããã¹ãäžã«ãããããã·ãªãã¢ã«ãŠã³ãã§ãéä¿¡å
å¥ã«ãã±ããåããããããã€ããŒãã 429 ãè¿ãããåŸãåãéä¿¡å
ã¢ãã¬ã¹ãå詊è¡ãã代ããã«ã次ã®è©Šè¡çšãšããŠå¥ã®ã¡ã³ããŒãæ¥ç¶ããŒã«ã«èŠæ±ããŸããããã¯é åºä»ãã®ã¿ãè¡ããé€å€ã¯ããŸãããããŒã«ã䜿ãåã£ãå Žåã¯çŸåšã®åäœãç¶æããŸããããã©ã«ãã§ã¯ç¡å¹ã§ããç¡å¹æã¯ãåŸæ¥ã©ãã 429 ããšã«æ¬¡ã®ã¢ã«ãŠã³ããžåãæ¿ããŸãã |
| `OPENCODE_POOL_STRAIN_MARKER_PATH` | _(æªèšå®)_ | OpenCode executor ã®ã¿: ä¿çåã«èªã¿åãããŒã«è² è·ããŒã«ãŒã®ãã¹ãäžæžãããŸãïŒ`{since, reason, ttl_s}`ãããã©ã«ã㯠`/tmp/opencode-pool-strain.json`ã#13924ïŒãæ°ããããŒã«ãŒãããå Žåã¯åéèšããã«ä¿çããããŒã«ãŒããªããå€ãå Žåã¯ããŒã¹ãã«ãŠã³ã¿ãŒãžãã©ãŒã«ããã¯ããŸãã |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | `30000` | `/v1` ããªããžãªã¯ãšã¹ãã®ãããã·ãããã¿ã€ã ã¢ãŠãã |
| `FIRECRAWL_BASE_URL` | `https://api.firecrawl.dev` | Firecrawl Web ãã§ãã executor ã®æ¥ç¶å
ãã»ã«ããã¹ãã€ã³ã¹ã¿ã³ã¹ã«èšå®ããŸãïŒã¯ã©ãŠãå€ã§ã¯ API ããŒã¯ä»»æïŒã |
| `FIRECRAWL_TIMEOUT_MS` | `30000` | Firecrawl Web ãã§ãã executor ã®ãªã¯ãšã¹ãåäœã®ã¿ã€ã ã¢ãŠãã |
| `TAVILY_BASE_URL` | _(æªèšå®)_ | Tavily `/usage` ã¯ã©ãŒã¿ååŸæ©èœïŒProvider LimitsïŒã®ããŒã¹ URLã`api.tavily.com` ãæããŠããå Žåã¯ç¡èŠãããŸããæªèšå®ã®å Žåã¯æ¥ç¶ã®ããŒã¹ URL ã«ãã©ãŒã«ããã¯ããŸãã |
| `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `300000` | ããªããžã®ãµãŒããŒãªã¯ãšã¹ãå
šäœã®ã¿ã€ã ã¢ãŠãã |
| `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | ããªããžçµç±ã§ã¬ã¹ãã³ã¹ããããŒãéä¿¡ãããŸã§ã®æéã |
| `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | ããªããžã® keep-alive ã¢ã€ãã«ã¿ã€ã ã¢ãŠãã |
| `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Raw ãœã±ããã®ã¿ã€ã ã¢ãŠãïŒ0 = ç¡å¹ïŒã |
| `SHUTDOWN_TIMEOUT_MS` | `30000` | SIGTERM/SIGINT ã®åä¿¡åŸã匷å¶çµäºãããŸã§ã®ç¶äºæéã |
| `OMNIROUTE_DEFAULT_FETCH_TIMEOUT_MS` | `120000` | `FETCH_TIMEOUT_MS` ãæªèšå®ã®å Žåã« `src/shared/utils/fetchTimeout.ts` ã§äœ¿çšããããã©ãŒã«ããã¯å€ã |
| `OMNIROUTE_PROVIDER_PROBE_TIMEOUT_MS` | `8000` | `src/shared/network/safeOutboundFetch.ts` ã® `validationRead` ããã³ `modelsProbe` ããªã»ããã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒãäœéãªãšã³ããã€ã³ãïŒCerebrasãCloudflare AIãGroqïŒã§ã¯ãããã·ã¥ããŒãäžã§ active/error ã®ç¶æ
ãäžå®å®ã«åãæ¿ããã®ãé²ãããããã®å€ãå¢ãããŠãã ãããç¡å¹ãªå€ïŒ<1000ïŒãŸãã¯æ°å€ä»¥å€ã®å€ã®å Žå㯠8000ms ã«ãã©ãŒã«ããã¯ããŸãã |
| `OMNIROUTE_RELAY_FETCH_TIMEOUT_MS` | `25000` | `open-sse/utils/proxyFetch.ts` ã®ãªã¬ãŒåºæã®ãã§ããã¿ã€ã ã¢ãŠã (#9158)ã忢ãããªã¬ãŒã¯ãã¯ã©ã€ã¢ã³ã/ãšãŒãžã§ã³ãã®ã¿ã€ã ã¢ãŠãïŒçŽ 30 ç§ïŒããåã«å€±æãããå¿
èŠããããŸããããã«ãããåŒã³åºãå
ã«ã¯æ±çšçãªã¢ããã¹ããªãŒã ã¿ã€ã ã¢ãŠãã§ã¯ãªãããªã¬ãŒåºæã®å€±æãéç¥ãããŸããåžžã«å
ã«çºçããããã`29000` ãäžéã§ãã |
| `OMNIROUTE_RETRY_BACKOFF_MS` | `10` | `open-sse/utils/proxyFetch.ts` ã® direct/relay/proxy ã® 1 åå詊è¡ãã¹ã§å
±æãããå詊è¡ããã¯ãªã (#9158)ã`0` = 峿å詊è¡ã |
| `OMNIROUTE_CLAUDE_TLS_TIMEOUT_MS` | `60000` | ãã€ãã£ã wreq-js ãªã¯ãšã¹ãã®ã¿ã€ã ã¢ãŠãïŒ`claudeTlsClient.ts`ïŒã |
| `OMNIROUTE_CLAUDE_TLS_GRACE_MS` | `10000` | ãã€ãã£ãã¿ã€ã ã¢ãŠãã«è¿œå ããããJS åŽã®çµ¶å¯ŸããŒããããã©ã€ã³ã®ç¶äºæéã |
| `OMNIROUTE_PPLX_TLS_TIMEOUT_MS` | `30000` | ãã€ãã£ã wreq-js ãªã¯ãšã¹ãã®ã¿ã€ã ã¢ãŠãïŒ`perplexityTlsClient.ts`ïŒã |
| `OMNIROUTE_PPLX_TLS_GRACE_MS` | `10000` | ãã€ãã£ãã¿ã€ã ã¢ãŠãã«è¿œå ããããJS åŽã®çµ¶å¯ŸçãªããŒããããã©ã€ã³ç¶äºæéã |
| `OMNIROUTE_PPLX_SEARCH_HINT` | `0` (ãªã) | åŒã³åºãå
ã®ã·ã¹ãã ã¡ãã»ãŒãžã«ãçµã¿èŸŒã¿ã®ãŠã§ãæ€çŽ¢æ©èœããããŸããæ€çŽ¢çµæã䜿çšããŠè³ªåã«çŽæ¥åçããŠãã ããããã远å ããŸãïŒ`perplexity-web/protocol.ts`ïŒãããã©ã«ãã§ã¯ãªãã§ã â Perplexity ã¯ãããã«ããæ€çŽ¢ãå®è¡ãããã®æãã³ãŒãã£ã³ã°ã¯ã©ã€ã¢ã³ããžã®å¿çã«ã¡ã¿ã³ã¡ã³ããšããŠæŒããããã§ããå
ã«æ»ãã«ã¯ `1`/`true`/`yes`/`on` ãèšå®ããŸãã |
| `OMNIROUTE_GROK_TLS_TIMEOUT_MS` | `60000` | ãã€ãã£ã wreq-js ãªã¯ãšã¹ãã¿ã€ã ã¢ãŠãïŒ`grokTlsClient.ts`ïŒã |
| `OMNIROUTE_GROK_TLS_GRACE_MS` | `10000` | ãã€ãã£ãã¿ã€ã ã¢ãŠãã«è¿œå ããããJS åŽã®çµ¶å¯ŸçãªããŒããããã©ã€ã³ç¶äºæéã |
| `OMNIROUTE_NOTION_TLS_TIMEOUT_MS` | `30000` | ãã€ãã£ã wreq-js ãªã¯ãšã¹ãã¿ã€ã ã¢ãŠãïŒ`notionTlsClient.ts`ïŒã`notion-web` ã¯é·æéã®çæã«å¯Ÿå¿ããããããªã¯ãšã¹ãããšã« `180000` ãžåŒãäžããŸãã |
| `OMNIROUTE_NOTION_TLS_GRACE_MS` | `10000` | ãã€ãã£ãã¿ã€ã ã¢ãŠãã«è¿œå ããããJS åŽã®çµ¶å¯ŸçãªããŒããããã©ã€ã³ç¶äºæéã |
| `OMNIROUTE_BROWSER_POOL` | `on` | ãã©ãŠã¶ã䜿çšãããŠã§ã Cookie ãã£ããåãã®å
±æ Playwright ãã©ãŠã¶ããŒã«ïŒ`browserPool.ts`ïŒãç¡å¹ã«ããã«ã¯ `off` ãèšå®ããŸãã |
| `OBSCURA_BIN` | `auto-detect` | ãã©ãŠã¶ããŒã«ããã³ Cloudflare Playground ãšã°ãŒãã¥ãŒã¿ãŒããã©ã€ããªãšã³ãžã³ãšããŠäœ¿çšãã `obscura` ãã€ããªãžã®ãã¹ïŒ`open-sse/services/obscura.ts`ïŒãæªèšå®ã®å Žåã¯ã·ã¹ãã ã® PATH ããèªåæ€åºãããŸãã |
| `OBSCURA_CDP_ENDPOINT` | _(æªèšå®)_ | Obscura ãèµ·åãã代ããã«ããã§ã«å®è¡äžã® ObscuraïŒ`http://host:port`ïŒãæå®ããŸãããã®ã¢ãžã¥ãŒã«ã¯ãã®ããã»ã¹ã管çããŸããïŒ`open-sse/services/obscura.ts`ïŒã |
| `OBSCURA_PORT` | `ã©ã³ãã ãªç©ºãããŒã` | èµ·åããã `obscura serve` ã®æç€ºçãªããŒããæªèšå®ã®å Žåã¯ç©ºãããŒããèªåçã«éžæãããŸãïŒ`open-sse/services/obscura.ts`ïŒã |
| `WEB_COOKIE_USE_BROWSER` | `0` | ãŠã§ã Cookie ãã£ãããªã¯ãšã¹ãã§ãã©ãŠã¶ã䜿çšããçµè·¯ãéžæããŸãïŒ`browserBackedChat.ts`ïŒãæå¹ã«ããã«ã¯ `1` ãèšå®ããŸãã |
| `KIMI_WEB_BASE_URL` | `https://www.kimi.ai` | Kimi WebïŒåœéç kimi.ai Connect-RPCïŒãšã°ãŒãã¥ãŒã¿ãŒã®ããŒã¹ URLïŒ`kimi-web.ts`ïŒããã©ãŒïŒãããã·ãšã³ããã€ã³ãã䜿çšããå Žåã«ã®ã¿äžæžãããŠãã ããã |
| `KIMI_WEB_CHAT_URL` | `/apiv2/kimi.gateway.chat.v1.ChatService/Chat` | Kimi Web ãšã°ãŒãã¥ãŒã¿ãŒã®å®å
šãªãã£ãããšã³ããã€ã³ãïŒ`kimi-web.ts`ïŒã |
| `OMNIROUTE_LOGIN_BROWSER_PATH` | _(èªåæ€åº)_ | Adobe Firefly ã®å¯Ÿè©±åãã©ãŠã¶ãµã€ã³ã€ã³ã«äœ¿çšãããã·ã¹ãã ã® Chrome/Edge å®è¡å¯èœãã¡ã€ã«ãžã®ãã¹ïŒ`adobeFireflyBrowserLogin.ts`ïŒãOS ããšã®èªåæ€åºããåªå
ãããŸãã |
| `OMNIROUTE_STANDALONE_DIR` | _.build/ ã¹ã¿ã³ãã¢ãã³åºå_ | ãã«ãåŸã®åäžé
眮ã¹ãããã§äœ¿çšãããã¹ã¿ã³ãã¢ãã³åºåãã£ã¬ã¯ããªã®ããã«ãæã®äžæžãèšå®ïŒ`scripts/build/colocate-standalone.mjs`ïŒãã©ã³ã¿ã€ã ã§ã¯ãªãããã«ãããŒã«åãã§ãã |
ã³ã³ãã¿ãŒã²ãããžã®è©Šè¡ã¯ã解決æžã¿ã®ã¢ããã¹ããªãŒã ãªã¯ãšã¹ãã¿ã€ã ã¢ãŠãïŒ`FETCH_TIMEOUT_MS`ããŸãã¯
ãã§ããã®ããã©ã«ãå€ãæå®ããŠããå Žå㯠`REQUEST_TIMEOUT_MS`ïŒãç¶æ¿ããŸããã³ã³ãã
ã³ã³ãã®ããã©ã«ãããŸãã¯ãããã€ããŒã®ãªãŒããŒã©ã€ãã§ `targetTimeoutMs` ãèšå®ããã®ã¯ã
ã³ã³ãã®ãã©ãŒã«ããã¯ãé«éåããå Žåã®ã¿ã«ããŠãã ãããçŸåšã®ã¢ããã¹ããªãŒã ã¿ã€ã ã¢ãŠããè¶
ããå€ã¯ã
ã¢ããã¹ããªãŒã ã¿ã€ã ã¢ãŠããŸã§ã«å¶éãããŸãã
`comboTimeoutMs` ã¯ããã§ã€ã«ãªãŒããŒå
å
šäœã«é©çšããããã³ã³ãå
šäœã®ç¬ç«ãã宿éäºç®ã§ãã
ååŸ©åæ°ãç¡å¶éã«ä¿ã€ã«ã¯ãæªèšå®ãŸã㯠`0` ã®ãŸãŸã«ããŠãã ããïŒ`comboPredicates.ts` ã«
ããŒãã³ãŒãããã 10 åéã®ãã³ã°åæ¢åŠçã¯åŒãç¶ãé©çšãããŸãïŒãæ£ã®å€ãæå®ãããšãã³ã³ãã§ã¯ãã®å€ã
ãã®å®å
šçã«çœ®ãæãããŸããé
ãæåã®ã¿ãŒã²ããã®åŸã§ããã§ã€ã«ãªãŒããŒããæéã確ä¿ã§ããããã
`comboTimeoutMs` 㯠`targetTimeoutMs` ããé·ãèšå®ããŠãã ããã
### ãµãŒããããã¬ãŒã«ãŒã®ãããå€
ãããã€ããŒã¬ãã«ã®ãµãŒããããã¬ãŒã«ãŒèª¿æŽãããã©ã«ãå€ã¯ãv3.6 以éã§ 500 以äžã®æ¥ç¶ã«äœ¿çšãããŠããã¹ã±ãŒãªã³ã°æžã¿ã®å€ãåæ ããŠããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------------------------------- | ---------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD` | `8` | `open-sse/config/constants.ts` | ãã¬ãŒã«ãŒãäœåãããŸã§ã® OAuth ãããã€ããŒã®é£ç¶å€±æãããå€ã |
| `OMNIROUTE_CIRCUIT_BREAKER_OAUTH_RESET_MS` | `60000` | `open-sse/config/constants.ts` | OAuth ãããã€ããŒã®ãã¬ãŒã«ãŒã®ãªã»ããæéïŒmsïŒã |
| `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLD` | `12` | `open-sse/config/constants.ts` | API ããŒãããã€ããŒã®é£ç¶å€±æãããå€ã |
| `OMNIROUTE_CIRCUIT_BREAKER_API_KEY_RESET_MS` | `30000` | `open-sse/config/constants.ts` | API ããŒãããã€ããŒã®ãã¬ãŒã«ãŒã®ãªã»ããæéïŒmsïŒã |
| `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLD` | `2` | `open-sse/config/constants.ts` | ããŒã«ã«ãããã€ããŒïŒOllamaãLM Studio ãªã©ïŒã®é£ç¶å€±æãããå€ã |
| `OMNIROUTE_CIRCUIT_BREAKER_LOCAL_RESET_MS` | `15000` | `open-sse/config/constants.ts` | ããŒã«ã«ãããã€ããŒã®ãã¬ãŒã«ãŒã®ãªã»ããæéïŒmsïŒã |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_THRESHOLD` | `10` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒOAuth ãããã€ããŒå
šäœãã¯ãŒã«ããŠã³ã«å
¥ããŸã§ã®æéå
ã®å€±æåæ°ã |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_FAILURE_WINDOW_MS` | `900000` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒOAuth ãããã€ããŒã®ããŒãªã³ã°å€±æåæ°éèšæéïŒmsïŒã |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_COOLDOWN_MS` | `300000` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒOAuth ãããã€ããŒã®ãããå€å°éåŸã®ã¯ãŒã«ããŠã³æéïŒmsïŒã |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_DEGRADATION_THRESHOLD` | `5` | `open-sse/config/constants.ts` | OAuth ãããã€ããŒã¯ããã®å€±æåæ°ã«éãããš DEGRADED ã«ç§»è¡ããŸãã |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_MAX_BACKOFF_MULTIPLIER` | `8` | `open-sse/config/constants.ts` | OAuth ãããã€ããŒã® resetTimeout ãšã¹ã«ã¬ãŒã·ã§ã³ã®æå€§åçã |
| `OMNIROUTE_PROVIDER_BREAKER_OAUTH_BACKOFF_ESCALATION_COUNT` | `2` | `open-sse/config/constants.ts` | OAuth ãããã€ããŒã¯ããã®ãªãŒãã³ãµã€ã¯ã«æ°ã«éãããšãšã¹ã«ã¬ãŒã·ã§ã³ããŸãã |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_THRESHOLD` | `15` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒAPI ããŒãããã€ããŒå
šäœãã¯ãŒã«ããŠã³ã«å
¥ããŸã§ã®æéå
ã®å€±æåæ°ã |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_FAILURE_WINDOW_MS` | `1800000` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒAPI ããŒãããã€ããŒã®ããŒãªã³ã°å€±æåæ°éèšæéïŒmsïŒã |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_COOLDOWN_MS` | `600000` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒAPI ããŒãããã€ããŒã®ãããå€å°éåŸã®ã¯ãŒã«ããŠã³æéïŒmsïŒã |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_DEGRADATION_THRESHOLD` | `7` | `open-sse/config/constants.ts` | API ããŒãããã€ããŒã¯ããã®å€±æåæ°ã«éãããš DEGRADED ã«ç§»è¡ããŸãã |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_MAX_BACKOFF_MULTIPLIER` | `4` | `open-sse/config/constants.ts` | API ããŒãããã€ããŒã® resetTimeout ãšã¹ã«ã¬ãŒã·ã§ã³ã®æå€§åçã |
| `OMNIROUTE_PROVIDER_BREAKER_API_KEY_BACKOFF_ESCALATION_COUNT` | `3` | `open-sse/config/constants.ts` | API ããŒãããã€ããŒã¯ããã®ãªãŒãã³ãµã€ã¯ã«æ°ã«éãããšãšã¹ã«ã¬ãŒã·ã§ã³ããŸãã |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_THRESHOLD` | `2` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒããŒã«ã«ãããã€ããŒå
šäœãã¯ãŒã«ããŠã³ã«å
¥ããŸã§ã®å€±æåæ°ã |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_FAILURE_WINDOW_MS` | `300000` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒããŒã«ã«ãããã€ããŒã®ããŒãªã³ã°å€±æåæ°éèšæéïŒmsïŒã |
| `OMNIROUTE_PROVIDER_BREAKER_LOCAL_COOLDOWN_MS` | `60000` | `open-sse/config/constants.ts` | ãããã€ããŒã¬ãã«ã®ãã¬ãŒã«ãŒïŒããŒã«ã«ãããã€ããŒã®ãããå€å°éåŸã®ã¯ãŒã«ããŠã³æéïŒmsïŒã |
| `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | ã¢ããã¹ããªãŒã ã® 429 ã« `Retry-After` ãå«ãŸããŠããªãå Žåãè€æ°ããŒã® API ããŒããŒããŒã·ã§ã³ã«ãã£ãŠé©çšãããããŒããšã®ã¯ãŒã«ããŠã³æéïŒmsïŒïŒ#14573ïŒãæ£ã§ãªãå€ãŸãã¯æ°å€ã§ãªãå€ã®å Žåã¯ããã©ã«ãå€ã䜿çšãããŸãã |
| `PIN_DROP_BACKOFF_LEVEL` | `2` | `open-sse/services/combo.ts` | ã³ã³ããã¹ããã£ãã·ã¥ã®ãã³ã«çŽã¥ããããã€ããŒãç¶ç¶çã«ç°åžžã§ãããšå€æããããã§ã€ã«ãªãŒããŒã®ããã«ãã³ãè§£é€ãããããã¯ãªã深床ã |
| `PIN_DROP_GRACE_MS` | `20000` | `open-sse/services/combo.ts` | ã³ã³ããã¹ããã£ãã·ã¥ã®ãã³ãè§£é€ããåã«ãçæéã®äžæçãªã¯ãŒã«ããŠã³ã蚱容ããã¢ã³ããã©ããæéïŒmsïŒã |
### ã·ããªãª
| ã·ããªãª | èšå® |
| ---------------------------------- | -------------------------------------------------- |
| **é·æéå®è¡ãããã³ãŒãçæ** | `REQUEST_TIMEOUT_MS=900000`ïŒ15 åïŒ |
| **ã¹ããªãŒã ã®åèšåç¶æéãå¶é** | `STREAM_ACTIVE_TIMEOUT_MS=1260000`ïŒ21 åïŒ |
| **æ¬çª API ã§ã®é«éãªå€±æå€å®** | `API_BRIDGE_PROXY_TIMEOUT_MS=10000` |
| **æ¡åŒµæèã¢ãã«** | `STREAM_IDLE_TIMEOUT_MS=300000`ïŒãã£ã³ã¯é 5 åïŒ |
---
## 16. ãã®ã³ã°
ãã®ã³ã°ã·ã¹ãã ã¯ãæšæºåºåãšããŒããŒã·ã§ã³ããããã°ãã¡ã€ã«ã®äž¡æ¹ã«æžã蟌ã¿ãŸãããã¹ãŠã®èšå®ã¯ `src/lib/logEnv.ts` ã«ãã£ãŠèªã¿èŸŒãŸããŸãã
| 倿° | ããã©ã«ã | 説æ |
| ----------------------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `APP_LOG_LEVEL` | `info` | æå°ãã°ã¬ãã«ïŒ`debug`ã`info`ã`warn`ã`error`ã |
| `APP_LOG_FORMAT` | `text` | åºå圢åŒïŒ`text`ïŒäººéãèªã¿ããã圢åŒïŒãŸã㯠`json`ïŒæ§é å圢åŒïŒã |
| `APP_LOG_TO_FILE` | `true` | æšæºåºåã«å ããŠããã°ããã¡ã€ã«ã«æžã蟌ã¿ãŸãã |
| `APP_LOG_FILE_PATH` | `logs/application/app.log` | ãã°ãã¡ã€ã«ã®ãã¹ïŒãããžã§ã¯ãã«ãŒããŸã㯠`DATA_DIR` ããã®çžå¯Ÿãã¹ïŒã |
| `APP_LOG_MAX_FILE_SIZE` | `50M` | ããŒããŒã·ã§ã³åã®æå€§ãã¡ã€ã«ãµã€ãºã`50M`ã`1G`ã`512K`ããŸãã¯ãã€ãåäœã®æ°å€ãæå®ã§ããŸãã |
| `APP_LOG_RETENTION_DAYS` | `7` | ããŒããŒã·ã§ã³ãããã¢ããªã±ãŒã·ã§ã³ãã°ãã¡ã€ã«ãä¿æããæ¥æ°ã |
| `APP_LOG_MAX_FILES` | `20` | ããŒããŒã·ã§ã³ããããã°ãã¡ã€ã«ã®ããã¯ã¢ããã®æå€§æ°ã |
| `CALL_LOG_RETENTION_DAYS` | `7` | ããŒã¿ããŒã¹å
ã®ãªã¯ãšã¹ãïŒåŒã³åºããã°ãšã³ããªãä¿æããæ¥æ°ã |
| `CALL_LOG_MAX_ENTRIES` | `10000` | ã¡ã¢ãªå
ãããã¡ã«ä¿æããåŒã³åºããã°ãšã³ããªã®æå€§æ°ã |
| `CALL_LOGS_TABLE_MAX_ROWS` | `100000` | ãã«ãŒãã³ã°åã«èš±å®¹ããã SQLite ã® `call_logs` ããŒãã«ã®æå€§è¡æ°ã |
| `ENABLE_REQUEST_LOGS` | _(æªèšå®)_ | ããã·ã¥ããŒãã®èšå®ãäžæžããã詳现ãªãªã¯ãšã¹ããã°ã匷å¶çã«æå¹ãŸãã¯ç¡å¹ã«ããŸãã |
| `MAX_PENDING_REQUEST_AGE_MS` | `3600000`ïŒ1æéïŒ | ã¡ã¢ãªå
ã¯ãªãŒã³ã¢ããã®å¯Ÿè±¡ã«ãªããŸã§ãå€ç«ããã¢ã¯ãã£ããªãªã¯ãšã¹ããã°ãšã³ããªãä¿æããæå€§æéã |
| `CALL_LOG_PIPELINE_CAPTURE_STREAM_CHUNKS` | `false` | `call_log_pipeline_enabled=true` ã®å Žåã«ãã¹ããªãŒã ãã£ã³ã¯ããã€ãã©ã€ã³ææç©ãžä¿åããŸãããªããã€ã³ïŒ`true`ïŒã§ããããã£ã¹ã¯å®¹éãç¯çŽããããããã©ã«ãã§ã¯ç¡å¹ã§ãã |
| `CALL_LOG_PIPELINE_MAX_SIZE_KB` | `512` | `call_log_pipeline_enabled=true` ã®å Žåã®ããã€ãã©ã€ã³åŒã³åºããã°ææç©ã®æå€§ãµã€ãºïŒKBïŒã |
| `PROXY_LOGS_TABLE_MAX_ROWS` | `100000` | ãã«ãŒãã³ã°åã«èš±å®¹ããã SQLite ã® `proxy_logs` ããŒãã«ã®æå€§è¡æ°ã |
| `PROXY_LOG_INCLUDE_IPS` | `false` | `[ProxyEgress]` ã³ã³ãœãŒã«ãã°ã«ã¯ã©ã€ã¢ã³ãïŒéä¿¡å
IP ãšã¢ã«ãŠã³ããã¬ãã£ãã¯ã¹ãå«ããŸããããã·ã¥ããŒãïŒããŒã¿ããŒã¹ã®ãããã·ãã°ã¬ã³ãŒãã«ã¯å®å
šãªè©³çްãä¿æãããŸãã |
| `PROXY_LOG_FIRST_CHUNK_TIMING` | `false` | `"true"` ãŸã㯠`"1"` ã«èšå®ãããšããããã·ãã°è¡ã« `first_chunk_ms`ïŒéä¿¡éå§ããæåã®æå¹ãªæ¬æãã€ããŸã§ïŒãèšé²ããŸããåã¢ããã¹ããªãŒã æ¬æãé
å»¶ãã¹ã¹ã«ãŒã¹ããªãŒã ã§ã©ãããããã€ãã®å°çåŸã«è¡ãæŽæ°ããŸããã¬ã¹ãã³ã¹ã倿Žããã«ãã®ãŸãŸééããããããããã©ã«ãã§ã¯ç¡å¹ã§ãã |
| `APP_LOG_ROTATION_CHECK_INTERVAL_MS` | `60000`ïŒ1åïŒ | `src/lib/logRotation.ts` ãã¢ã¯ãã£ããªãã°ãã¡ã€ã«ã®ãµã€ãºãå確èªããééã |
| `CHAT_LOG_TEXT_LIMIT` | `65536` | ãã£ãããã°ææç©ã«ä¿æãããæååã®æå€§é·ïŒããã©ã«ã㯠64 KBïŒã |
| `CHAT_LOG_ARRAY_TAIL_ITEMS` | `128` | ãã£ãããã°ã®ãã€ããŒããåãè©°ããéã«ãé
åã®æ«å°Ÿããä¿æããé
ç®æ°ã |
| `CHAT_LOG_MAX_DEPTH` | `6` | ãã£ãããã°ã®ãã€ããŒããåãè©°ãããããŸã§ã®æå€§ãã¹ã深床ã |
| `CHAT_LOG_MAX_OBJECT_KEYS` | `80` | ãã£ãããã°ã®ãã€ããŒãã«ä¿æããããªããžã§ã¯ãããŒã®æå€§æ°ïŒ0 = ç¡å¶éïŒã |
| `CHAT_LOG_MAX_BODY_KB` | `1024` | ãªã¯ãšã¹ãïŒã¬ã¹ãã³ã¹æ¬æå
šäœããã®ãµã€ãºïŒKBïŒãè¶
ãããšãå®å
šãªè€è£œã§ã¯ãªãç°¡ç¥åãããèŠçŽã«çœ®ãæããããŸããé·æéã®ãšãŒãžã§ã³ãåäŒè©±ã§ãå®éã®ã¡ãã»ãŒãžã§ã¯ãªããã¬ãŒã¹ãã«ããŒãããã·ã¥ããŒãã«è¡šç€ºãããå Žåã¯ããã®å€ãå¢ãããŠãã ããã |
| `CHAT_DEBUG_FILE` | `false` | true ã®å Žåã`serializeArtifactForStorage` ã¯ãµã€ãºã«åºã¥ãåãè©°ããã¹ãããããŸãããããã°å°çšã§ãã |
---
## 17. ã¡ã¢ãªæé©å
| 倿° | ããã©ã«ã | 説æ |
| ----------------------------- | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_MEMORY_MB` | _èªå_ïŒãã¢ã¡ã¿ã«ïŒã**Docker ã€ã¡ãŒãžã§ã¯ `1024`** | DockerïŒã¹ã¿ã³ãã¢ãã³åãã«**æšå¥šããã** V8 ããŒãäžéïŒMBïŒãæªèšå®ã®å Žåã¯åçã«èª¿æŽããïŒã·ã¹ãã RAM ã®çŽ 35%ã`[512, 4096]` ã®ç¯å²ã«å¶éïŒã`512` ã¯ç·ã¡ã¢ãªãèªã¿åããªãå Žåã«ã®ã¿äžéãšããŠäœ¿çšãããŸãã`run-standalone.mjs`ïŒDocker CMDïŒã§ã¯ã**æç€ºçãª**å€ã `--max-old-space-size` ãšããŠè¿œå ãããç«¶åãã NODE_OPTIONS ã®ããŒããã©ã°ãã**åªå
**ãããŸãïŒV8 ã§ã¯æåŸã®ãã©ã°ãæå¹ïŒã`omniroute serve` ã¯åŒãç¶ãæ¢åã® NODE_OPTIONS ããŒãèšå®ãåªå
ããŸãïŒ#5238ïŒãäž¡æ¹ã«ç°ãªãæ°å€ãèšå®ããªãã§ãã ãããããã»ã¹ã¯äž¡æ¹ã®å€ãšãã©ã¡ããåªå
ããããã瀺ãèŠåããã°ã«èšé²ããŸãã**å
¬åŒ Docker ã€ã¡ãŒãžã§ã¯åžžã« `1024` ãèšå®ããããããããã§åç調æŽãå®è¡ãããããšã¯ãããŸããã** ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã® `/v1/responses` ã«ã¯ãcgroup çšã®äœè£ã«å ã㊠`8192`ïœ`12288` ãå¿
èŠã§ãã[Docker ã¬ã€ã â å®è¡æ RAM](../guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents)ãåç
§ããŠãã ããã |
| `OMNIROUTE_RSS_PRESSURE_MB` | _èªå_ïŒ`max(3072, 2 à OMNIROUTE_MEMORY_MB)`ã`OMNIROUTE_MEMORY_MB` ãæªèšå®ã®å Žåã¯ç¡å¹ïŒ | `open-sse/utils/resourcePressure.ts` | V8 ã® `heapUsed` ã§ã¯æ€åºã§ããªããã€ãã£ãïŒå€éšã¡ã¢ãªåãã®ãããã»ã¹ RSS ã®çµ¶å¯Ÿçãªå®å
šäžéïŒMBïŒããããè¶
ãããšãæ°ãããªã¯ãšã¹ãã«ã¯ 503 `resource_pressure` ãè¿ãããŸããRSS ã¯æ¥å¢åŸã«äœäžããããšãã»ãšãã©ãªãããã`OMNIROUTE_PRESSURE_SELF_RESTART` ãšäœµçšããŠãã ããã |
| `PROMPT_CACHE_MAX_SIZE` | `50` | ãã£ãã·ã¥ãããã·ã¹ãã ããã³ãããšã³ããªã®æå€§æ°ã |
| `PROMPT_CACHE_MAX_BYTES` | `2097152`ïŒ2 MBïŒ | ããã³ãããã£ãã·ã¥ã®åèšæå€§ãµã€ãºã |
| `PROMPT_CACHE_TTL_MS` | `300000`ïŒ5 åïŒ | ããã³ãããã£ãã·ã¥ãšã³ããªã® TTLã |
| `SEMANTIC_CACHE_MAX_SIZE` | `100` | ãã£ãã·ã¥ããã temperature=0 ã®ã¬ã¹ãã³ã¹ã®æå€§æ°ã |
| `SEMANTIC_CACHE_MAX_BYTES` | `4194304`ïŒ4 MBïŒ | ã»ãã³ãã£ãã¯ãã£ãã·ã¥ã®åèšæå€§ãµã€ãºã |
| `SEMANTIC_CACHE_TTL_MS` | `1800000`ïŒ30 åïŒ | ã»ãã³ãã£ãã¯ãã£ãã·ã¥ãšã³ããªã® TTLã |
| `OMNIROUTE_CORPUS_CACHE_SIZE` | `5` | åæã«æå¹ãªã€ã³ã¡ã¢ãªã€ã³ããã¯ã¹ãä¿æããããŒã«ã«ã³ãŒãã¹ã«ãŒãã®æ°ïŒ`src/lib/localCorpus/configured.ts`ïŒãLRUïŒäžéã«éãããšãæãé·ã䜿çšãããŠããªãã«ãŒãã®ã€ã³ããã¯ã¹ãåé€ãããæ¬¡åã®ã¯ãšãªæã«åæ§ç¯ãããŸããæå°å€ã¯ `1` ã«å¶éãããŸããæ°å€ä»¥å€ã®å€ã®å Žåã¯ããã©ã«ãã«ãã©ãŒã«ããã¯ããŸãã |
| `STREAM_HISTORY_MAX` | `50` | ããã·ã¥ããŒãã®ã©ã€ããã¥ãŒçšãããã¡ã«ä¿æããçŽè¿ã®ã¹ããªãŒã ã€ãã³ãã®æå€§æ°ã |
| `CONTEXT_LENGTH_DEFAULT` | _ïŒæªèšå®ïŒ_ | `CONTEXT_LENGTH_` 倿°ããªããã¹ãŠã®ãããã€ããŒã«å¯Ÿãããã°ããŒãã«ãªã³ã³ããã¹ãé·ã®äžæžãïŒããŒã¯ã³æ°ïŒãèšå®ãããšã該åœãããããã€ããŒã«ã€ããŠãã«ã¿ãã°ãããã·ã¥ããŒãã®äžæžããããã³ã¬ãžã¹ããªã®å€ã**眮ãæããŸã**ãæªèšå®ã®å ŽåãOmniRoute ã¯çµã¿èŸŒã¿ã®è§£æ±ºãã§ãŒã³ã䜿çšãããã®æçµçãªãã©ãŒã«ããã¯ã¯ `128000` ã§ãã[ãããã€ããŒããšã®ã³ã³ããã¹ãé·](#per-provider-context-length-context_length_provider)ãåç
§ããŠãã ããã |
| `USAGE_TOKEN_BUFFER` | `100` | 䜿çšéã¯ã©ãŒã¿ã远跡ããéã«ç¢ºä¿ãããã远å ããŒã¯ã³ã®äœè£ã |
### ãããã€ããŒããšã®ã³ã³ããã¹ãé·ïŒ`CONTEXT_LENGTH_`ïŒ
`open-sse/services/contextManager.ts`ïŒ`getEnvOverride()` / `resolveTokenLimit()`ïŒã¯ã
å®è¡æã«ãããã€ã㌠ID ããååãçæããã**ãããã€ããŒããšã®**圢åŒãèªã¿åãããã
äžã®è¡šã `.env.example` ã«è¡ããšã«åæããããšã¯ã§ããŸããã
**ååã** `CONTEXT_LENGTH_`ãããã§ `` ã¯ãããã€ã㌠ID ã倧æåã«ãã`A-Z` / `0-9` 以å€ã®ãã¹ãŠã®æåã `_` ã«çœ®æãããã®ã§ãããããã€ã㌠ID ã«ã¯ããšã€ãªã¢ã¹è§£æ±ºåŸã®æ£èŠ IDïŒççž®ãšã€ãªã¢ã¹ã解決ãããåŸã® `provider/model` æååã«ããã `provider` éšåïŒã䜿çšãããŸããã«ã¹ã¿ã ã® OpenAI ãŸã㯠Anthropic äºæããŒãã§ã¯ãçæãããããŒã ID ã䜿çšãããããã倿°åã« UUID ãå«ãŸããŸããå€ã¯æ£ã®æŽæ°ã§æå®ããããŒã¯ã³æ°ã§ãããã以å€ïŒç©ºã`0`ãè² æ°ãæ°å€ä»¥å€ïŒã¯ç¡èŠããã解決åŠçã¯æ¬¡ã®ã¹ããããžé²ã¿ãŸãã
| ãããã€ã㌠ID | 倿°å |
| ----------------------------------------------------------- | -------------------------------------------------------------------------- |
| agentrouter | CONTEXT_LENGTH_AGENTROUTER |
| openrouter | CONTEXT_LENGTH_OPENROUTER |
| openai-compatible-chat-0f8e2c1a-5b7d-4e3f-9a6c-2d1b8e4f7a90 | CONTEXT_LENGTH_OPENAI_COMPATIBLE_CHAT_0F8E2C1A_5B7D_4E3F_9A6C_2D1B8E4F7A90 |
**åªå
é äœã** `provider/model` ã®çµã¿åããã§ã¯ãæåã«å€ãåŸãããã¹ããããæ¡çšãããŸãã
1. ãã®ãããã€ããŒã® `CONTEXT_LENGTH_`ã
2. `CONTEXT_LENGTH_DEFAULT`ïŒã°ããŒãã«ãªç°å¢å€æ°ã«ããäžæžãïŒã
3. ã¢ãã«ããšã®ãŠã£ã³ããŠïŒæ°žç¶åãããã³ã³ããã¹ãã®äžæžãå€ïŒããã·ã¥ããŒãã§èšå®ãããããæ€åºãªã³ã³ãµã€ã©ãŒã«ãã£ãŠèªåçã«åºå®ãããŸãã`CONTEXT_WINDOW_RECONCILE_INTERVAL` ãåç
§ïŒãããããªãå Žåã¯ãåæãããã«ã¿ãã° / models.dev ã®å€ã
4. ãããã€ããŒã®ã¬ãžã¹ããªã«ãã `defaultContextLength`ã
5. ã¢ãã«åã«åºã¥ããã¥ãŒãªã¹ãã£ãã¯ïŒ`claude` 㯠200000ã`gemini` 㯠1000000ã`gpt` / `o1` / `o3` / `o4` / `codex` 㯠400000ïŒã
6. çµã¿èŸŒã¿ã®ãããã€ããŒå¥ããã©ã«ãå€ããã®åŸ `128000`ã
ã©ã¡ãã®ç°å¢å€æ°ã¹ãããã**ãããã€ããŒå
šäœ**ã«é©çšãããŸãããã®ãããã€ããŒã®ãã¹ãŠã®ã¢ãã«ã«åãäžéãèšå®ãããã¢ãã«ããšã®ããã·ã¥ããŒãäžæžããããåªå
ãããŸãããããã€ããŒå
ã® 1 ã€ã®ã¢ãã«ã ãã«ç°ãªããŠã£ã³ããŠãå¿
èŠãªå Žåã¯ã代ããã«ããã·ã¥ããŒãã§ã¢ãã«ããšã®äžæžãã䜿çšããŠãã ããã
**é©çšç¯å²ã** ãã®è§£æ±ºãã§ãŒã³ã¯ããªã¯ãšã¹ãæã®ã³ã³ããã¹ããŠã£ã³ããŠãã§ãã¯ïŒ`open-sse/handlers/chatCore.ts` ã«ããã `context_length_exceeded` / ãå
¥åãã³ã³ããã¹ããŠã£ã³ããŠãè¶
ããŠããŸãããšããæåŠïŒãããã³ããå§çž®ã®ããžã§ãããããã³ã³ã³ãã®ã³ã³ããã¹ãäžéã«äœ¿çšãããŸãã`GET /v1/models` ãå
¬éãã `context_length` ã¯ãåŒãç¶ãã«ã¿ãã°ãŸãã¯ã¬ãžã¹ããªã®ã¡ã¿ããŒã¿ã«ç±æ¥ããå Žåããããç°å¢å€æ°ã«ããäžæžããåæ ãããšã¯éããŸããã
**äŸã** ã«ã¿ãã°ã§ã¯ 128,000 ãšå ±åãããŠããäžæ¹ã§ãã¢ãã«ã 1,050,000 ããŒã¯ã³ã®ãŠã£ã³ããŠãåãå
¥ãããããã€ããŒã®å ŽåïŒ
```dotenv
CONTEXT_LENGTH_AGENTROUTER=1050000
```
倿ŽåŸã¯ãµãŒããŒãåèµ·åããŠãã ããããã®å€ã¯ãµãŒããŒããã»ã¹ã®ç°å¢ããèªã¿åãããŸãã**ãã¹ã¯ãããã¢ããª**ã§ã¯ããµãŒããŒã¯åããã»ã¹ãšããŠå®è¡ããããããã¢ããªã®èµ·ååŸã«èšå®ãããã·ã¹ãã ç°å¢å€æ°ã¯èªèãããŸãããã¢ããªãèªã¿èŸŒã `.env` ãã¡ã€ã«ã«ãã®è¡ã远å ãïŒæ€çŽ¢é åºã«ã€ããŠã¯ [Electron ã¬ã€ãïŒç°å¢ãã¡ã€ã«ã®æ€çŽ¢](../guides/ELECTRON_GUIDE.md#environment-file-lookup) ãåç
§ïŒãã¢ããªãå®å
šã«çµäºããŠããåèµ·åããŠãã ããã
### å§çž®
| 倿° | ããã©ã«ã | 説æ |
| ------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_RTK_TRUST_PROJECT_FILTERS` | æªèšå® | `.rtk/trust.json` ã®ããã·ã¥ãªãã§ããããžã§ã¯ãã® `.rtk/filters.json` ãä¿¡é ŒããŸãã管çãããããŒã«ã«éçºç°å¢ã§ã®ã¿äœ¿çšããŠãã ããã |
### ã¡ã¢ãªãšã³ãžã³ïŒãã©ã³ 21ïŒ
### ã¡ã¢ãªãã¹ãã«ãããŒã¯ã³æŽæ°ã®ã€ãã³ãã«ãŒãã³ã¹ãïŒ#10349ïŒ
OmniRoute ã¯**åäžã® Node ããã»ã¹**ã§ããã¡ã¢ãªã®æœåº/ååŸãã¹ãã«ã®æ³šå
¥ãããã³ãããã€ããŒããŒã¯ã³ã®æŽæ°ã¯ã`GET /healthz` ãããã·ã¥ããŒããš**åãã€ãã³ãã«ãŒã**äžã§å®è¡ãããŸãããããã¯ã¯ãŒã«ãŒã¹ã¬ããã§ã¯ãããŸããã
| åŠç | ã³ãŒã | ããã©ã«ã | ãªãã¬ãŒã¿ãŒã«ããå¶åŸ¡ |
| ------------------- | ---------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| ã¡ã¢ãªã®æœåº / ååŸ | `src/lib/memory/` | ããã·ã¥ããŒãã® **memoryEnabled**ïŒããã©ã«ãã§ãªã³ïŒ | **èšå® â ã¡ã¢ãª**ããªãã«ããŸããèšå®ã§æ©èœãç¡å¹ã«ãã以å€ã«ãç¬ç«ããç°å¢å€æ°ã®ãã«ã¹ã€ããã¯ãããŸããã |
| ã¹ãã«ã®æ³šå
¥ | `src/lib/skills/injection.ts` | ããã·ã¥ããŒãã® **skillsEnabled**ïŒããã©ã«ãã§ãªã³ïŒ | **èšå® â ã¡ã¢ãª/ã¹ãã«**ïŒ`skillsEnabled`ïŒããªãã«ããŸãã以äžã®ãµã³ãããã¯ã¹èšå®ã¯ã泚å
¥ããã§ã«ãªã³ã«ãªã£ãŠããå Žåã«ã®ã¿å®è¡ãå¶éããŸãã |
| ããŒã¯ã³ã®æŽæ° | `src/sse/services/tokenRefresh.ts` | æ¥ç¶æžã¿ã® OAuth/Web ãããã€ããŒã§ã¯ãªã³ | ãããã€ããŒãåæããããããŒã¯ã³ãæå¹ãªç¶æ
ãç¶æããŠãã ãããçŸæç¹ã§ã¯ `TOKEN_REFRESH=0` ç°å¢å€æ°ã¯ãããŸããã |
è² è·ã®ãªããã·ã³ã§ `/healthz` ãé
ãå Žåã¯ããŸãã¡ã¢ãªãšã¹ãã«ãç¡å¹ã«ãããã®åŸã§ã«ã¿ãã°/å§çž®ã®è² è·ã確èªããŠãã ããïŒ#10303ã#9685ïŒããããã®æ©èœã¯ `await` ã®ç®æã§å®è¡ãè²ããŸãããããã§ãåäžã®ã¹ã¬ããã奪ãåããŸãã
æ°žç¶ã¡ã¢ãªãµãã·ã¹ãã ïŒ`src/lib/memory/`ïŒåãã®åã蟌ã¿ã¬ã€ã€ãŒããã¯ãã«ã¹ãã¢ãããã³åã©ã³ãã³ã°ã®èª¿æŽé
ç®ã
| 倿° | ããã©ã«ã | 説æ |
| ------------------------------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MEMORY_EMBEDDING_CACHE_TTL_MS` | `300000`ïŒ5åïŒ | ã€ã³ã¡ã¢ãªåã蟌ã¿ãã£ãã·ã¥ã®TTLïŒãœãŒã¹ïŒã¢ãã«ïŒæ¬¡å
ã·ã°ããã£ããšïŒã |
| `MEMORY_EMBEDDING_CACHE_MAX` | `1000` | åã蟌ã¿ãã£ãã·ã¥ã«ä¿æããLRUãšã³ããªã®æå€§æ°ã |
| `MEMORY_TRANSFORMERS_MODEL` | `Xenova/all-MiniLM-L6-v2` | ãªããã€ã³ã®ããŒã«ã«MiniLMãã€ãã©ã€ã³ïŒ`@huggingface/transformers`ïŒçšHFãªããžããªIDïŒçŽ23 MBãint8ãRAMçŽ400 MBïŒã |
| `MEMORY_STATIC_MODEL` | `minishlab/potion-base-8M` | éçãªpotionïŒModel2Vecã«ãã¯ã¢ããããŒãã«åã蟌ã¿ã¢ãã«çšã®HFãªããžããªIDããã£ãã·ã¥ãã£ã¬ã¯ããªã«é
å»¶ããŠã³ããŒããããŸãã |
| `MEMORY_STATIC_CACHE_DIR` | `/embeddings` | éçpotionã¢ãã«ã®ãã¡ã€ã«ããã£ãã·ã¥ãããã£ã¬ã¯ããªãæªèšå®ã®å Žåãããã©ã«ãã§`DATA_DIR`é
äžã«ãªããŸãã |
| `HF_HUB_ENDPOINT` | `https://huggingface.co` | `staticPotion.ts`ã䜿çšããHugging Face Hubã®ããŒã¹URLãäžæžãããŸãïŒäŸïŒãšã¢ã®ã£ããç°å¢åãã®ãã©ãŒãšã³ããã€ã³ãïŒã |
| `MEMORY_VEC_TOP_K` | `20` | `src/lib/memory/vectorStore.ts`å
ã®`sqlite-vec`ç·åœãããã¯ãã«æ€çŽ¢ã§äœ¿çšãããããã©ã«ãã®top-Kã |
| `MEMORY_RRF_K` | `60` | FTS5ãšãã¯ãã«æ€çŽ¢ã®ãã€ããªããååŸã«äœ¿çšããReciprocal Rank Fusion宿°`k`ïŒsqlite-vecã®ã¬ã·ãïŒã |
| `VECTOR_STORE_DISABLE_VEC` | `false` | `getVectorStore()`ïŒ`src/lib/memory/vectorStore.ts`ïŒã®ãã¹ãïŒèšºæçšã·ãŒã ïŒ`true`ã®å Žåããã¯ãã«ã¹ãã¢ã匷å¶çã«`null`ã«ãïŒ`sqlite-vec`ã®ãªãã¯ã©ãŠãïŒWASMç°å¢ãã·ãã¥ã¬ãŒãïŒãã¡ã¢ãªæ€çŽ¢ãFTS5ããŒã¯ãŒãæ€çŽ¢ã«çž®éãããŸããæ¬çªç°å¢ã§ã¯æªèšå®ã®ãŸãŸã«ããŠãã ããã |
| `NOTION_API_KEY` | _ïŒæªèšå®ïŒ_ | Notionããã¯ãšã³ãçšã®APIããŒïŒ`genericBackend.ts`ã®æ¢ç¥ããã¯ãšã³ãããªã»ããã§äœ¿çšïŒã |
| `NOTION_API_URL` | `https://api.notion.com/v1` | Notion APIã®ããŒã¹URLïŒã»ã«ããã¹ãåã®Notion代æ¿ãµãŒãã¹åãã«äžæžãå¯èœïŒã |
| `OBSIDIAN_API_KEY` | _ïŒæªèšå®ïŒ_ | Obsidian Vaultããã¯ãšã³ãçšã®APIããŒïŒ`genericBackend.ts`ã®æ¢ç¥ããã¯ãšã³ãããªã»ããã§äœ¿çšïŒã |
| `OBSIDIAN_API_URL` | `http://localhost:27123` | Obsidian Vault APIã®ããŒã¹URLïŒãªã¢ãŒãVaultåãã«äžæžãå¯èœïŒã |
| `MEMORY_TYPED_DECAY_ENABLED` | `false` | TV6åä»ãã¡ã¢ãªæžè¡°ã®ãã¹ã¿ãŒã¹ã€ããã**ãªããã€ã³ïŒããã©ã«ãã¯ãªãïŒ** â ã¹ã€ãŒãã¯æžè¡°ããã¡ã¢ãªã**åé€**ããŸãããªãã®å Žåã`access_count`ïŒ`last_accessed_at`ã¯çŽç²ãªãã¬ã¡ããªã§ãããäœãåé€ãããŸããã |
| `MEMORY_TYPED_DECAY_EPISODIC_DAYS` | `30` | æªäœ¿çšã®`episodic`ã¡ã¢ãªãæžè¡°ãããŸã§ã®TTLïŒæ¥æ°ïŒã`0`ã«ãããšepisodicãæžè¡°ããŸãããæ°žç¶åïŒ`factual`ïŒ`procedural`ïŒ`semantic`ïŒã¯åžžã«æžè¡°ããŸãããæžè¡°ã¯ããã¯ã¯`last_accessed_at`ãåºæºã«åèšå®ãããŸãã |
| `MEMORY_TYPED_DECAY_ACCESS_IMMUNITY` | `3` | ã¿ã€ãã«é¢ä¿ãªããã¡ã¢ãªããã®åæ°ä»¥äžïŒ`>=`ïŒæ³šå
¥ããããšæžè¡°ããªããªããŸãã`0`ã«ãããšã¢ã¯ã»ã¹åæ°ã«ããæžè¡°ç¡å¹åãç¡å¹ã«ããŸãã |
| `MEMORY_TYPED_DECAY_SWEEP_INTERVAL` | `0`ïŒç¡å¹ïŒ | `src/lib/memory/typedDecay.ts`ã§ãªãã·ã§ã³ã®å®ææžè¡°ã¹ã€ãŒããå®è¡ããééïŒç§ïŒã`0`ïŒæªèšå® = 宿ã¹ã€ãŒããªããäºéã®ãªããã€ã³æ¹åŒã§ããã`MEMORY_TYPED_DECAY_ENABLED=true`ãå¿
èŠã§ãã |
| `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` | _ïŒæªèšå®ïŒ_ | `system`ã¡ãã»ãŒãžã**ã€ã³ããã¯ã¹0ã§ã®ã¿**åãå
¥ãããããã€ããŒIDïŒå€§æåïŒå°æåãåºå¥ããªãïŒã®ã«ã³ãåºåããªã¹ãïŒ`src/lib/memory/injection.ts`ïŒããããã®ãããã€ããŒã§ã¯ãè€æ°ã¿ãŒã³ã®äŒè©±ã«ãããŠããã£ãã·ã¥ã«å®å
šãªé
åéäžãžã®ã¡ã¢ãªæ¿å
¥ã¯å®å
šã§ã¯ãªãããã代ããã«ã¡ã¢ãªãå
é ã®systemã¡ãã»ãŒãžãžããŒãžïŒå眮ããŸããããã©ã«ãã§ã¯`xiaomi-mimo`ïŒ`mimo`ã®ã¿ã§ããåããå
é ã«åäžã®systemã¡ãã»ãŒãžããšããå¶çŽããã£ãããã³ãã¬ãŒãã§åŒ·å¶ããã»ã«ããã¹ãåOpenAIäºæãšã³ããã€ã³ãïŒäŸïŒQwen3.5+/3.6ïŒã«ã€ããŠã¯ããã®ãªã¹ããæ¡åŒµããŠãã ããã |
### äœRAM Dockerã®äŸ
`128`ã¯ããã·ã¥ããŒãå°çšã§ãããã®ããŒãèšå®ã§ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããé·æé`/v1/responses`ãå®è¡ãããš`FATAL ERROR`ãçºçããŸãããã®äŸãClaudeïŒCodexïŒGrokã²ãŒããŠã§ã€ãšããŠäœ¿çšããªãã§ãã ããã
```bash
OMNIROUTE_MEMORY_MB=128
PROMPT_CACHE_MAX_SIZE=20
PROMPT_CACHE_MAX_BYTES=524288 # 512 KB
SEMANTIC_CACHE_MAX_SIZE=25
SEMANTIC_CACHE_MAX_BYTES=1048576 # 1 MB
STREAM_HISTORY_MAX=10
```
---
## 18. æéåæ
å€éšãœãŒã¹ããã¢ãã«ã®æéããŒã¿ãèªåçã«åæããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ----------------------- | ------------- | ------------------------ | -------------------------------------------- |
| `PRICING_SYNC_ENABLED` | `false` | `src/lib/pricingSync.ts` | 宿çãªæéåæããªããã€ã³ã§æå¹ã«ããŸãã |
| `PRICING_SYNC_INTERVAL` | `86400` (24h) | `src/lib/pricingSync.ts` | åæééïŒç§åäœïŒã |
| `PRICING_SYNC_SOURCES` | `litellm` | `src/lib/pricingSync.ts` | ã«ã³ãåºåãã®ããŒã¿ãœãŒã¹ã |
---
## Arena ELO åæ
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------- | ------------- | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ARENA_ELO_SYNC_ENABLED` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | Arena AI ãªãŒããŒããŒãã® ELO ã宿çã«åæããŸããDashboard ã® Feature Flags ããèšå®ãããã`false` ã«ããŠãªããã¢ãŠãã§ããŸãã |
| `MODELS_CATALOG_PREFIX_MODE` | `dual` | `src/shared/constants/featureFlagDefinitions.ts`, `src/app/api/v1/models/catalog.ts` | `GET /v1/models` ã®ã¢ãã« ID ã«äœ¿çšãããã¬ãã£ãã¯ã¹åœ¢åŒã`dual` ã¯ããã¹ãŠã®ã¢ãã«ã«ã€ããŠçããšã€ãªã¢ã¹ãã¬ãã£ãã¯ã¹ãšæ£èŠãããã€ããŒãã¬ãã£ãã¯ã¹ã®äž¡æ¹ãå
¬éããŸãïŒåŸæ¹äºææ§ã®ãããã«ã¿ãã°ã®ãµã€ãºã¯ããã2åã«ãªããŸãïŒã`alias` ã¯ã¢ãã«ããšã«1ã€ã® ID ãåºåããŸãã`canonical` ã¯å®å
šãªãããã€ã㌠ID ãã¬ãã£ãã¯ã¹ã®ã¿ãåºåããŸãïŒãšã€ãªã¢ã¹ããã§ã«æ£èŠ ID ã§ãããããã€ããŒã¯ãåäžã®ãšã³ããªãç¶æããŸãïŒãã¯ã©ã€ã¢ã³ãã¯ãªã¯ãšã¹ãããšã« `?prefix=alias` ãæå®ããŠäžæžãã§ããŸãã[API_REFERENCE](API_REFERENCE.md#model-id-prefixes-prefix) ãåç
§ããŠãã ããã |
| `ARENA_ELO_SYNC_INTERVAL` | `86400` (24h) | `src/lib/arenaEloSync.ts` | åæééïŒç§åäœïŒã |
---
## PromptQL Playground ãããã€ããŒïŒéå
¬åŒïŒå®éšçïŒ
prompt.ql.app çšã«ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ããã GraphQL ã»ãã·ã§ã³ããªããžïŒ`src/shared/constants/providers/web-cookie.ts`ïŒããã¹ãŠä»»æã§ããããã©ã«ãã§ã¯å
¬é Playground ãšã³ããã€ã³ãã䜿çšããŸããã»ã«ããã¹ããŸãã¯ä»£æ¿ã® PromptQL ãããã€ã¡ã³ãã䜿çšããå Žåã«ã®ã¿äžæžãããŠãã ããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `PROMPTQL_GRAPHQL_ENDPOINT` | `https://data.prompt.ql.app/promptql/playground-v2-hge/v1/graphql` | `open-sse/executors/promptql.ts` | ãã£ããïŒã»ãã·ã§ã³æäœã«äœ¿çšãã GraphQL ãšã³ããã€ã³ãã |
| `PROMPTQL_CREDITS_ENDPOINT` | `https://data.pro.ql.app/v1/graphql` | `open-sse/executors/promptql.ts`, `open-sse/services/usage/promptql.ts` | ã¯ã¬ãžããæ®é«ïŒäœ¿çšéã®ç
§äŒã«äœ¿çšãã GraphQL ãšã³ããã€ã³ãã |
| `PROMPTQL_TOKEN_REFRESH_URL` | `https://auth.pro.ql.app/ddn/project/token` | `open-sse/executors/promptql.ts` | ãã¹ããšãã©ãŒãæ¹åŒã®ããŒã¯ã³æŽæ°ã«äœ¿çšãããšã³ããã€ã³ãã |
| `PROMPTQL_POLL_TIMEOUT_MS` | `180000` | `open-sse/executors/promptql.ts` | ã¿ã€ã ã¢ãŠããããŸã§ `thread_events` ãããŒãªã³ã°ããæå€§æéïŒããªç§ïŒã |
---
## HyperAgent Web ãããã€ããŒïŒéå
¬åŒïŒå®éšçïŒ
hyperagent.com åãã«ãªããŒã¹ãšã³ãžãã¢ãªã³ã°ãããã»ãã·ã§ã³ããªããžïŒ`src/shared/constants/providers/web-cookie.ts`ïŒãä»»æèšå®ã§ããããã©ã«ãã§ã¯å
¬éã®è«æ±ïŒäœ¿çšéãšã³ããã€ã³ããåç
§ããŸããã»ã«ããã¹ãç°å¢ãŸãã¯ä»£æ¿ã® HyperAgent ãããã€ã¡ã³ãã䜿çšããå Žåã«ã®ã¿äžæžãããŠãã ããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------- | --------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------- |
| `HYPERAGENT_USAGE_URL` | `https://hyperagent.com/api/settings/billing/usage` | `open-sse/services/usage/hyperagent.ts` | è«æ±ïŒäœ¿çšéã®ã¯ã¬ãžãããããã¯ãååŸããããã«äœ¿çšããããšã³ããã€ã³ãã |
---
## Kilo Code 䜿çšéã¯ã©ãŒã¿
Kilo Code ãããã€ããŒåãã®å人 USD æ®é«ããã³ Kilo Pass 䜿çšéã®ç
§äŒãä»»æèšå®ã§ããããã©ã«ãã§ã¯å
¬é Kilo API ãåç
§ããŸãããªã¬ãŒãŸãã¯ãã¹ããã£ã¯ã¹ãã£ã䜿çšããå Žåã«ã®ã¿äžæžãããŠãã ãããèªèšŒã«ã¯ãæ¥ç¶ã«æ¢åã® OAuth ã¢ã¯ã»ã¹ããŒã¯ã³ã䜿çšãããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| -------------- | --------------------- | ------------------------------------- | ----------------------------------------------------------------------------------- |
| `KILO_API_URL` | `https://api.kilo.ai` | `open-sse/services/usage/kilocode.ts` | Kilo Code ã®å人æ®é«ããã³ Kilo Pass ã®äœ¿çšéãååŸããããã«äœ¿çšãããããŒã¹ URLã |
---
## Adobe Firefly Web ãããã€ããŒïŒéå
¬åŒïŒå®éšçïŒ
Adobe Firefly Web ãããã€ããŒåãã®ãã©ãŠã¶ãŒé§ååã»ãã·ã§ã³æŽæ°
ïŒ`open-sse/services/adobeFireflyBrowserLogin.ts`ã`open-sse/services/adobeFireflySession.ts`ã
`open-sse/services/adobeFireflyClient.ts`ïŒãä»»æèšå®ã§ãããã¹ãŠã®ããã©ã«ãå€ã¯éåžžã®
ãã¹ã¯ãããã€ã³ã¹ããŒã«åãã«èª¿æŽãããŠããŸãã
> **#9255 ã§åé€ãããŸããã** æ§ CDP æ¥ç¶å Chrome ã©ã³ã¿ã€ã ïŒadobeFireflyChromeRuntime.tsïŒã¯
> Playwright ãã©ãŠã¶ãŒãã°ã€ã³ãµãŒãã¹ã«çœ®ãæãããããã®èšå®é
ç®ã¯ååšããªããªããŸããã
> ADOBE_FIREFLY_CHROME_ CDP_PORT / VISIBLE / HEADED / PING / FORCE_RESTART 倿°ãããã³
> ADOBE_FIREFLY_LOGIN_WAIT_MS ãš ADOBE_FIREFLY_FORTER_WAIT_MS ã¯ã³ãŒãããŒã¹å
ã®
> ã©ããããèªã¿åãããªããããèšå®ããŠã广ã¯ãããŸããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------ | ------------ | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | çã®ãããã¬ã¹ Chrome ã䜿çšããã«ã¯ `1` ã«èšå®ããŸãïŒçæã§ã¯åäœããªãããšãæ¢ç¥ã§ããããããã°å°çšã§ãïŒã |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | `1` | `open-sse/services/adobeFireflySession.ts` | äºåã®ãã©ãŠã¶ãŒãŠã©ãŒã ã¢ãããæå¹åïŒç¡å¹åããŸãã`0` ã«ãããšäºåãŠã©ãŒã ã¢ãããç¡å¹ã«ãªããŸãïŒãããéäžã® 408 ãªã«ããªãŒã¯åŒãç¶ãé©çšãããŸãïŒã |
| `ADOBE_FIREFLY_SESSION_DISK` | `1` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly ã»ãã·ã§ã³ã®ãã£ã¹ã¯ãžã®æ°žç¶åãç¡å¹ã«ããã«ã¯ `0` ã«èšå®ããŸãã |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | _ïŒæªèšå®ïŒ_ | `open-sse/services/adobeFireflySession.ts` | é£ç¶ããéä¿¡éã«é©çšãããæå°ééïŒmsïŒãçµã¿èŸŒã¿ã®ããã©ã«ãå€ãäžæžãããŸãã |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | _ïŒæªèšå®ïŒ_ | `open-sse/services/adobeFireflySession.ts` | ãããæååŸã«è¿œå ãããåŸ
æ©æéïŒmsïŒãçµã¿èŸŒã¿ã®ããã©ã«ãå€ãäžæžãããŸãã |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | _ïŒæªèšå®ïŒ_ | `open-sse/services/adobeFireflyClient.ts` | çæãªã¯ãšã¹ããéä¿¡ããåã®åºæ¬é
å»¶ïŒmsïŒãçµã¿èŸŒã¿ã®ããã©ã«ãå€ãäžæžãããŸãã |
---
## 19. ã¢ãã«åæïŒéçºçšïŒ
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ----------------------------------- | ----------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MODELS_DEV_SYNC_ENABLED` | _ïŒæªèšå®ïŒ_ | `src/lib/modelsDevSync.ts` | models.dev ã®æéåæã匷å¶çã«äžæžãããŸããæªèšå® = èšå® > AIïŒ`modelsDevSyncEnabled`ïŒã«åŸããŸãã`0`/`false`/`off`/`no` 㯠**DB ã®èšå®ããåªå
ãã**ã宿åæãš `getModelsDevPricing()` ã«ãã SQL/JSON ã¹ãã£ã³ã®äž¡æ¹ãã¹ãããããŸãïŒããã·ã¥ããŒããåãã€ãã³ãã«ãŒãäžã§åæ¢ããå Žåã®åŸ©æ§çšïŒã`1`/`true`/`on`/`yes` ãæå®ãããšãåæã匷å¶çã«æå¹ã«ãªããŸããæéã®ä¿å/æ¶å»æã«ã¯åŒãç¶ã `backupDbFile("pre-write")` ãåŒã³åºãããŸããã60 åéã®ã¹ããããªã³ã°äžããŸã㯠`DISABLE_SQLITE_AUTO_BACKUP` ãèšå®ãããŠããå Žåã¯äœãå®è¡ãããŸããã |
| `MODELS_DEV_SYNC_INTERVAL` | `86400`ïŒ24æéïŒ | `src/lib/modelsDevSync.ts` | éçºæã®ã¢ãã«ã«ã¿ãã°åæã®ééïŒç§åäœïŒã |
| `CONTEXT_WINDOW_RECONCILE_INTERVAL` | `86400`ïŒ24æéïŒ | `src/lib/contextWindowResolver.ts` | èªå·±ä¿®æ£åã³ã³ããã¹ããŠã£ã³ããŠèª¿æŽåŠçïŒ5004ïŒã®å®è¡ééïŒç§åäœïŒã`/models` ã®æ€åºã«ãã£ãŠãããã€ããŒãã宣èšããããŠã£ã³ããŠãã«ã¿ãã°ãšç°ãªãå Žåããããã `auto:discovery` ãªãŒããŒã©ã€ããšããŠåºå®ããŸããç¡å¹ã«ããã«ã¯ `0` ã«èšå®ããŸããåææžã¿ã®ããŒã¿ãåå©çšãïŒæ°ããªååŸã¯è¡ããŸããïŒã`manual` ãªãŒããŒã©ã€ããäžæžãããããšã¯ãããŸããã |
---
## 20. ãããã€ããŒåºæã®èšå®
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OPENROUTER_CATALOG_TTL_MS` | `86400000`ïŒ24æéïŒ | `src/lib/catalog/openrouterCatalog.ts` | OpenRouterã¢ãã«ã«ã¿ãã°ã®ãã£ãã·ã¥TTLã |
| `MODEL_CATALOG_INCLUDE_NAMES` | `true` | `src/shared/constants/featureFlagDefinitions.ts` | `/v1/models`ã®ã¬ã¹ãã³ã¹ã«è¡šç€ºçšã®`name`ãã£ãŒã«ããå«ããŸããIDã®ã¿ãæ³å®ããã¯ã©ã€ã¢ã³ãã§ã¯ç¡å¹ã«ããŠãã ããã |
| `CATALOG_BUILD_TIMEOUT_MS` | `8000`ïŒ8ç§ïŒ | `src/app/api/v1/models/catalogCache.ts` | çµ±åããã`GET /v1/models`ã«ã¿ãã°åæ§ç¯ã®ã³ãŒã«ããã¹åŸ
æ©äžéïŒ#12627ïŒãã¿ã€ã ã¢ãŠãæãæ£åžžãªææ°ã®200ã¬ã¹ãã³ã¹ãååšããå Žåã¯ãããè¿ããŸãã |
| `OMNIROUTE_SYNCED_CATALOG_STALE_AFTER_MS` | `2592000000`ïŒ30æ¥ïŒ | `src/lib/db/models/activeSyncedCatalog.ts` | æ¥ç¶ã®åææžã¿ã¢ãã«äžèЧãã«ãŒãã£ã³ã°ã®ä¿¡é Œã§ããæ
å ±æºã§ã¯ãªããªããã¬ãžã¹ããªãžã®ãã§ã€ã«ãªãŒãã³ãè¡ããããŸã§ã®æéïŒ#12849ïŒãã¿ã€ã ã¹ã¿ã³ããäžåºŠãèšå®ãããŠããªãè¡ã¯å€ããã®ãšèŠãªãããŸãã |
| `OMNIROUTE_ANALYTICS_CACHE_TTL_MS` | `60000`ïŒ60ç§ïŒ | `src/lib/usage/analyticsResponseCache.ts` | æéã®ããã`GET /api/usage/analytics`ã¬ã¹ãã³ã¹ãåãã¯ãšãªæååã«å¯ŸããŠåå©çšããæéïŒ#15629ïŒã`0`ã§ãã£ãã·ã¥ãç¡å¹ã«ããŸãã |
| `OMNIROUTE_ANALYTICS_CACHE_MIN_COMPUTE_MS` | `1000`ïŒ1ç§ïŒ | `src/lib/usage/analyticsResponseCache.ts` | çæã«å°ãªããšããã®æéãèŠããåæã¬ã¹ãã³ã¹ã®ã¿ããã£ãã·ã¥ãããããå°èŠæš¡ãªã€ã³ã¹ã¿ã³ã¹ã§ã¯åžžã«ææ°ããŒã¿ã衚瀺ãããŸãã |
| `NANOBANANA_POLL_TIMEOUT_MS` | `120000` | `open-sse/handlers/imageGeneration.ts` | NanoBananaç»åçæãžã§ãã®æå€§åŸ
æ©æéã |
| `NANOBANANA_POLL_INTERVAL_MS` | `2500` | `open-sse/handlers/imageGeneration.ts` | NanoBananaãžã§ãã®ããŒãªã³ã°é »åºŠã |
| `ADOBE_FIREFLY_SUBMIT_BASE_DELAY_MS` | `8000` | `open-sse/services/adobeFireflyUpscale.ts` | Adobe Fireflyã¢ããã¹ã±ãŒã«éä¿¡å詊è¡ã®ææ°ããã¯ãªãã«ãããåºæ¬é
å»¶ã |
| `AWS_REGION` | _ïŒæªèšå®ïŒ_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | AWS Bedrockãšã³ããã€ã³ãïŒKiroãé³å£°ïŒã®æ§ç¯ã«äœ¿çšãããªãŒãžã§ã³ã |
| `AWS_DEFAULT_REGION` | _ïŒæªèšå®ïŒ_ | `src/lib/providers/validation.ts`, `open-sse/handlers/audioSpeech.ts` | `AWS_REGION`ãèšå®ãããŠããªãå Žåã®ãã©ãŒã«ããã¯ã |
| `CLOUDFLARE_ACCOUNT_ID` | _ïŒæªèšå®ïŒ_ | `open-sse/executors/cloudflare-ai.ts` | Cloudflare Workers AIã®ã¢ã«ãŠã³ãIDã |
| `CLOUDFLARE_PLAYGROUND_CHROME_PATH` | _ïŒæªèšå®ïŒ_ | `open-sse/executors/cloudflare-playground.ts` | Cloudflare AI Playgroundãšã°ãŒãã¥ãŒã¿ãŒçšã®ãã¹ã¯ãããçChromeãã€ããªã®ãã«ãã¹ããããã¬ã¹ãã£ã³ã¬ãŒããªã³ããã§ãã¯ã«ãã£ãŠPlaywright忢±ã®Chromiumããããã¯ãããå Žåã«äœ¿çšãããŸãã |
| `CODEBUDDY_SYSTEM_PROMPT_MAX_LEN` | â
(â) | `open-sse/executors/codebuddy/shared.ts` | CodeBuddyïŒäžåœçããã³åœéçïŒã«éä¿¡ãããåŒã³åºãå
ã®ã·ã¹ãã ããã³ããã«å¯Ÿãããªãã·ã§ã³ã®é·ãå¶éãããã©ã«ãã§ã¯ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®èå¥ããŒã«ãŒãå«ãããã³ããã®ã¿ãäžç«çãªãã®ã«çœ®ãæããããŸãïŒTencentã®ã³ã³ãã³ããã£ã«ã¿ãŒãããããæåŠããããïŒãé·ãããã³ããã¯ä¿æãããŸãã0ãã倧ããæŽæ°ãæå®ãããšããã®æåæ°ãè¶
ãããã¹ãŠã®ã·ã¹ãã ããã³ããã眮ãæããããŸããæªèšå®ã`0`ããŸãã¯æŽæ°ä»¥å€ã®å€ã®å Žåãé·ãå¶éã¯ç¡å¹ã«ãªããŸãã眮ãæãã®ãã³ã«ãã©ã®ã«ãŒã«ïŒèå¥ããŒã«ãŒãŸãã¯é·ãïŒãé©çšããããããã°ã«èšé²ãããŸãã |
| `CLOUDFLARE_API_BASE` | `https://api.cloudflare.com/client/v4` | `src/app/api/settings/proxy/cloudflare-deploy/route.ts` | ãããã·ããŒã«ã®Workersãªã¬ãŒãããã€ã€ãŒã䜿çšããCloudflare REST APIã®ããŒã¹URLãäžæžãããŸãïŒ#4640 / 9router#1360ïŒã |
| `NEXT_PUBLIC_CLOUDFLARE_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/CloudflareRelayModal.tsx` | ãããã·ããŒã«ã®ãDeploy Relayãã¢ãŒãã«ã§ææ¡ãããããã©ã«ãã®workerãããžã§ã¯ãåã |
| `NEXT_PUBLIC_CLOUDFLARE_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | `false`ã«èšå®ãããšãProxy Poolã¿ãã§Cloudflare Workersãªã¬ãŒãªãã·ã§ã³ãé衚瀺ã«ãªããŸãã |
| `CLOUDFLARED_BIN` | èªåæ€åº | `src/lib/cloudflaredTunnel.ts` | `cloudflared` ãã€ããªãžã®ã«ã¹ã¿ã ãã¹ã |
| `CLOUDFLARED_PROTOCOL` | `http2` | `src/lib/cloudflaredTunnel.ts` | ãã³ãã«è»¢éãããã³ã«ïŒ`http2`ïŒããã©ã«ãïŒã`quic`ããŸã㯠`auto`ã |
| `CLOUDFLARED_CONFIG` | _ïŒæªèšå®ïŒ_ | `src/lib/cloudflaredTunnel.ts` | ããŒã«ã«ã§ç®¡çããã cloudflared ã® `config.yml`ïŒ`tunnel:`ã`credentials-file:`ã`ingress:` ãå«ãïŒãžã®ãã¹ãèšå®ãããšãOmniRoute ã¯äžæçãªã¯ã€ãã¯ãã³ãã«ã®ä»£ããã« `tunnel --config run`ïŒååä»ããã³ãã«ïŒãå®è¡ããŸãã |
| `CLOUDFLARED_HOSTNAME` | _ïŒèšå®ã® ingress ããååŸïŒ_ | `src/lib/cloudflaredTunnel.ts` | ååä»ããã³ãã«ã®å
¬éãã¹ãåïŒäŸïŒ`ai.example.com`ïŒãäžæžããã`publicUrl`/`apiUrl` ãšããŠå ±åããŸããæªèšå®ã®å Žåã¯ãèšå®å
ã®æåã® `ingress` ãã¹ãåããèªã¿åãããŸãã |
| `DENO_DEPLOY_API_BASE` | `https://api.deno.com/v2` | `src/app/api/settings/proxy/deno-deploy/route.ts` | ãããã·ããŒã«ã®ãªã¬ãŒãããã€ã€ãŒã䜿çšãã Deno Deploy REST API ã®ããŒã¹ãäžæžãããŸãïŒ#4643 / 9router#1437ïŒã |
| `NEXT_PUBLIC_DENO_RELAY_DEFAULT_PROJECT` | `omniroute-deno-relay` | `src/app/(dashboard)/dashboard/settings/components/proxy/DenoRelayModal.tsx` | ãããã·ããŒã«ã®ãDeploy Relayãã¢ãŒãã«ã§ææ¡ãããããã©ã«ãã® Deno Deploy ã¢ããªåã |
| `NEXT_PUBLIC_DENO_RELAY_ENABLED` | `true` | `src/app/(dashboard)/dashboard/settings/components/proxy/ProxyPoolTab.tsx` | `false` ã«èšå®ãããšãProxy Pool ã¿ãã§ Deno Deploy ãªã¬ãŒãªãã·ã§ã³ãé衚瀺ã«ãªããŸãã |
| `SEARCH_CACHE_TTL_MS` | `300000`ïŒ5 åïŒ | `open-sse/services/searchCache.ts` | æ€çŽ¢ APIïŒPerplexityãBrave ãªã©ïŒã®ã¬ã¹ãã³ã¹ãã£ãã·ã¥ã«å¯Ÿãã TTLã |
| `ENABLE_CC_COMPATIBLE_PROVIDER` | `false` | `src/shared/utils/featureFlags.ts` | Claude Code å°çšãªã¬ãŒåãã®è©Šéšç㪠CC äºæãããã€ã㌠UI ã衚瀺ããŸãã |
| `NINEROUTER_HOST` | `127.0.0.1` | `open-sse/executors/ninerouter.ts` | çµã¿èŸŒã¿ 9router ã€ã³ã¹ã¿ã³ã¹ããªãã¹ã³ãããã¹ããäžæžãããŸãã |
| `NINEROUTER_PORT` | `20130` | `open-sse/executors/ninerouter.ts` | çµã¿èŸŒã¿ 9router ã€ã³ã¹ã¿ã³ã¹ããªãã¹ã³ããããŒããäžæžãããŸãã |
| `EMBED_WS_PROXY_HOST` | `127.0.0.1` | `src/lib/services/embedWsProxy.ts` | çµã¿èŸŒã¿ãµãŒãã¹ã® WebSocket ãããã·çšãã€ã³ããã¹ãïŒããã©ã«ãã§ã¯ã«ãŒãããã¯ã®ã¿ïŒã |
| `EMBED_WS_PROXY_PORT` | `20131` | `src/lib/services/embedWsProxy.ts` | çµã¿èŸŒã¿ãµãŒãã¹ã® WebSocket ãããã·ãµãŒããŒçšããŒãã |
| `CLIPROXYAPI_HOST` | `127.0.0.1` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI ããªããžãã¹ãïŒã¬ã¬ã·ãŒçµ±åïŒã |
| `CLIPROXYAPI_PORT` | `5544` | `open-sse/executors/cliproxyapi.ts` | CLIProxyAPI ããªããžããŒãã |
| `CLIPROXYAPI_API_KEY` | _ïŒç©ºïŒ_ | `open-sse/handlers/chatCore/cliproxyapiCredentials.ts` | `cliproxyapi_api_key` èšå®ãååšããªãå Žåã®ããŒã¿ãã¬ãŒã³ããŒã®ãã©ãŒã«ããã¯ã |
| `CLIPROXYAPI_MANAGEMENT_KEY` | _ïŒç©ºïŒ_ | `src/lib/services/cliproxyAccountHealth.ts` | å€éšç®¡çãããŠãã CLIProxyAPI ã€ã³ã¹ã¿ã³ã¹ããã¢ã«ãŠã³ãã®å¥å
šæ§æ
å ±ãèªã¿åãããã®ç®¡çããŒã |
| `CLIPROXYAPI_CONFIG_DIR` | `~/.cli-proxy-api` | `src/lib/versionManager/processManager.ts` | CLIProxyAPI ã®èšå®ãã£ã¬ã¯ããªã |
| `CLIPROXY_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose ã `cliproxyapi` ãµã€ãã«ãŒãå
¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ïŒ#12578ïŒããã®ããŒã¿ããªã¥ãŒã ã«ã¯ãããã€ããŒã® OAuth/API èªèšŒæ
å ±ãä¿æãããåºå®ãããã€ã¡ãŒãžã«ã¯ç°å¢å€æ°ããŒã¹ã®ããŒã¿ãã¬ãŒã³ `api-keys` äžæžãããªãïŒããŠã³ãããã `config.yaml` ã®ã¿ïŒããã`0.0.0.0` ã«ãããšèªèšŒæ
å ±ãä¿æãããµãŒãã¹ã LAN å
šäœã«å
¬éãããŸãã |
| `MUX_SERVICE_PORT` | `8322` | `src/lib/services/bootstrap.ts` | çµã¿èŸŒã¿ã® MuxïŒcoder/muxïŒãšãŒãžã§ã³ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŒã¢ã³ããªãã¹ã³ããããŒããäžæžãããŸãïŒåžžã« 127.0.0.1ïŒã |
| `OPENWA_SERVICE_PORT` | `8323` | `src/lib/services/bootstrap.ts` | çµã¿èŸŒã¿ã® open-waïŒWhatsApp Web èªååïŒããŒã¢ã³ããªãã¹ã³ããããŒããäžæžãããŸãïŒåžžã« 127.0.0.1ïŒã |
| `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario çµã¿èŸŒã¿ãµãŒãã¹ã®ãã€ã³ãïŒæ¥ç¶å
ãã¹ãïŒããã©ã«ãã§ã¯ã«ãŒãããã¯ã®ã¿ïŒã |
| `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario çµã¿èŸŒã¿ãµãŒãã¹ã®ããŒãã |
| `DARIO_HOST` | `127.0.0.1` | `open-sse/executors/dario.ts` | Dario çµã¿èŸŒã¿ãµãŒãã¹ã®ãã€ã³ãïŒæ¥ç¶å
ãã¹ãïŒããã©ã«ãã§ã¯ã«ãŒãããã¯ã®ã¿ïŒã |
| `DARIO_PORT` | `3456` | `open-sse/executors/dario.ts` | Dario çµã¿èŸŒã¿ãµãŒãã¹ã®ããŒãã |
| `LOCAL_HOSTNAMES` | _ïŒç©ºïŒ_ | `open-sse/config/providerRegistry.ts` | ãããŒã«ã«ããšããŠæ±ã远å ã®ãã¹ãåãã«ã³ãåºåãã§æå®ããŸãïŒDocker ãµãŒãã¹åãªã©ïŒã |
`ENABLE_CC_COMPATIBLE_PROVIDER` ã¯ãClaude Code ã¯ã©ã€ã¢ã³ãã®ã¿ãåãä»ãããµãŒãããŒãã£è£œãªã¬ãŒå°çšã§ãã
OmniRoute ã¯ããããã®ãªã¬ãŒããªã¯ãšã¹ããåãä»ããããããã«ãªã¯ãšã¹ããæžãæããŸããClaude Code CLI ã®ã¿ã䜿çšãããå ŽåããŸãã¯ãããã®ãªã¬ãŒãäœãããããªãå Žåã¯ããã®èšå®ãç¡å¹ã®ãŸãŸã«ãã代ããã«éåžžã® Anthropic äºæãããã€ããŒã远å ããŠãã ããã
---
## 21. ãããã·ã®ãã«ã¹
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------------------- | ------------------------ | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | `src/lib/proxyHealth.ts` | é«é倱æãã«ã¹ãã§ãã¯ã®ã¿ã€ã ã¢ãŠãã |
| `PROXY_LATENCY_WINDOW_HOURS` | `3` | `src/lib/db/proxies.ts` | ã¬ã€ãã³ã·ãŒæé©åããŒã«æŠç¥ã«ãããŠãåè£ãããã·ã®å¹³åã¬ã€ãã³ã·ãŒãèšç®ããããã®æéæ ïŒæéåäœïŒã |
| `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | `src/lib/proxyHealth.ts` | ãã«ã¹ãã§ãã¯çµæãã£ãã·ã¥ã® TTLã |
| `PROXY_HEALTH_UNHEALTHY_CACHE_TTL_MS` | `2000` | `src/lib/proxyHealth.ts` | 倱æãããããã·ãã«ã¹ãããŒãã®ãã£ãã·ã¥ TTLãäžæçãªãããã·ã¿ã€ã ã¢ãŠããé«äžŠè¡æ§ã®ç¶æ³ã§çºçããå Žåã«ãå®éã«åæ¢ããŠãããããã·ã«å¯Ÿããé«é倱æãç¡å¹ã«ããããšãªãè¿
éã«å詊è¡ã§ãããããããã `PROXY_HEALTH_CACHE_TTL_MS` ããçãèšå®ããŠãã ããã |
| `PROXY_HEALTH_ENABLED` | `true` | `src/lib/proxyHealth/scheduler.ts` | ç»é²æžã¿ã®ãããã·ã宿çã«ãããŒãããããã¯ã°ã©ãŠã³ããããã·ãã«ã¹ã¹ã±ãžã¥ãŒã©ãŒãç¡å¹ã«ããã«ã¯ã`false` ã«èšå®ããŸãã |
| `PROXY_HEALTH_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | ããã¯ã°ã©ãŠã³ããã«ã¹ã¹ã±ãžã¥ãŒã©ãŒã®ã¹ã€ãŒãééïŒããªç§åäœãæå°å€ã¯ `60000`ïŒã |
| `PROXY_HEALTH_RELAY_INTERVAL_MS` | `21600000` | `src/lib/proxyHealth/relayCadence.ts` | ãããŒãã«ãã£ãŠèª²é察象ã®ãµãŒããŒã¬ã¹ isolate ãèµ·åãããšããžãªã¬ãŒãããã·ïŒ`deno`/`vercel`/`cloudflare`ïŒã®ãããŒãééïŒããªç§ãæå°å€ã¯ `60000`ïŒã |
| `PROXY_HEALTH_RECOVERY_INTERVAL_MS` | `600000` | `src/lib/proxyHealth/scheduler.ts` | ããã¯ã°ã©ãŠã³ãã®åŸ©æ§ãã¹ééïŒããªç§ïŒã以åã«ç°åžžãšå€å®ããããããã·ãåãããŒãããé »åºŠãæå®ãã埩æ§ãããããã·ãåèµ·åãªãã§ããŒããŒã·ã§ã³ã«æ»ããããã«ããŸãã`60000` æªæºã®å€ã¯ããã©ã«ãå€ã«ãã©ãŒã«ããã¯ããŸãã |
| `PROXY_HEALTH_TEST_URL` | `https://httpbin.org/ip` | `src/lib/proxyHealth/probeTarget.ts` | ã¹ã±ãžã¥ãŒã©ãŒããã³ `/api/settings/proxies/auto-test` ãšã³ããã€ã³ãã§äœ¿çšãããå°éå¯èœæ§ãããŒãã®ã¿ãŒã²ãããå
¬éã®ããã©ã«ãã䜿çšããªãããã«ããã«ã¯ãå
éšãŸãã¯ã»ã«ããã¹ãã® URL ãæå®ããŠãã ããã |
| `PROXY_HEALTH_TEST_CONCURRENCY` | `10` | `src/lib/proxyHealth/probeTarget.ts` | ãããããšã«åæéå§ããããããŒãæ°ãã¹ã±ãžã¥ãŒã©ãŒãš `/api/settings/proxies/auto-test` ãšã³ããã€ã³ãã§å
±æãããŸããæå°å€ã¯ 1ãæå€§å€ã¯ 50 ã§ãã |
| `PROXY_HEALTH_TEST_STAGGER_MS` | `100` | `src/lib/proxyHealth/probeTarget.ts` | ãããå
ã§ 2 ã€ã®ãããŒããéä¿¡ããéã®é
å»¶ïŒããªç§ïŒãããããªãå Žåããããå
šäœãåæã«éä¿¡ãããå
±æã®éä¿¡å
IP ã«ãã£ãŠã¬ãŒãå¶éã®ããã¿ãŒã²ããã«æµè§Šããå¯èœæ§ããããŸããééãç¡å¹ã«ããã«ã¯ `0` ã«èšå®ããŸããäžé㯠5000 ã§ãã |
| `PROXY_HEALTH_USE_PROVIDER_TARGET` | `true` | `src/lib/proxyHealth/providerProbeTarget.ts` | ãããã·ã«å²ãåœãŠããããããã€ããŒã®å®éã®ãã¹ãïŒ`GET /models`ãAPI ããŒãªãïŒãžã®ãããŒãã忢ãã代ããã«åžžã« `PROXY_HEALTH_TEST_URL` ã䜿çšããã«ã¯ã"false" ã«èšå®ããŸãã |
| `PROXY_HEALTH_AUTO_DEACTIVATE` | `false` | `src/lib/proxyHealth/statusPolicy.ts` | `false`ïŒããã©ã«ãïŒã®å Žåãèªåå°éå¯èœæ§ãããŒãïŒã¹ã±ãžã¥ãŒã©ãŒããã³ `/api/settings/proxies/auto-test` ã®ããã¹ãŠãã¹ãããã¿ã³ïŒã¯**èªã¿åãå°çš**ãšãªãããããã·ã®ã¹ããŒã¿ã¹ã倿ŽããŸãããã¢ã¯ãã£ãïŒéã¢ã¯ãã£ããèšå®ã§ããã®ã¯ãªãã¬ãŒã¿ãŒã®ã¿ãšãªããããäžå®å®ãªãããŒãã«ãã£ãŠå²ãåœãŠæžã¿ãããã·ã䜿çšäžèœã«ãªãããšãé²ããŸãïŒ#6246ïŒãåŸæ¥ã®ãã¹ãåŸã«ã¹ããŒã¿ã¹ãèšå®ããåäœã«æ»ãã«ã¯ã`true` ã«èšå®ããŸãã |
| `FLUSH_EMPTY_RETRY_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | ãªããã€ã³ã®æ©èœãã©ã°ïŒ[FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ãåç
§ãããã·ã¥ããŒãã® DB ãªãŒããŒã©ã€ããåªå
ãããŸãïŒã`true`ïŒãŸã㯠`1`ã`yes`ïŒã«ãããšã空㮠200 ãŸãã¯ã³ã³ãã³ãã空㮠502 ãè¿ã代ããã«ã空ã®ç¿»èš³æžã¿ã¹ããªãŒãã³ã°ã¿ãŒã³ãéåžžã®èªèšŒæ
å ±ãã¹çµç±ã§å詊è¡ããŸãïŒæå€§ `STREAM_RECOVERY.EMPTY_TURN_RETRY_MAX` åïŒã |
| `PROXY_POOL_EGRESS_OBSERVATION` | `false` | `src/shared/utils/featureFlags.ts` | ãªããã€ã³ã®æ©èœãã©ã°ïŒ[FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ãåç
§ãããã·ã¥ããŒãã® DB ãªãŒããŒã©ã€ããåªå
ãããŸãïŒã`true`ïŒãŸã㯠`1`ã`yes`ïŒã«ãããšãããã·ã¥ããŒãã®ãããã·ããŒã«ã®äžã«èªã¿åãå°çšã®éä¿¡ãã©ãã£ãã¯èŠ³æž¬æ
å ±ïŒãããã·ãã°ã«åºã¥ãéå» 24 æéã®äžæãªéä¿¡å
IPãæ¥ç¶æ°ãããã³ 1 ã€ã® IP ã®èåŸã§èŠ³æž¬ãããæå€§æ°ïŒã衚瀺ãããŸããã«ãŒãã£ã³ã°ã«ã¯äœ¿çšãããŸããã |
| `PROXY_OPERATOR_EGRESS_ENABLED` | `false` | `src/shared/utils/featureFlags.ts` | ãªããã€ã³ã®æ©èœãã©ã°ïŒ[FEATURE_FLAGS.md](./FEATURE_FLAGS.md) ãåç
§ãããã·ã¥ããŒãã® DB ãªãŒããŒã©ã€ããåªå
ãããŸãïŒã`true`ïŒãŸã㯠`1`ã`yes`ïŒã«ãããšããªãã¬ãŒã¿ãŒããéä¿¡ãããæ¥ä»ä»ãã®èŠ³æž¬æžã¿ã¢ãã¬ã¹ãããŒã«ã¡ã³ããŒããšã«åãå
¥ãã衚瀺ããã³ããŒã«é åºã®ããã«ãžã£ãŒãã«ã®èªã¿åãçµæãšããŒãžããŸãã |
| `PROXY_OPERATOR_EGRESS_WINDOW_HOURS` | `24` | `src/lib/db/proxyOperatorEgress.ts` | ãªãã¬ãŒã¿ãŒããéä¿¡ããããšã°ã¬ã¹è¡ã®èŠ³æž¬æéïŒæéåäœãèªã¿åãã®ãã³ã«åç
§ãããåèµ·åã¯äžèŠã§ãïŒã`1..168` ã®ç¯å²ã«å¶éãããŸããç¯å²å€ãæ°å€ä»¥å€ããŸãã¯ç©ºã®å Žåã¯ãããã»ã¹å
šäœã§èŠåãäžåºŠã ãåºã㊠24 ã«ãã©ãŒã«ããã¯ããäŸå€ã¯ã¹ããŒããŸããã |
| `PROXY_AUTO_REMOVE` | `false` | `src/lib/proxyHealth/scheduler.ts` | é£ç¶ãã倱æãç¹°ãè¿ãããåŸã«ãã¹ã±ãžã¥ãŒã©ãŒããããã·ãèªååé€ã§ããããã«ããã«ã¯ `true` ã«èšå®ããŸãã |
| `PROXY_AUTO_REMOVE_AFTER` | `3` | `src/lib/proxyHealth/scheduler.ts` | ã¹ã±ãžã¥ãŒã©ãŒããããã·ãèªååé€ãããŸã§ã®é£ç¶å€±æåæ°ïŒ`PROXY_AUTO_REMOVE=true` ã®å ŽåïŒã |
| `PROXY_AUTO_DISABLE` | `false` | `src/lib/proxyHealth/scheduler.ts` | é£ç¶ãã倱æãç¹°ãè¿ãããåŸã«ããããã·ãåé€ãã代ããã«ãã¹ã±ãžã¥ãŒã©ãŒããœããç¡å¹åïŒã¹ããŒã¿ã¹ã¯ `dead`ãåé€ã¯ããªãïŒã§ããããã«ããã«ã¯ `true` ã«èšå®ããŸãã`PROXY_AUTO_REMOVE` ã«ä»£ããéç Žå£çãªéžæè¢ã§ãããããã·ã¯ããŒã«ïŒããŒããŒã·ã§ã³ã®è§£æ±ºå¯Ÿè±¡ããå³åº§ã«é€å€ããïŒã¹ã³ãŒãããŒã«ã®è§£æ±ºã§äœ¿çšããã皌åäžã¹ããŒã¿ã¹ã®ãã£ã«ã¿ãŒã«ãã£ãŠãã§ã«é€å€ãããŸãïŒãåã³ãããŒãã«æåããããã«ãªããšèªåçã«åæå¹åãããŸãããããå€ã¯ `PROXY_AUTO_REMOVE_AFTER` ãšå
±æããŸããäž¡æ¹ã®ãã©ã°ã `true` ã®å Žåã¯ã`PROXY_AUTO_REMOVE` ãåªå
ãããŸãã |
| `PROXY_HEALTH_PASSIVE_SKIP` | `false` | `src/lib/proxyHealth/scheduler.ts` | ãªããã€ã³ã®ããã·ãã¹ãããïŒ`true` ã®å ŽåãçŽè¿ã®æ¬çªãã©ãã£ãã¯ã«ãã£ãŠãšã³ããã€ã³ãã®æ£åžžæ§ããã§ã«èšŒæãããŠããã°ïŒæéå
ã«å°ãªããšã 1 åã®æåãããããã®ãããã·ã«èµ·å ãã倱æããªãã芳枬ããããããã€ããŒãã¡ããã© 1 ã€ã§ããå ŽåïŒãã¹ã±ãžã¥ãŒã©ãŒã¯ãã®ãšã³ããã€ã³ãã«å¯Ÿããã©ã€ããããŒããã¹ãããããŸããããã©ã«ãã§ã¯ãªãã§ããã¹ãŠã®ãããã·ããããŒããããŸãã |
| `PROXY_PASSIVE_WINDOW_MS` | `300000` | `src/lib/proxyHealth/passiveVerdict.ts` | ããã·ãã¹ããããåç
§ããæ¬çªãã©ãã£ãã¯ã®æéïŒããªç§åäœã`60000..599999` ã®ç¯å²ã«å¶éïŒãçŽè¿ã®å€±æãåžéãããã«åªå
ãããããã10 åéã®ã¹ã€ãŒãééããçãèšå®ãããŠããŸãã |
| `OMNIROUTE_CONTROL_PLANE_PROXY_DIRECT_FALLBACK` | `false` | `src/shared/constants/featureFlagDefinitions.ts` | ãããã·ã®å°éå¯èœæ§ã«é¢ããäºåãã§ãã¯ã倱æããå Žåã«ãOAuth ããã³ãããã€ããŒæ€èšŒãããŒãåºå®ããããããã·ãè¿åããŠçŽæ¥æ¥ç¶ããããšãèš±å¯ããŸããå®éã®åªå
é äœã¯ãFeature Flags ã® DB ãªãŒããŒã©ã€ã > ç°å¢å€æ° > ããã©ã«ãã§ãã |
| `RATE_LIMIT_MAX_WAIT_MS` | `30000` (30ç§) | `src/lib/resilience/settings.ts` | ããã©ã«ãã®**ãã¥ãŒåŸ
æ©**æéæ : ãªã¯ãšã¹ãããããã€ããŒã¹ããããåŸ
ã¡ãæåŠãããŠã¢ããã¹ããªãŒã ã«å°éããªããŸãŸãã¥ãŒå
ã«çãŸããæéããžã§ãã®å®è¡éå§æã«ã¿ã€ããŒã¯è§£é€ãããŸããå®è¡æé㯠`RATE_LIMIT_EXECUTION_MAX_WAIT_MS` ã«ãã£ãŠå¥éå¶éãããŸããç°å¢å€æ°ã§èšå®ãããã®ã¯ããã©ã«ãå€ã®ã¿ã§ããæ°žç¶åããã `resilienceSettings.requestQueue.maxWaitMs`ãç¶ããŠæ¥ç¶ããšã® `rateLimitOverrides.maxWaitMs` ãããããããã®å€ããåªå
ãããŸãã |
| `RATE_LIMIT_EXECUTION_MAX_WAIT_MS` | `600000` (10å) | `open-sse/services/rateLimitManager.ts` | åãå
¥ãããããªã¯ãšã¹ãã«ã€ããŠãã¬ãŒãå¶éã®äºçŽãæéåãã«ãªããŸã§å®è¡ç¶æ
ã«çãŸããæéã®äžéããã¥ãŒåŸ
æ©æéæ ãšã¯åãé¢ãããŠãããããéã€ã³ã¯ãªã¡ã³ã¿ã«ã²ãŒããŠã§ã€ã§ãã§ããéå§ãé
ããŠãã¿ã€ã ã¢ãŠãããŸãã (#12027)ã |
| `RATE_LIMIT_MAX_QUEUE_DEPTH` | `0` (ç¡å¹) | `open-sse/services/rateLimitManager.ts` | ãã¥ãŒåãå
¥ãäžé: ãã®æ°ã®ãªã¯ãšã¹ãããã§ã«ãã¥ãŒã«å
¥ã£ãŠããå Žåã429 `queue_full` ã§æåŠããŸãã`0` = ç¡å¶éïŒããã©ã«ãïŒã |
| `RATE_LIMIT_AUTO_ENABLE` | _(æªèšå®)_ | `open-sse/services/rateLimitManager.ts` | æ°žç¶åãããããã·ã¥ããŒãèšå®ã«é¢ä¿ãªããã¬ãŒãå¶éã®ã»ãŒããã£ãããã®èªåæå¹åã匷å¶çã«ãªã³ãŸãã¯ãªãã«ããŸãã匷å¶çã«ãªã³ã«ããã«ã¯ `true`/`1`/`on`ã匷å¶çã«ãªãã«ããã«ã¯ `false`/`0`/`off` ãæå®ã§ããŸãã |
| `PROVIDER_COOLDOWN_ENABLED` | _(æªèšå® â ãªã)_ | `open-sse/services/providerCooldownTracker.ts` | ãªã¯ãšã¹ãããŸããã°ããŒãã«ãªãããã€ããŒïŒæ¥ç¶ã¯ãŒã«ããŠã³è¿œè·¡ã®ãªããã€ã³èšå®ãããã©ã«ãã§ã¯ãªãã§ãïŒæ¥ç¶ã¯ãŒã«ããŠã³ïŒãããã€ããŒãµãŒããããã¬ãŒã«ãŒãšæ©èœãéè€ããŸãïŒãæå¹ã«ããã«ã¯ `true`/`1`/`on` ãæå®ã§ããŸãã |
| `PROVIDER_COOLDOWN_MIN_MS` | `5000` | `open-sse/services/providerCooldownTracker.ts` | é害ãçºçãããããã€ããŒïŒæ¥ç¶ãå詊è¡ãããŸã§ã®æå°ã¯ãŒã«ããŠã³æéïŒããªç§ïŒãé£ç¶ããé害忰ã«å¿ããŠææ°é¢æ°çã«å¢å ããŸãã`PROVIDER_COOLDOWN_ENABLED` ãæå¹ãªå Žåã«ã®ã¿äœ¿çšãããŸãã |
| `PROVIDER_COOLDOWN_MAX_MS` | `300000` (5å) | `open-sse/services/providerCooldownTracker.ts` | é害ãçºçãããããã€ããŒïŒæ¥ç¶ãå詊è¡ãããŸã§ã®æå€§ã¯ãŒã«ããŠã³æéïŒããªç§ïŒã®äžéã`PROVIDER_COOLDOWN_ENABLED` ãæå¹ãªå Žåã«ã®ã¿äœ¿çšãããŸãã |
| `STREAM_RECOVERY_ENABLED` | _(æªèšå® â ãªã)_ | `src/lib/resilience/settings.ts` (åæå€) â `open-sse/services/streamRecovery.ts` (ããžãã¯) | **æŠèŠ:** éäžã§åæãããã¢ããã¹ããªãŒã ã¹ããªãŒã ãééçã«åŸ©æ§ããŸãïŒfree-claude-codeããã®ç§»æ€ïŒãéå§æã®SSEãŠã£ã³ããŠã `STREAM_RECOVERY.HOLDBACK_MS`ïŒ750ããªç§ïŒãŸã§ä¿çããããšã§ã_ã³ãããå_ãã€ãŸãã¯ã©ã€ã¢ã³ãã«1ãã€ããå°éããåã«åæãããå Žåãæ¥ç¶ãå確ç«ããŠééçã«å詊è¡ããŸãã**æå¹ã«ããå Žå:** ã¹ããªãŒã éå§æã«0ãã€ãã§é »ç¹ã«åæãããäžå®å®ãªã¢ããã¹ããªãŒã ããã¹ãŠã®ã¹ããªãŒã ã§ååããŒã¯ã³å°éæéãæå€§750ããªç§å¢å ããããšã蚱容ã§ããªãå Žåã¯ããªãã®ãŸãŸã«ããŠãã ããã`true`/`1`/`on` ãæå®ã§ããŸããæ°žç¶åãããã¬ãžãªãšã³ã¹èšå®ã®åæå€ãšããŠäœ¿çšãããŸããäžåºŠèšå®ããããšãããã·ã¥ããŒãèšå®ãåªå
ãããŸãã |
| `STREAM_RECOVERY_MIDSTREAM_ENABLED` | _(æªèšå® â ãªã)_ | `src/lib/resilience/settings.ts` (åæå€) â `open-sse/services/streamRecovery.ts` (ããžãã¯) | **æŠèŠ:** ã¹ããªãŒã éäžããã®ç¶ç¶ (ãã§ãŒãº 4.4) â _ã³ãããåŸ_ ã«åãè©°ããçºçããå Žå (ãã€ãããã§ã«ã¯ã©ã€ã¢ã³ããžå°éæžã¿ã®å Žå)ãéšåçãªããã¹ãã assistant ã® prefill ãšããŠåãªã¯ãšã¹ãããæ¬ èœããæ¥å°ŸéšåãçµåããŸãããã¬ãŒã³ããã¹ãã® OpenAI äºæã¹ããªãŒã ã®ã¿ã察象ã§ããtool call ã®åŠçäžã«ã¯å®è¡ãããŸããã**æå¹ã«ããå Žå:** é·ãçæãåçéäžã§éåãã埩æ§ãããæ«å°ŸéšåãããŒã¯ã³åäœã§ã¯ãªãäžæ¬ã§å°çããããšã蚱容ã§ããå Žåã`STREAM_RECOVERY_ENABLED` ãšã¯ç¬ç«ããŠããŸã (ãªã¹ã¯ç¹æ§ãç°ãªããŸã)ã`true`/`1`/`on` ãæå®ã§ããŸãã |
| `STREAM_THROUGHPUT_WATCHDOG_ENABLED` | _(æªèšå® â ãªã)_ | `src/lib/resilience/settings.ts` â `open-sse/services/throughputWatchdog.ts` | ãªããã€ã³æ¹åŒã®ã¢ã¯ãã£ãã¹ããªãŒã æå¹åºåãŠã©ããããã°ããã£ã³ã¯ã®éä¿¡ã¯ç¶ç¶ããŠãããã®ã®ãèšå®ããã assistant åºåã¬ãŒããäžåã£ãŠããã¹ããªãŒã ãæ€åºããŸããheartbeatãusage eventã空㮠deltaãããã³ tool/reasoning ãã§ãŒãºã鲿ãšèª€èªãããããšã¯ãããŸãããã¢ã€ãã«ã¿ã€ã ã¢ãŠãããã³ããŒããããã©ã€ã³ã¿ã€ã ã¢ãŠããšã¯å¥ã®æ©èœã§ãã |
| `STREAM_THROUGHPUT_WATCHDOG_WARMUP_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | ã¹ã«ãŒãããè©äŸ¡åã®ç¶äºæéã0ïœ600000 ms ã®ç¯å²ã«å¶éãããŸãã |
| `STREAM_THROUGHPUT_WATCHDOG_WINDOW_MS` | `30000` | `src/lib/resilience/settings/normalize.ts` | æå¹åºåã®ããŒãªã³ã°ãŠã£ã³ããŠã1000ïœ600000 ms ã®ç¯å²ã«å¶éãããŸããäžæããã«ã¯ã1 ã€ã®å®å
šãªãŠã£ã³ããŠãå¿
èŠã§ãã |
| `STREAM_THROUGHPUT_WATCHDOG_MIN_BYTES_PER_SECOND` | `4` | `src/lib/resilience/settings/normalize.ts` | assistant åºåã®æå° UTF-8 ãã€ãã¬ãŒã (ä¿å®çãªããŒã¯ã³ã®ä»£æ¿ææš)ã1ïœ1000000 ã®ç¯å²ã«å¶éãããŸãã |
| `STREAM_THROUGHPUT_WATCHDOG_MIN_USEFUL_BYTES` | `1` | `src/lib/resilience/settings/normalize.ts` | 枬å®å¯èœãšèŠãªãããããŒãã§ã¯ãªãæå¹åºåãµã³ãã«ã®æå°å€ã1ïœ1000000 ãã€ãã®ç¯å²ã«å¶éãããŸãã |
| `HEALTHCHECK_STAGGER_MS` | `3000` | `src/lib/tokenHealthCheck.ts` | èµ·åæã« provider token ã® healthcheck ãå®è¡ããéé (ms)ã |
| `HEALTHCHECK_JITTER_MIN_MS` | `500` | `src/lib/tokenHealthCheck.ts` | ããŒã¹ãã鲿¢ãããããprovider token ã® healthcheck éã§ `HEALTHCHECK_STAGGER_MS` ã«å ç®ãããã©ã³ãã 㪠jitter ã®æå°å€ (ms) (Issue #1220)ã |
| `HEALTHCHECK_JITTER_MAX_MS` | `5000` | `src/lib/tokenHealthCheck.ts` | ããŒã¹ãã鲿¢ãããããprovider token ã® healthcheck éã§ `HEALTHCHECK_STAGGER_MS` ã«å ç®ãããã©ã³ãã 㪠jitter ã®æå€§å€ (ms) (Issue #1220)ã |
| `HEALTHCHECK_BATCH_SIZE` | `20` | `src/lib/tokenHealthCheck.ts` | èµ·åæã® token healthcheck ã¹ã€ãŒãã«ãããåæãã§ãã¯ã®ããããµã€ãºãå€ã倧ãããããšãããå€ãã®æ¥ç¶ã䞊åã«ãã§ãã¯ããå€ãå°ãããããšããŒã¹ãè² è·ã軜æžããŸã (Issue #7875ã#7719 ã®ãªã°ã¬ãã·ã§ã³)ã |
| `REQUEST_RETRY` | `2` | `src/sse/services/cooldownAwareRetry.ts` | model åäœã® cooldown ã¬ã¹ãã³ã¹ã«å¯Ÿããã¯ã©ã€ã¢ã³ããžãšã©ãŒãè¿ãåã«å®è¡ããèªåå詊è¡ã®åæ°ã |
| `MAX_RETRY_INTERVAL_SEC` | `30` | `src/sse/services/cooldownAwareRetry.ts` | ã¯ãŒã«ããŠã³å詊è¡éã®æå€§ããã¯ãªãééïŒç§ïŒãäžæµã® `Retry-After` ã«é¢ä¿ãªãããã®å€ãäžéãšãªããŸãã |
| `HEADROOM_URL` | `http://localhost:8787` | `src/lib/headroom/detect.ts` | Headroom ããŒã¯ã³ç¯çŽãããã·ã® URLãããã·ã¥ããŒãã®ã©ã€ããµã€ã¯ã«ïŒ`api/headroom/*`ïŒã§ã¯ãããã©ã«ãã§ã«ãŒãããã¯äžã«ããŒã«ã«ã® `headroom-ai` CLI ãèµ·åãããŸããå€éšã® Docker ãµã€ãã«ãŒãããã·ãåç
§ããå Žåã«ã®ã¿äžæžãããŠãã ããã |
### ã¹ããªãŒã 埩æ§ã®èª¿æŽçšå®æ°
åŸ©æ§æã®ä¿çåäœã¯ã
`open-sse/config/constants.ts`ïŒ`STREAM_RECOVERY`ïŒå
ã®ããŒãã³ãŒãããã宿°ã«ãã£ãŠèª¿æŽãããŸããåèãšããŠä»¥äžã«ç€ºããŸãã
ãããã倿Žããã«ã¯ãç°å¢å€æ°ã§ã¯ãªãã³ãŒãã®ç·šéãå¿
èŠã§ãã
- `STREAM_RECOVERY.HOLDBACK_MS = 750` â SSE ã®éå§ãŠã£ã³ããŠãä¿æããæéã
ããã«ãããã¯ã©ã€ã¢ã³ãã«ãã€ããã³ããããããåã«ãæ©æåæãå詊è¡ã§ããŸãã
- `STREAM_RECOVERY.BUFFER_MAX_BYTES = 65536` â ä¿æãŠã£ã³ããŠã®å³æ Œãªäžéããã®ãã€ãæ°ã
èç©ãããæç¹ã§ãã¿ã€ããŒã«é¢ä¿ãªãã³ãããïŒãã©ãã·ã¥ïŒãã¹ã¹ã«ãŒïŒããŸãã
- `STREAM_RECOVERY.EARLY_RETRY_MAX = 4` â ä¿çããŒã¿ããŸã ã³ããããããŠããªãéã«ã
äžæµã¹ããªãŒã ãééçã«åãªãŒãã³ã§ããæå€§åæ°ã
> **ãããã€ããŒããšã®ã¹ã©ã€ãã£ã³ã°ãŠã£ã³ããŠã»ã¬ãŒãå¶éïŒç°å¢å€æ°ãªãïŒïŒ** FCC ããç§»æ€ãããã
> ãããã€ããŒããšã®ã¹ã©ã€ãã£ã³ã°ãŠã£ã³ããŠã»ã¬ãŒãå¶éã®_ãã©ãŒã«ããã¯_ã¯ã³ãŒãå
ã«ååšããŸã
> ïŒ`open-sse/services/providerDefaultRateLimit.ts`ã`open-sse/services/rateLimitManager.ts`
> ãä»ããŠæ¥ç¶ãããŠããŸãïŒãã**ããã©ã«ãã®ãããã¯ç©º**ã§æäŸãããŠããã
> çŸæç¹ã§ã¯**éçšè
åãã®ç°å¢å€æ°ã¯ãããŸãã**ããã¹ãããã¯ãŸãã¯
> ã³ãŒãç·šéã«ãã£ãŠã®ã¿æå¹åãããŸãããã®ãããæå³çã«äžã®è¡šã«ã¯èšèŒããŠããŸãããèšå®é
ç®ã_ååšãã_
> `ïŒtoken, IPïŒ` ããšã®ãªã¬ãŒãªããã¿ãŒã¯ `RELAY_IP_PER_MINUTE`ïŒÂ§3ããããã¯ãŒã¯ãšããŒããïŒã§ãã
---
## 22. ãããã°
> [!CAUTION]
> ãããã®å€æ°ã¯**詳现ãªåºå**ãçæããæ©å¯ããŒã¿ãæŒãããããå¯èœæ§ããããŸãã**æ¬çªç°å¢ã§ã¯çµ¶å¯Ÿã«æå¹ã«ããªãã§ãã ããã**
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `CURSOR_DEBUG` | _ïŒæªèšå®ïŒ_ | `open-sse/executors/cursor.ts` | `1` ã«èšå®ãããšãCursor executor ã®è©³çްãã°ïŒãã³ãŒãæžã¿ SSE ãã£ã³ã¯ãªã©ïŒãæå¹ã«ãªããŸãã |
| `CURSOR_STREAM_DEBUG` | _ïŒæªèšå®ïŒ_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG` ã®åŸæ¹äºæãšã€ãªã¢ã¹ã§ãã |
| `CURSOR_DUMP_FILE` | _ïŒæªèšå®ïŒ_ | `open-sse/executors/cursor.ts` | `CURSOR_DEBUG=1` ã®å Žåã«ãçã®ãã³ãŒãæžã¿ Cursor ãã£ã³ã¯ãåºåããä»»æã®ãã¡ã€ã«ãã¹ã§ãã |
| `CURSOR_STREAM_TIMEOUT_MS` | `300000` | `open-sse/executors/cursor.ts` | Cursor executor ã®ã¹ããªãŒã ã¢ã€ãã«ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã§ãã |
| `CURSOR_KV_GRACE_MS` | `2000` | `open-sse/executors/cursor.ts` | ãã€ãããããã¡ãŒã«æ®ã£ãŠããå Žåã«ãcomposer ã® kv_after_text ãœããã¿ãŒãããŒã¿ãŒã®åŸã«èšããç¶äºæéïŒããªç§ïŒã§ããæ«å°Ÿã® exec_mcp ããŒã«åŒã³åºãããã¬ãŒã ãå®äºããããã®æéã確ä¿ããŸãã |
| `CURSOR_TOOL_DIRECTIVE` | æå¹ïŒ`!== "0"`ïŒ | `open-sse/executors/cursor.ts` | composer-2.5 ã確å®ã«ããŒã«åŒã³åºããçºè¡ããããã«ããããŒã«ã³ããããã£ã¬ã¯ãã£ãã§ããç¡å¹ã«ããã«ã¯ `0` ã«èšå®ããŸãã |
| `OMNIROUTE_SYSTEM_INSTRUCTION_APPEND` | _ïŒæªèšå®ïŒ_ | `open-sse/translator/request/claude-to-openai.ts`, `open-sse/translator/response/openai-to-claude.ts` | 倿åŸã«ã·ã¹ãã ã¡ãã»ãŒãžãžè¿œå ãããããªãã¬ãŒã¿ãŒå®çŸ©ã®ã·ã¹ãã ããã³ããããã¹ãã§ãïŒå€æåŸã€ã³ãžã§ã¯ã·ã§ã³ïŒãcodex/Responses ããã³ `/v1/messages` ã®ãã¹ã«é©çšãããŸãããŸãããšã³ãŒãããã·ã¹ãã ããªã¢ã³ãã«ãããã¯ããé€å»ãããã£ã¬ã¯ãã£ãã®ãã¬ãã£ãã¯ã¹ãšããŠã䜿çšãããŸããç¡å¹ã«ããå Žåã¯æªèšå®ã®ãŸãŸã«ããŠãã ããã |
| `OMNIROUTE_STRIP_SYSTEM_PREAMBLE` | `0`ïŒãªãïŒ | `open-sse/translator/response/openai-to-claude.ts`, `open-sse/utils/directivePreambleStripper.ts` | `1` ã«èšå®ãããšãopenaiâclaude ã¹ããªãŒã ã®å
é ããããšã³ãŒãããã·ã¹ãã ããã³ããã®ããªã¢ã³ãã«ãããã¯ãé€å»ããŸããããã©ã«ãã§ã¯ãªãã§ãããã¥ãŒãªã¹ãã£ã¯ã¹ã¯è±èªã®æ£æãåæãšããŠãããã¬ã¹ãã³ã¹ã®ãã€ããŒãã倿Žãããããæ£åœã«ãã®ãããªã»ã¯ã·ã§ã³ã§å§ãŸãå¿çã§ã¯ããã®ã»ã¯ã·ã§ã³ã倱ãããŸãã |
| `CURSOR_IMAGE_FETCH_TIMEOUT_MS` | `15000` | `open-sse/utils/cursorImages.ts` | ãªã¢ãŒã `image_url` ããžã§ã³å
¥åã«å¯Ÿããç»åããšã®ååŸã¿ã€ã ã¢ãŠãïŒããªç§ïŒã§ãã |
| `CURSOR_STATE_DB_PATH` | _ïŒæ¢çŽ¢ïŒ_ | `open-sse/utils/cursorVersionDetector.ts` | IDE ã®ããŒãžã§ã³æ€åºã«äœ¿çšãã Cursor IDE ç¶æ
DB ã®æ€çŽ¢å
ãäžæžãããŸãã |
| `CURSOR_AGENT_CLI_VERSION` | _ïŒæ€åº / åºå®ïŒ_ | `open-sse/utils/cursorAgentCliVersion.ts` | Agent Run ã® `x-cursor-client-version: cli-âŠ` ã«äœ¿çšãã Agent CLI ãã«ã IDïŒ`YYYY.MM.DD-`ïŒã§ãã |
| `CURSOR_AGENT_BIN` | _ïŒæªèšå®ïŒ_ | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | ç»åçæã«äœ¿çšãã Cursor Agent ãã€ããªãžã®ãã¹ã§ããæªèšå®ã®å Žåããã³ãã©ãŒã¯ `providerSpecificData.agentBin`ãæ¬¡ã« PATH ã䜿çšããŸãã |
| `CURSOR_IMG_TIMEOUT_MS` | `210000` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor Agent ã®ç»åãžã§ãã«ãããç»åããšã®å®çµéæéã®äžéïŒããªç§ïŒã§ãã |
| `CURSOR_IMG_MAX_CONCURRENT` | `2` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | Cursor ç»åãžã§ãã«å¯Ÿããå
±æã·ãŒãã®åæå®è¡æ°å¶éã§ãã |
| `CURSOR_IMG_MODEL` | ãªã¯ãšã¹ã / `auto` | `open-sse/handlers/imageGeneration/providers/cursorAgentImage.ts` | ç»åãžã§ãã«äœ¿çšãã Cursor CLI ã® `--model` ãäžæžãããŸãã |
| `UC_IMAGE_POLL_INTERVAL_MS` | `2000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UCïŒuncensored.comïŒç»åçæçµæã®ããŒãªã³ã°ééïŒããªç§ïŒã§ãã |
| `UC_IMAGE_POLL_TIMEOUT_MS` | `60000` | `open-sse/handlers/imageGeneration/providers/ucImage.ts` | UC ç»åçæçµæã®ããŒãªã³ã°ã«ãããå®çµéæéã®äžéïŒããªç§ïŒã§ãã |
| `UC_VIDEO_POLL_INTERVAL_MS` | `3000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UCïŒuncensored.comïŒåç»çæçµæã®ããŒãªã³ã°ééïŒããªç§ïŒã§ãã |
| `UC_VIDEO_POLL_TIMEOUT_MS` | `300000` | `open-sse/handlers/videoGeneration/providers/ucVideo.ts` | UC åç»çæçµæã®ããŒãªã³ã°ã«ãããå®çµéæéã®äžéïŒããªç§ïŒã§ãã |
| `CURSOR_DATA_DIR` | _ïŒæ¢çŽ¢ïŒ_ | `open-sse/utils/cursorAgentCliVersion.ts` | Cursor Agent CLI ã®ããŒã¿ãã£ã¬ã¯ããªïŒ`âŠ/versions/`ïŒãäžæžãããŸããå
¬åŒ Agent ã䜿çšãããã®ãšåã倿°ã§ãã |
| `CURSOR_TOKEN` | _ïŒæªèšå®ïŒ_ | `scripts/ad-hoc/cursor-tap.cjs` | éçºè
åãããŒã«ã§äœ¿çšãããçŽæ¥æå®ã® Cursor bearer token ã§ãã |
| `OMNIROUTE_LOG_REQUEST_SHAPE` | ç¡å¹ïŒ`"1"` ã§ãªããã€ã³ïŒ | `src/app/api/v1/chat/completions/route.ts` | `"1"` ãèšå®ãããŠããå Žåã倧ããªãã£ãããã€ããŒãã® content-type/length ããŒã«ãŒããã°ã«èšé²ããŸãããã°ãã€ãºãæžãããããããã©ã«ãã§ã¯ãªãã§ãã |
| `DEBUG_RESPONSES_SSE_TO_JSON` | _ïŒæªèšå®ïŒ_ | `open-sse/handlers/responseTranslator.ts` | `true` ã«èšå®ãããšãResponses API ã® SSEâJSON 倿ã®è©³çްããã°ã«èšé²ããŸãã |
| `DEBUG_CLAUDE_NONSTREAM` | _ïŒæªèšå®ïŒ_ | `open-sse/handlers/responseTranslator.ts` | `true` ã«èšå®ãããšãClaude ã¬ã¹ãã³ã¹ã®å€æãã¹ã§ç©ºã® textContent ãã£ã³ã¯ã衚é¢åããŸãïŒãããã°å°çšïŒã |
| `NEXT_PUBLIC_OMNIROUTE_E2E_MODE` | _ïŒæªèšå®ïŒ_ | E2E ãã¹ãããŒãã¹ | `true` ã«èšå®ãããšãE2E ãã¹ãã¢ãŒãïŒèªèšŒã®ç·©åããã¹ãããã¯ïŒãæå¹ã«ãªããŸãã |
---
## 23. GitHub 飿º
ãŠãŒã¶ãŒãããã·ã¥ããŒãããçŽæ¥åé¡ãå ±åã§ããããã«ããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| --------------------- | ------------ | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GITHUB_ISSUES_REPO` | _ïŒæªèšå®ïŒ_ | `src/app/api/v1/issues/report/route.ts` | `owner/repo` 圢åŒã®ãªããžããªã |
| `GITHUB_ISSUES_TOKEN` | _ïŒæªèšå®ïŒ_ | `src/app/api/v1/issues/report/route.ts` | `issues:write` ã¹ã³ãŒããæã€ GitHub Personal Access Tokenã |
| `GITHUB_TOKEN` | _ïŒæªèšå®ïŒ_ | Issue ããªã¢ãŒãž / ã¯ã©ãŠããšãŒãžã§ã³ããã«ã㌠| `GITHUB_ISSUES_TOKEN` ã®ãã©ãŒã«ããã¯ãšããŠäœ¿çšããã`src/lib/cloudAgent/*` å
ã®ã¯ã©ãŠããšãŒãžã§ã³ããã«ããŒã«ãã£ãŠå©çšãããæ±çš GitHub ã¢ã¯ã»ã¹ããŒã¯ã³ã |
---
## ãããã€ã·ããªãª
ãªã¬ãŒããã¯ãšã³ãã®SREã¬ã€ãã³ã¹ïŒts/bifrost/autoã®åäœã9routerãšCLIProxyAPIã®é
眮ãããã³é«ã¹ã«ãŒãããæã®ãã©ãŒã«ããã¯æŠç¥ïŒã«ã€ããŠã¯ã[ãªã¬ãŒããã¯ãšã³ãæŠç¥](/docs/reference/RELAY_BACKEND_STRATEGY.md)ãåç
§ããŠãã ããã
### æå°æ§æã®ããŒã«ã«éçº
```bash
JWT_SECRET=$(openssl rand -base64 48)
API_KEY_SECRET=$(openssl rand -hex 32)
INITIAL_PASSWORD=dev123
PORT=20128
NODE_ENV=development
```
### Dockeræ¬çªç°å¢
```bash
JWT_SECRET=
API_KEY_SECRET=
INITIAL_PASSWORD=
STORAGE_ENCRYPTION_KEY=
DATA_DIR=/data
PORT=20128
API_PORT=20129
NODE_ENV=production
AUTH_COOKIE_SECURE=true
REQUIRE_API_KEY=true
NEXT_PUBLIC_BASE_URL=https://omniroute.example.com
BASE_URL=http://localhost:20128
OMNIROUTE_MEMORY_MB=8192
CORS_ORIGIN=https://your-frontend.example.com
```
### ãšã¢ã®ã£ããç°å¢ / CI
```bash
JWT_SECRET=test-jwt-secret-for-ci
API_KEY_SECRET=test-api-key-secret-for-ci
INITIAL_PASSWORD=testpass
NODE_ENV=production
OMNIROUTE_DISABLE_BACKGROUND_SERVICES=true
APP_LOG_TO_FILE=false
```
### ãªããŒã¹ãããã·ã䜿çšããVPSïŒnginx + CloudflareïŒ
```bash
JWT_SECRET=
API_KEY_SECRET=
STORAGE_ENCRYPTION_KEY=
PORT=20128
AUTH_COOKIE_SECURE=true
REQUIRE_API_KEY=true
NEXT_PUBLIC_BASE_URL=https://omniroute.example.com
BASE_URL=http://127.0.0.1:20128
CORS_ORIGIN=https://omniroute.example.com
ENABLE_TLS_FINGERPRINT=true
CLI_COMPAT_ALL=1
```
---
## 24. Skills ãµã³ãããã¯ã¹ïŒv3.8.0+ïŒ
Skills ãã¬ãŒã ã¯ãŒã¯ïŒ`src/lib/skills/`ïŒããµã³ãããã¯ã¹ç°å¢ã§ãŠãŒã¶ãŒå®çŸ©ã®èªååŠçãå®è¡ããéã«é©çšãããå¶éããã³å®å
šæ§ã®èšå®ã§ãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| --------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SKILLS_SANDBOX_TIMEOUT_MS` | `10000`ïŒ10 ç§ïŒ | `src/lib/skills/builtins.ts` | ãµã³ãããã¯ã¹åãããã¹ãã«ã³ãŒãã«å¯Ÿãããå®è¡ããšã®å®æéã¿ã€ã ã¢ãŠããããŒãäžéã§ããããããè¶
ããåŠçã¯åŒ·å¶çµäºãããŸãã |
| `SKILLS_EXECUTION_TIMEOUT_MS` | _ïŒ`SKILLS_SANDBOX_TIMEOUT_MS` ã«ãã©ãŒã«ããã¯ïŒ_ | `src/lib/skills/` | é«ã¬ãã«ã®ã¹ãã«ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã®ã¿ã€ã ã¢ãŠããè€æ°ã¹ãããã®ã¯ãŒã¯ãããŒãèš±å¯ããã«ã¯ã`SKILLS_SANDBOX_TIMEOUT_MS` ãã倧ããå€ãèšå®ããŸãã |
| `SKILLS_MAX_FILE_BYTES` | `1048576`ïŒ1 MBïŒ | `src/lib/skills/builtins.ts` | ã¹ãã«ããµã³ãããã¯ã¹å
ã®åäžãã¡ã€ã«ããèªã¿åããæå€§ãã€ãæ°ã |
| `SKILLS_MAX_HTTP_RESPONSE_BYTES` | `256000`ïŒ250 KBïŒ | `src/lib/skills/builtins.ts` | ã¹ãã«å
ã®åäž HTTP ã¬ã¹ãã³ã¹ããååŸã§ããæå€§ãã€ãæ°ã |
| `SKILLS_MAX_SANDBOX_OUTPUT_CHARS` | `100000` | `src/lib/skills/builtins.ts` | ãµã³ãããã¯ã¹åŒã³åºãããè¿ããã stdout/stderr ã®æåæ°ã®ããŒãäžéã |
| `SKILLS_SANDBOX_NETWORK_ENABLED` | `false` | `src/lib/skills/builtins.ts` | ãµã³ãããã¯ã¹å
ããã®ã¢ãŠãããŠã³ããããã¯ãŒã¯éä¿¡ãèš±å¯ããã«ã¯ã`1`/`true` ã«èšå®ããŸããå®å
šã®ãããããã©ã«ãã§ã¯**åé¢**ãããŠããŸãã |
| `SKILLS_ALLOWED_SANDBOX_IMAGES` | _ïŒç©ºïŒ_ | `src/lib/skills/builtins.ts` | ãµã³ãããã¯ã¹å®è¡ãèš±å¯ããã³ã³ããã€ã¡ãŒãžã®ã«ã³ãåºåãèš±å¯ãªã¹ãã空ã®å Žåã¯ãçµã¿èŸŒã¿ã®ããã©ã«ãã®ã¿ãèš±å¯ãããŸãã |
| `SKILLS_SANDBOX_DOCKER_IMAGE` | _ïŒçµã¿èŸŒã¿ã®ããã©ã«ãïŒ_ | `src/lib/skills/` | Docker ããŒã¹ã®ãµã³ãããã¯ã¹ãèµ·åããéã«äœ¿çšããã³ã³ããã€ã¡ãŒãžãã«ã¹ã¿ã ã®åŒ·åæžã¿ããŒã¹ã€ã¡ãŒãžã«åºå®ããã«ã¯äžæžãããŸãã |
| `SKILLS_SANDBOX_RUNTIME` | `auto` | `src/lib/skills/sandbox.ts`, `src/lib/skills/containerProvider.ts` | ã¹ãã«ã®ãµã³ãããã¯ã¹åã«äœ¿çšããã³ã³ããã©ã³ã¿ã€ã ïŒ`auto` \| `docker` \| `apple` \| `wsl` \| `orbstack` \| `podman`ã`auto` ã¯ãã¹ã OS ããšã«ã€ã³ã¹ããŒã«æžã¿ã®æé©ãªã©ã³ã¿ã€ã ïŒmacOS ã§ã¯ Apple Container/OrbStackãWindows ã§ã¯ WSL ContainerãLinux ã§ã¯ PodmanïŒãéžæããå©çšã§ããªãå Žå㯠Docker ã«ãã©ãŒã«ããã¯ããŸãã |
> [!CAUTION]
> `SKILLS_SANDBOX_NETWORK_ENABLED=true` ãæå¹ã«ãããšãä»»æã®ã¹ãã«ã³ãŒãããå€éšãžã®éä¿¡çµè·¯ãéãããŸããå
±æãããã€ç°å¢ã§ã¯ã`OUTBOUND_SSRF_GUARD_ENABLED=true` ããã³å³æ Œãª `CORS_ORIGIN`/ãããã·ããªã·ãŒãšçµã¿åãããŠãã ããã
---
## 25. ãããã€ããŒã¯ã©ãŒã¿ããã³ãã«ãããã¯ã¢ããããã®ä»ã®ã©ã³ã¿ã€ã
ãããã€ããŒã®ã¯ã©ãŒã¿ãšã³ããã€ã³ãããããã¯ãŒã¯ãã³ãã«ïŒTailscaleãNgrokãMITM ãããã°ãããã·ïŒã1Proxy ãšã°ã¬ã¹ããŒã«ãããŒã¿ããŒã¹ããã¯ã¢ãããããã³ executor ã¬ã€ã€ãŒãã¹ã¯ãªããããåç
§ãããæ©èœããšã®å°èŠæš¡ãªãªãŒããŒã©ã€ãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `REDIS_URL` | `redis://localhost:6379` | `src/shared/utils/rateLimiter.ts` | ã¬ãŒããªããã¿ãŒã®ããã¯ãšã³ãã«äœ¿çšãã Redis æ¥ç¶æååã |
| `ALIBABA_CODING_PLAN_HOST` | _ïŒæ¬çªãã¹ãïŒ_ | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian coding-plan ã®ã¯ã©ãŒã¿ååŸã«äœ¿çšãããã¹ããäžæžãããŸãã |
| `ALIBABA_CODING_PLAN_QUOTA_URL` | ãã¹ãããå°åº | `open-sse/services/bailianQuotaFetcher.ts` | Alibaba Bailian ã®å®å
šãªã¯ã©ãŒã¿ URL ãäžæžãããŸãã |
| `QWEN_CLOUD_COOKIE` | _ïŒæªèšå®ïŒ_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Qwen Cloud / Model Studio ã®å人åã Token Plan ã¯ã©ãŒã¿ã²ãŒããŠã§ã€çšã³ã³ãœãŒã«ã»ãã·ã§ã³ CookieïŒæšè« API ããŒã§ã¯èªã¿åããŸããïŒãhome.qwencloud.com ã®ãBillingãâºãSubscriptionãïŒF12 âºãNetworkãïŒã§ã`cs-data.qwencloud.com` ãžã®ä»»æã® `api.json` åŒã³åºãããã`login_qwencloud_ticket` ãå«ã `Cookie` ãªã¯ãšã¹ãããããŒå
šäœãã³ããŒããŠãã ãããæ©å¯æ
å ±ã§ãããã»ãã·ã§ã³ã«çŽã¥ããŸããæ¥ç¶ããšã®ããã·ã¥ããŒããã£ãŒã«ã `qwenCloudCookie` ã®äœ¿çšãæšå¥šããŸãã |
| `QWEN_CLOUD_SEC_TOKEN` | _ïŒæªèšå®ïŒ_ | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | Token Plan ã³ã³ãœãŒã«ã²ãŒããŠã§ã€çšã® `sec_token` ãæåã§äžæžãããŸããæ©å¯æ
å ±ã§ããæªèšå®ã®å Žåããã§ããã£ãŒã¯ Cookie ã䜿çšããŠããã·ã¥ããŒãã® HTML ãã解決ããŸãã |
| `QWEN_TOKEN_PLAN_HOST` | `https://cs-data.qwencloud.com` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | å人åã Token Plan ã¯ã©ãŒã¿ãã§ããã£ãŒã®ã²ãŒããŠã§ã€ãã¹ããäžæžãããŸãïŒäŸïŒModel Studio ã³ã³ãœãŒã«ã®å Žå㯠`bailian-singapore-cs.alibabacloud.com`ïŒã |
| `QWEN_TOKEN_PLAN_DASHBOARD_URL` | `https://home.qwencloud.com/` | `open-sse/services/qwenTokenPlanQuotaFetcher.ts` | ãã°ã€ã³æžã¿ã® HTML ãã `sec_token` ã解決ããããã«äœ¿çšããããã·ã¥ããŒã URLã |
| `XIAOMI_MIMO_CONSOLE_COOKIE` | _ïŒæªèšå®ïŒ_ | `open-sse/services/usage/xiaomi-mimo.ts` | Xiaomi MiMo Token Plan ã¯ã©ãŒã¿ APIïŒ`platform.xiaomimimo.com/api/v1/tokenPlan/usage` + `tokenPlan/detail`ãæšè« API ããŒã§ã¯èªã¿åããŸããïŒçšã®ã³ã³ãœãŒã«ã»ãã·ã§ã³ CookieãToken Plan ããŒãžïŒF12 âºãNetworkãïŒã§ã`platform.xiaomimimo.com` ãžã®ä»»æã®ãªã¯ãšã¹ãããã`api-platform_serviceToken` ãš `userId` ãå«ã `Cookie` ãªã¯ãšã¹ãããããŒå
šäœãã³ããŒããŠãã ãããæ©å¯æ
å ±ã§ãããã»ãã·ã§ã³ã«çŽã¥ããŸããæ¥ç¶ããšã®ããã·ã¥ããŒããã£ãŒã«ã `xiaomiMimoConsoleCookie` ã®äœ¿çšãæšå¥šããŸãã |
| `XIAOMI_MIMO_MONTHLY_TOKEN_LIMIT` | `4100000000` | `open-sse/services/usage/xiaomi-mimo.ts` | ã³ã³ãœãŒã« Cookie ãèšå®ãããŠããªãå Žåã«äœ¿çšããããOmniRoute ã远跡ãã Xiaomi MiMo ãã©ãŒã«ããã¯ã®æéäºç®ïŒã¯ã¬ãžããïŒãããã©ã«ã㯠Lite ãã£ã¢ã® 4.1B ã§ãããã©ã³ã®ã¯ã¬ãžããïŒStandard 11B / Pro 38B / Max 82BïŒã«èšå®ããŠãã ãããæ¥ç¶ããšã® `providerSpecificData.monthlyTokenLimit` ã«ãããªãŒããŒã©ã€ãã¯ããã®ç°å¢å€æ°ãããåªå
ãããŸãã |
| `ALIBABA_FREE_TIER_VISION_FE_PATH` | `/costing-balance/free-quota-image-video` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio ã®ç¡æãã£ã¢ã«ãããããžã§ã³ïŒã¡ãã£ã¢ã®ã¯ã©ãŒã¿ãååŸããããã®ãã³ã³ãœãŒã«ã®ããã³ããšã³ããã¹ã®ãªãŒããŒã©ã€ãã |
| `ALIBABA_FREE_TIER_MULTIMODAL_FE_PATH` | `/costing-balance/free-quota-multimodal` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio ã®ç¡æãã£ã¢ã«ããããã«ãã¢ãŒãã«ã®ã¯ã©ãŒã¿ãååŸããããã®ãã³ã³ãœãŒã«ã®ããã³ããšã³ããã¹ã®ãªãŒããŒã©ã€ãã |
| `ALIBABA_FREE_TIER_AUDIO_FE_PATH` | `/costing-balance/free-quota-audio` | `open-sse/services/alibabaFreeTierQuotaFetcher.ts` | Alibaba Model Studio ã®ç¡æãã£ã¢ã«ãããé³å£°ã®ã¯ã©ãŒã¿ãååŸããããã®ãã³ã³ãœãŒã«ã®ããã³ããšã³ããã¹ã®ãªãŒããŒã©ã€ãã |
| `ALIBABA_FREE_TIER_ALLOWLIST_PATH` | _ïŒæªèšå®ïŒ_ | `open-sse/services/alibabaFreeTierAllowlist.ts` | çµã¿èŸŒã¿ã® Alibaba ç¡æãã£ã¢çšããã¹ãã¢ãã«èš±å¯ãªã¹ãããªãŒããŒã©ã€ããããããŒã«ã« JSON ãã¡ã€ã«ãžã®ä»»æã®ãã¹ãæªèšå®ã®å Žåã`$DATA_DIR/alibaba-free-tier-allowlist.json`ãæ¬¡ã« `config/alibaba-free-tier-allowlist.json` ã䜿çšãããŸãã |
| `CONTEXT_RESERVE_TOKENS` | `1024` | `open-sse/services/contextManager.ts` | ããã³ããã®äºç®ãèšç®ããéã«ãè£å®åºåçšãšããŠäºçŽãããããŒã¯ã³æ°ã |
| `CONTEXT_KEEP_LATEST_IMAGES` | `2` | `open-sse/services/contextManager.ts` | ã³ã³ããã¹ããŠã£ã³ããŠã«åãŸãããå€ãç»åãåé€ããéã«ä¿æãããææ°ã®ã€ã³ã©ã€ã³ç»åã®æ°ïŒ#8560ïŒã |
| `MODEL_ALIAS_COMPAT_ENABLED` | æå¹ | `open-sse/services/model.ts` | å€ãã¯ã©ã€ã¢ã³ãã§äœ¿çšãããåŸæ¥ã®ã¢ãã«ãšã€ãªã¢ã¹äºææ§ã¬ã€ã€ãŒãåãæ¿ããŸãã |
| `OMNIROUTE_EMERGENCY_FALLBACK` | æå¹ | `open-sse/services/emergencyFallback.ts` | `false`ïŒãŸã㯠`0`ïŒã«èšå®ãããšã倱æãããªã¯ãšã¹ããç¡æã® `nvidia`/`openai/gpt-oss-120b` ã¢ãã«ãžåã«ãŒãã£ã³ã°ãããäºç®æ¯æžæã®ç·æ¥ãã©ãŒã«ããã¯ãç¡å¹ã«ãªããŸããæå¹ãªåªå
é äœã¯ãFeature Flags DB ã®ãªãŒããŒã©ã€ã > ç°å¢å€æ° > ããã©ã«ãã§ããå©çšã§ããªãå ŽåããµãŒãã¹ã¯ç°å¢å€æ°ã®æªå å·¥ã®å€ã«ãã©ãŒã«ããã¯ããŸãã |
| `COMMAND_CODE_CALLBACK_PORT` | _ïŒæªèšå®ïŒ_ | `src/app/api/providers/command-code/auth/shared.ts` | Command Code CLI ãã«ããŒããã® OAuth 圢åŒã®ã³ãŒã«ããã¯ã«äœ¿çšãããããŒã«ã«ããŒãã |
| `COMMAND_CODE_VERSION` | `0.33.2` | `open-sse/executors/commandCode.ts` | Command Code ã¢ããã¹ããªãŒã ãž `x-command-code-version` ããããŒãšããŠéä¿¡ãããå€ãCLI ããŒãžã§ã³ãæŽæ°ããå Žåã¯äžæžãããŠãã ããã |
| `COMMANDCODE_API_URL` | `https://api.commandcode.ai` | `open-sse/services/usage/command-code.ts` | ã¹ããŒããã©ã³ã®ã¯ã©ãŒã¿ååŸãã¬ã¡ããªã§äœ¿çšããããCommand Code ã®äœ¿çšé/ã¯ã©ãŒã¿ã¢ããã¹ããªãŒã ã®ããŒã¹ URLãã»ã«ããã¹ããŸãã¯ä»£æ¿ã® Command Code API ã䜿çšããå Žåã¯äžæžãããŠãã ããã |
| `MITM_LOCAL_PORT` | `443` | `src/mitm/server.cjs` | MITM ãããã°ãããã·ã®ããŒã«ã«ãã€ã³ãããŒãã |
| `MITM_DISABLE_TLS_VERIFY` | `0` | `src/mitm/server.cjs` | ã¢ããã¹ããªãŒã ã® TLS æ€èšŒãç¡å¹ã«ããã«ã¯ `1` ã«èšå®ããŸãïŒéçºæã®ã¿ïŒã |
| `MITM_IDLE_TIMEOUT_MS` | `60000` | `src/mitm/socketTimeouts.ts`, `src/mitm/server.cjs` | ãããã·æ¥ç¶ã®ã¢ã€ãã«ãœã±ããã¿ã€ã ã¢ãŠãïŒããªç§ïŒããã®æéãè¶
ããŠã¢ã€ãã«ç¶æ
ã®ãœã±ããã¯ãããŒããªãŒãã³ãã³ãã«ã®ãªãŒã¯ãé²ãããåæãããŸãã |
| `BRIDGE_PORT` | `20129` | `bin/antigravity-bridge.mjs` | Antigravity MITM ããªããžããªãã¹ã³ããããŒãã |
| `ROUTER_URL` | `http://127.0.0.1:20128/v1/antigravity` | `bin/antigravity-bridge.mjs` | ããªããžã Antigravity ãã©ãã£ãã¯ã転éããã«ãŒã¿ãŒãšã³ããã€ã³ãã |
| `CERT_DIR` | `/mitm` | `bin/antigravity-bridge.mjs` | ããªããžã TLS ãããªã¢ã«ãèªã¿èŸŒããã£ã¬ã¯ããªãäžæžãããŸããèšŒææžã¢ãã«ã¯ AgentBridge ãµãŒããŒãšåæ§ã«éžæãããŸããåŸæ¥ã®ãªãŒãèšŒææžãã€ã³ã¹ããŒã«ãããŠããå Žå㯠`server.crt`/`server.key`ããã以å€ã®å Žå㯠`ca.crt`/`ca.key`ïŒã«ãŒã CAãããã³ã€ã³ã¿ãŒã»ãã察象ãã¹ãããšã®ãªãŒãèšŒææžã`MITM_ROOT_CA_ENABLED=true` ã«ãã£ãŠåŒ·å¶ïŒã䜿çšããŸããã¢ã¯ãã£ããªã¢ãã«ã«å¿
èŠãªãã¡ã€ã«ããªãå Žåãããªããžã¯èµ·åæã«çµäºããŸãã |
| `MITM_VERBOSE` | `1` | `src/mitm/server.cjs`, `src/mitm/_internal/bypass.cjs` | ã«ãŒãã£ã³ã°æ±ºå®ãã°ã®è©³çŽ°åºŠã`0` ã§ã¯åºåãããå€ã倧ãããããšãããå€ãã®ãã€ãã¹/ã«ãŒãã£ã³ã°æ±ºå®ããã°ã«èšé²ãããŸãã |
| `MITM_ROOT_CA_ENABLED` | `false` | `src/mitm/manager.ts` | ã«ãŒã CA ãšãã¹ãããšã®ãªãŒãèšŒææžã䜿çšããã¢ãã«ïŒ#6684ïŒãæå¹ã«ããã«ã¯ `true` ã«èšå®ããŸããæ°èŠã€ã³ã¹ããŒã«ã§ã¯èªåçã«æå¹ã«ãªããŸããæ¢åã®ä¿¡é Œæžã¿åŸæ¥åãªãŒãèšŒææžãããã€ã³ã¹ããŒã«ã§ã¯ãæç€ºçã«æå¹åããªãéããåŸæ¥ã®åºå® SAN èšŒææžãç¶æãããŸãã |
| `MITM_CERT_MODE` | `legacy` | `src/mitm/manager.ts`, `src/mitm/server.cjs` | çæããããããã·ããã»ã¹åãã« MITM ãããŒãžã£ãŒãèšå®ããå€ïŒ`root-ca` \| `legacy`ïŒãèšŒææžç§»è¡ã®æ±ºå®ãåæ ãããã®ã§ãæåã§èšå®ããããšã¯æ³å®ãããŠããŸããã |
| `OMNIROUTE_NO_SUDO` | `0` | `src/mitm/systemCommands.ts` | `1`ïŒtruthyïŒã«èšå®ãããšãMITM èšŒææžä¿¡é Œã³ãã³ãã®å
é ã«ãã `sudo` ãåé€ãããŸããããã¯ããªãã¬ãŒã¿ãŒã CA ãæåã§ä¿¡é Œãããroot æš©éã®ãªãç°å¢ããŠãŒã¶ãŒåå空éã䜿çšãããããã€åãã§ãïŒäŸ: Node ã®è¿œå CA èšŒææžã¡ã«ããºã ã䜿çšããå ŽåïŒã |
| `SKIP_ANTIGRAVITY_DNS` | _ïŒæªèšå®ïŒ_ | `src/mitm/dns/provision.ts` | `true` ã«èšå®ãããšãAntigravity ãããã·ã®ãã¹ãåã«å¯Ÿãã `/etc/hosts` ã® DNS ãšã³ããªã®ããããžã§ãã³ã°ãå®å
šã«ã¹ãããããŸããããã¯ãsudo/root ãå©çšã§ããªãã³ã³ããåãã§ãã |
| `OMNIROUTE_SKIP_DNS_WRITE` | _ïŒæªèšå®ïŒ_ | `src/mitm/dns/dnsConfig.ts` | `1` ã«èšå®ãããšãDNS ãšã³ããªã®è¿œå ãŸãã¯åé€æã« hosts ãã¡ã€ã«ãžã®æžã蟌ã¿ãã¹ãããããŸããããã¯ããµã³ãããã¯ã¹åãããããŸãã¯èªã¿åãå°çšã®ãã¹ãç°å¢åãã§ãã |
| `OMNIROUTE_SKIP_SYSTEM_TRUST` | `0` | `src/mitm/cert/install.ts`, `src/mitm/tproxy/caTrust.ts` | ãã¹ã/CI å°çšã®ã¬ãŒãã§ãã`1` ã«èšå®ãããšãèšŒææžä¿¡é Œã®ã€ã³ã¹ããŒã«/ã¢ã³ã€ã³ã¹ããŒã«ãäœãè¡ããªãæäœãšãªãããã¹ãã¹ã€ãŒãã OS ã®ä¿¡é Œã¹ãã¢ã倿Žããããšãé²ããŸãããã¹ãã»ããã¢ãããš CI ã¯ãŒã¯ãããŒã«ãã£ãŠèªåçã«èšå®ãããŸãã |
| `CHANGELOG_BASE_REF` | _ïŒèªåïŒ_ | `scripts/check/check-changelog-integrity.mjs` | CHANGELOG æ¶å€±é²æ¢ã²ãŒãã§äœ¿çšããããŒã¹ ref ãæç€ºçã«æå®ããŸãïŒããã©ã«ã㯠CI å
ã® PR ããŒã¹ãã©ã³ãããŸãã¯æå€§ã® `release/v*`ïŒã |
| `FREE_PROXY_AUTO_SYNC_ENABLED` | `false` | `src/lib/freeProxyProviders/scheduler.ts` | `true` ã«èšå®ãããšãããã¯ã°ã©ãŠã³ãã§ç¡æãããã·ããŒã«ãèªååæããã¹ã±ãžã¥ãŒã©ãŒãæå¹ã«ãªããŸãããªããã€ã³æ¹åŒã§ãããã©ã«ãã§ã¯ç¡å¹ã§ãã |
| `FREE_PROXY_AUTO_SYNC_INTERVAL_MS` | `1800000` | `src/lib/freeProxyProviders/scheduler.ts` | èªååæã®ééïŒããªç§åäœãããã©ã«ã㯠30 åïŒã |
| `FREE_PROXY_1PROXY_ENABLED` | `true` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy ã®ç¡æãããã·ãœãŒã¹ãæå¹ã«ããŸããç¡å¹ã«ããã«ã¯ `false` ã«èšå®ããŸãã |
| `FREE_PROXY_1PROXY_API_URL` | _ïŒoneproxy.ts ãåç
§ïŒ_ | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy API URL ã®äžæžãèšå®ã§ãã |
| `FREE_PROXY_1PROXY_MAX` | `500` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy ããåæããšã«ååŸãããããã·ã®æå€§æ°ã§ãã |
| `FREE_PROXY_1PROXY_MIN_QUALITY` | `50` | `src/lib/freeProxyProviders/oneproxy.ts` | 1proxy ããã€ã³ããŒãããéã®æäœå質ã¹ã³ã¢ã®ãããå€ã |
| `FREE_PROXY_PROXIFLY_ENABLED` | `true` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly ã®ç¡æãããã·ãœãŒã¹ãæå¹ã«ããŸããç¡å¹ã«ããã«ã¯ `false` ã«èšå®ããŸãã |
| `FREE_PROXY_PROXIFLY_QUANTITY` | `100` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly ã®åæããšã«ååŸãããããã·æ°ã |
| `FREE_PROXY_PROXIFLY_ANONYMITY` | `elite` | `src/lib/freeProxyProviders/proxifly.ts` | Proxifly ã®å¿åæ§ã¬ãã«ãã£ã«ã¿ãŒïŒ`elite`ã`anonymous`ã`transparent`ïŒã |
| `FREE_PROXY_IPLOCATE_ENABLED` | `false` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate ã®ç¡æãããã·ãœãŒã¹ãæå¹ã«ããŸãããªããã€ã³ããå Žåã®ã¿äœ¿çšãããŸãã |
| `FREE_PROXY_IPLOCATE_BASE_URL` | `https://raw.githubusercontent.com/iplocate/free-proxy-list/main/protocols` | `src/lib/freeProxyProviders/iplocate.ts` | IPLocate ãããã·ãªã¹ãã®ããŒã¹ URL ãäžæžãããŸãã |
| `FREE_PROXY_WEBSHARE_ENABLED` | `true` | `src/lib/freeProxyProviders/webshare.ts` | Webshare ãããã·ããŒã«ãœãŒã¹ãæå¹ã«ããŸããç¡å¹ã«ããã«ã¯ `false` ã«èšå®ããŸãããŸãã`FREE_PROXY_WEBSHARE_API_KEY` ãèšå®ãããŠããå¿
èŠããããŸãã |
| `FREE_PROXY_WEBSHARE_API_KEY` | _(ãªã)_ | `src/lib/freeProxyProviders/webshare.ts` | Webshare ã¢ã«ãŠã³ãã® API ããŒã¯ã³ïŒ`Authorization: Token `ïŒãå¿
é ã§ããèšå®ãããŠããªãå Žåããããã€ããŒã¯ç¡å¹ã®ãŸãŸã«ãªããŸãã |
| `FREE_PROXY_WEBSHARE_API_URL` | `https://proxy.webshare.io/api/v2/proxy/list/` | `src/lib/freeProxyProviders/webshare.ts` | Webshare ãããã·ãªã¹ãã® API URL ãäžæžãããŸãã |
| `FREE_PROXY_WEBSHARE_MAX` | `500` | `src/lib/freeProxyProviders/webshare.ts` | Webshare ã®åæããšã«ã€ã³ããŒããããããã·ã®æå€§æ°ã |
| `NEXT_PUBLIC_VERCEL_RELAY_ENABLED` | `true` | `src/app/(dashboard)/âŠ/ProxyPoolTab.tsx` | Proxy Pool ã¿ãã§ Deploy Vercel Relay ãã¿ã³ã®è¡šç€º/é衚瀺ãåãæ¿ããŸãã |
| `VERCEL_API_BASE` | `https://api.vercel.com` | `src/app/api/settings/proxy/vercel-deploy/route.ts` | Vercel API ã®ããŒã¹ URL ãäžæžãããŸãïŒãã¹ãçšïŒã |
| `NEXT_PUBLIC_VERCEL_RELAY_DEFAULT_PROJECT` | `omniroute-relay` | `src/app/(dashboard)/âŠ/VercelRelayModal.tsx` | Vercel Relay ãããã€ã¢ãŒãã«ã«äºåå
¥åãããããã©ã«ãã®ãããžã§ã¯ãåã§ãã |
| `TAILSCALE_BIN` | _(èªåæ€åº)_ | `src/lib/tailscaleTunnel.ts` | `tailscale` ãã€ããªãžã®æç€ºçãªãã¹ã§ãã |
| `TAILSCALED_BIN` | _(èªåæ€åº)_ | `src/lib/tailscaleTunnel.ts` | `tailscaled` ããŒã¢ã³ãã€ããªãžã®æç€ºçãªãã¹ã§ãã |
| `TAILSCALE_AUTHKEY` | _(æªèšå®)_ | `src/lib/tailscaleTunnel.ts` | é察話å / ãããã¬ã¹ã® `tailscale up` ã§äœ¿çšããäºåå
±æ Tailscale èªèšŒããŒã§ãïŒ`--auth-key=` çµç±ã§æž¡ãããŸãïŒãæªèšå®ã®å Žåããã°ã€ã³ã¯å¯Ÿè©±åã®ãã©ãŠã¶èªèšŒ URL ã«ãã©ãŒã«ããã¯ããŸãã |
| `NGROK_AUTHTOKEN` | _(æªèšå®)_ | `src/lib/ngrokTunnel.ts` | å€åãã® ngrok ãã³ãã«ãèªèšŒããŸãã |
| `DB_BACKUP_MAX_FILES` | `20` | `src/lib/db/backup.ts` | æå/ã¹ã±ãžã¥ãŒã«æžã¿ããã¯ã¢ããã®ã¯ãªãŒã³ã¢ããã§ä¿æãã SQLite ããã¯ã¢ãããã¡ã€ã«ã®æå€§æ°ã§ããç§»è¡ã¹ãããã·ã§ããã¯ã³ã³ãã³ãã¢ãã¬ã¹æ¹åŒã§ç®¡çãããåäžã® DB ç¶æ
ã§ã¯åå©çšãããŸããåæç§»è¡æéäžã¯åé€ãããŸãããSettings â Database backup retention ã§ä¿åãããå€ãäžæžãããŸãã |
| `DB_BACKUP_RETENTION_DAYS` | `0` | `src/lib/db/backup.ts` | æå/ã¹ã±ãžã¥ãŒã«æžã¿ããã¯ã¢ããã®ã¯ãªãŒã³ã¢ããã§ä¿æããæå€§æéïŒæ¥æ°ïŒã§ãã`0` ãæå®ãããšãçµéæ¥æ°ã«åºã¥ãåé€ãç¡å¹ã«ãªããŸããåæç§»è¡æéäžãç§»è¡ã¹ãããã·ã§ããã¯åé€ãããŸãããSettings â Database backup retention ã§ä¿åãããå€ãäžæžãããŸãã |
| `OMNIROUTE_BACKUP_SCHEDULE_JOB_INTERVAL_MS` | `30000` | `src/lib/jobs/backupScheduleJob.ts` | `backup-schedule.json` ãå®è¡ãããµãŒããŒåŽãžã§ãã®ãã£ãã¯ééïŒããªç§ïŒã§ãã1 ååäœã® cron ç²åºŠãååã«äžåãå¿
èŠããããŸãã`5000` æªæºã®å€ããŸãã¯è§£æã§ããªãå€ã®å Žå㯠`30000` ã«ãã©ãŒã«ããã¯ããŸãã |
| `CONTAINER_HOST` | `docker` | `scripts/check-permissions.sh` | ãšã³ããªãŒãã€ã³ãã®æš©éãã§ãã¯ã«äœ¿çšããã³ã³ããã©ã³ã¿ã€ã ã®ãã³ããPodman ããããžãŒã§ã¯ `podman` ã«èšå®ããŸããã³ã³ããããã¯ããšã³ãžã³ãããŒã«ã«ã«ããã®ã Podman Machine çµç±ã§æ¥ç¶ãããŠããã®ããå€å¥ã§ããªããããèŠåã¯ããããžãŒã«äŸåããªã衚çŸã®ãŸãŸãšãã`contrib/podman/README.md` ãåç
§ããããæ¡å
ããŸãã |
| `QUOTA_STORE_DRIVER` | `sqlite` | `src/lib/quota/storeFactory.ts` | ã¯ã©ãŒã¿å
±ææ¶è²»ã¹ãã¢ã®ããã¯ãšã³ãïŒ`sqlite`ïŒããã©ã«ãïŒãŸã㯠`redis`ã |
| `QUOTA_STORE_REDIS_URL` | _ïŒæªèšå®ïŒ_ | `src/lib/quota/storeFactory.ts` | `QUOTA_STORE_DRIVER=redis` ã®å Žåã«äœ¿çšãã Redis æ¥ç¶æååïŒäŸïŒ`redis://localhost:6379`ïŒã |
| `QUOTA_SATURATION_THRESHOLD` | `0.5` | `src/lib/quota/enforce.ts` | ããŒã«ã®é£œåçïŒ0ïœ1ïŒããã®å€ä»¥äžã«ãªããšãããŒã«ã¯å³æ Œã¢ãŒãïŒåçšãªãïŒã«ç§»è¡ããŸãã |
| `QUOTA_SOFT_DEPRIORITIZE_FACTOR` | `0.7` | `open-sse/services/combo.ts` | ãœããã¯ã©ãŒã¿ããªã·ãŒã«ãã£ãŠã¿ãŒã²ããã®åªå
床ãäžããããéã«é©çšãããã¹ã³ã¢ä¹æ°ïŒ0ïœ1ïŒã |
| `STATUS_SOFT_DEPRIORITIZE_FACTOR` | `0.5` | `open-sse/services/combo/autoStrategy.ts` | ããªãã©ã€ãã¯ã©ãŒã¿ã®ã«ãããªãã OFF ã®å Žåã«ãèªåã³ã³ãã®ã¹ã³ã¢ãªã³ã°ã§æ¯æžãããããã€ããŒïŒ`credits_exhausted`/`rate_limited`ïŒã«é©çšãããã¹ã³ã¢ä¹æ°ïŒ0ïœ1ïŒïŒ#4540ïŒã |
| `QUOTA_CONSUMPTION_RETENTION_DAYS` | `14` | `src/lib/db/quotaConsumption.ts` | GCïŒ`gcQuotaConsumption`ïŒã®å®è¡åã« `quota_consumption` ãã±ãããä¿æããæéïŒæ¥æ°ïŒã |
| `QUOTA_PREFLIGHT_CUTOFF_ENABLED` | `false` | `src/lib/resilience/settings.ts` | ãªããã€ã³ïŒããã©ã«ã㯠OFFïŒïŒã¹ã³ã¢ãªã³ã°åã«äœã¯ã©ãŒã¿ã®åè£ãé€å€ãããèªåã«ãŒãã£ã³ã°ã®å³æ Œãªã¯ã©ãŒã¿ã«ãããªããæå¹ã«ããŸãã |
| `OMNIROUTE_AUTO_FREE_FALLBACK_TO_FULL_POOL` | `false` | `open-sse/services/autoCombo/virtualFactory.ts` | ãªããã€ã³ïŒããã©ã«ã㯠OFFïŒïŒ`auto/:` ãã£ã«ã¿ãŒã«äžèŽããæ¥ç¶æžã¿åè£ããªãå Žåã空ã®ããŒã«ãè¿ã代ããã«ãå®å
šãªïŒãã£ã«ã¿ãŒæªé©çšã®ïŒããŒã«ãžãã©ãŒã«ããã¯ããåŸæ¥ã®åäœã埩å
ããŸããããã©ã«ãã® OFF ã§ã¯ã`:free` ã¯ãç¡æãã£ã¢ã®ã¿ããæå³ããŸãã |
| `OMNIROUTE_CHAOS_MAX_PANEL` | `5` | `open-sse/services/autoCombo/virtualFactory.ts` | `auto/*:chaos` ãããŒããã£ã¹ãããªã¢ã³ãã®ããã«ãµã€ãºäžéïŒ1ïœ10 ã«å¶éïŒã1 ä»¶ã®ãªã¯ãšã¹ãããæå€§ã§ãã®æ°ã®ãããã€ããŒåæ£ã¢ãã«ãžãã¡ã³ã¢ãŠããããŸãã |
| `OMNIROUTE_CHAOS_MIN_PANEL` | _(ãšã³ãžã³ã®ããã©ã«ã)_ | `open-sse/services/autoCombo/virtualFactory.ts` | chaos ãããŒããã£ã¹ããã³ãã©ãŒã«æž¡ãããæå°ããã«ãµã€ãºã®èª¿æŽå€ãæªèšå®ã®å Žåã¯ãšã³ãžã³ã®ããã©ã«ããç¶æãããŸãã |
| `OMNIROUTE_CHAOS_PANEL_TIMEOUT_MS` | _(ãšã³ãžã³ã®ããã©ã«ã)_ | `open-sse/services/autoCombo/virtualFactory.ts` | chaos ããã«å
šäœã®ãã¡ã³ã¢ãŠãã«å¯ŸããããŒãã¿ã€ã ã¢ãŠãïŒããªç§ïŒãæªèšå®ã®å Žåã¯ãšã³ãžã³ã®ããã©ã«ããç¶æãããŸãã |
| `GROK_AUTH_PATH` | `~/.grok/auth.json` | `open-sse/services/grokQuotaFetcher.ts` | grok-web ã®é±éã¯ã©ãŒã¿ååŸã«äœ¿çšãã Grok CLI ã® `auth.json` ã®ãã¹ããã¹ããŸãã¯æšæºä»¥å€ã® CLI ã€ã³ã¹ããŒã«ç°å¢ã§ã¯äžæžãããŸãã |
| `AGENTBRIDGE_UPSTREAM_CA_CERT` | _(æªèšå®)_ | `src/mitm/manager.ts` | AgentBridge ã®ã¢ããã¹ããªãŒã TLS æ¥ç¶ã§ä¿¡é Œãã远å ã® CA èšŒææžïŒPEMïŒã |
| `INSPECTOR_BUFFER_SIZE` | `1000` | `src/mitm/inspector/buffer.ts` | Traffic Inspector ã®ãªã³ã°ãããã¡ã«ä¿æããããã£ããã£æžã¿ãªã¯ãšã¹ãã®æå€§æ°ã |
| `INSPECTOR_MAX_BODY_KB` | `1024` | `src/mitm/inspector/buffer.ts` | åãè©°ãåã«ãã£ããã£å¯èœãªãªã¯ãšã¹ãïŒã¬ã¹ãã³ã¹æ¬æã®æå€§ãµã€ãºïŒKBïŒã |
| `INSPECTOR_HTTP_PROXY_PORT` | `8080` | `src/mitm/inspector/httpProxyServer.ts` | Traffic Inspector HTTP ãããã·ã®ããŒã«ã«ããŒãã |
| `INSPECTOR_HTTP_PROXY_AUTOSTART` | `false` | `src/mitm/inspector/httpProxyServer.ts` | èµ·åæã« Inspector HTTP ãããã·ãèªåèµ·åããŸãã |
| `INSPECTOR_LLM_HOSTS_EXTRA` | _(æªèšå®)_ | `src/lib/inspector/captureState.ts` | ãã£ããã£å¯Ÿè±¡ã® LLM ãšã³ããã€ã³ããšããŠæ±ã远å ã®ãã¹ãåïŒã«ã³ãåºåãïŒã |
| `INSPECTOR_MASK_SECRETS` | `true` | `src/mitm/inspector/buffer.ts` | ãã£ããã£ããããã©ãã£ãã¯å
ã®ã·ãŒã¯ã¬ããïŒèªèšŒããããŒïŒAPI ããŒïŒããã¹ã¯ããŸãã |
| `INSPECTOR_SYSTEM_PROXY_GUARD_MINUTES` | `30` | `src/app/api/tools/traffic-inspector/capture-modes/system-proxy/route.ts` | system-proxy ã¬ãŒãã OS ã®ãããã·èšå®ãèªåçã«å
ã«æ»ããŸã§ã®æéïŒåïŒã |
| `INSPECTOR_INTERNAL_INGEST_TOKEN` | _(èªå)_ | `src/app/api/tools/traffic-inspector/internal/ingest/route.ts` | ã€ã³ã¹ãã¯ã¿ãŒãžã®å
éšãã£ããã£åã蟌ã¿ãèªèšŒããããŒã¯ã³ã |
| `PLAYGROUND_COMPARE_MAX_COLUMNS` | `4` | `src/app/(dashboard)/dashboard/playground/` | Playground ã®æ¯èŒã¢ãŒãã§æšªäžŠã³ã«è¡šç€ºã§ããåã®æå€§æ°ã |
| `PLAYGROUND_IMPROVE_PROMPT_DEFAULT_MODEL` | _(æªèšå®)_ | `src/app/(dashboard)/dashboard/playground/` | Playground ã®ãããã³ãããæ¹åãã¢ã¯ã·ã§ã³ã§äœ¿çšããããã©ã«ãã¢ãã«ïŒæªèšå®ã®å Žåã¯ã¢ã¯ãã£ããªã¢ãã«ã«ãã©ãŒã«ããã¯ïŒã |
| `BIFROST_ENABLED` | `1` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost ãµã€ãã«ãŒãããã·ã®ãã¹ã¿ãŒãã«ã¹ã€ããã`0` ã«èšå®ãããšãã«ãŒã㯠`X-Bifrost-Killswitch` ããããŒä»ãã§ 503 ãè¿ãããªãã¬ãŒã¿ãŒã¯ TS ãã¹ãžè»¢éãããŸããåãããã€ããã«ãµã€ãã«ãŒãç¡å¹åããå ŽåïŒTier 1 ã«ãŒã¿ãŒã®ã€ã³ã·ãã³ããããŒã®ããŒããŒã·ã§ã³ïŒã«äœ¿çšããŸãã |
| `BIFROST_BASE_URL` | _(æªèšå®)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | èšå®ãããŠããå ŽåãBifrost ãµã€ãã«ãŒãããã·ã«ãŒã㯠`/v1/chat/completions` ãã©ãã£ãã¯ã TS ãªã¬ãŒãã³ãã©ãŒã§ã¯ãªãããã® Go ã²ãŒããŠã§ã€ãžè»¢éããŸããæªèšå® â ãã©ãŒã«ããã¯ä»ãã® 503ãæ«å°Ÿã®ã¹ã©ãã·ã¥ã¯åé€ãããŸãã |
| `BIFROST_PORT` | `8080` | `src/lib/services/bootstrap.ts` | OmniRoute ã Bifrost ãµã€ãã«ãŒã®ã©ã€ããµã€ã¯ã«ã管çããå Žåã«ãç£èŠå¯Ÿè±¡ã®çµã¿èŸŒã¿ Bifrost ãµãŒãã¹ããã€ã³ãããããŒãïŒ`127.0.0.1:`ïŒãããã©ã«ã㯠`8080`ã |
| `LLMLINGUA_PORT` | `20135` | `src/lib/services/bootstrap.ts` | ç£èŠå¯Ÿè±¡ã® LLMLingua å§çž®ãµãŒãã¹ããã€ã³ãããããŒãïŒ`127.0.0.1:`ïŒãããã©ã«ã㯠`20135`ã |
| `LLMLINGUA_BASE_URL` | `http://127.0.0.1:20135` | `open-sse/services/compression/engines/llmlingua/index.ts` | ããŒã«ã« LLMLingua HTTP å§çž®ãã€ã¯ããµãŒãã¹ããŒã¢ã³ã®ããŒã¹ URLãããã©ã«ã㯠`http://127.0.0.1:20135`ã |
| `LLMLINGUA_MODEL` | `atjsh/llmlingua-2-js-tinybert-meetingbank` | `src/lib/services/installers/llmlingua.ts` | ç£èŠå¯Ÿè±¡ã® LLMLingua ãµã€ãã«ãŒãèªã¿èŸŒã Hugging Face ã¢ãã« IDïŒåããã»ã¹ã®ç°å¢å€æ°ãšããŠæž¡ãããŸãïŒã |
| `BIFROST_API_KEY` | _(æªèšå®)_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost ã²ãŒããŠã§ã€çšã® API ããŒïŒ`Authorization: Bearer ...` ãšããŠéä¿¡ïŒãæªèšå®ã®å Žåãã«ãŒãã¯ãªã¯ãšã¹ãã«æå¹ãª OmniRoute API ããŒãå«ãŸããŠããããšãèŠæ±ããŸãããã®ããŒã¯ã²ãŒããŠã§ã€åŽã®èªèšŒå°çšã§ãã |
| `BIFROST_STREAMING_ENABLED` | `true` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `true` ã®å ŽåãBifrost ãµã€ãã«ãŒã®ã«ãŒãã¯ãTS ã¹ããªãŒãã³ã°ãšã°ãŒãã¥ãŒã¿ãŒã§ã¯ãªããã²ãŒããŠã§ã€ãä»ã㊠SSE ã§ã¬ã¹ãã³ã¹ãã¹ããªãŒãã³ã°è¿åŽããŸããã²ãŒããŠã§ã€çµç±ã§éã¹ããªãŒãã³ã°ã® JSON ã¬ã¹ãã³ã¹ã匷å¶ããã«ã¯ã`0` ã«èšå®ããŸãã |
| `BIFROST_TIMEOUT_MS` | `30000` | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | Bifrost ã²ãŒããŠã§ã€ãžã®ãããã·æã«ããããªã¯ãšã¹ãããšã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒãã¿ã€ã ã¢ãŠãæãã«ãŒã㯠`X-Bifrost-Fallback` ããããŒãéã㊠TS ãªã¬ãŒãã¹ãè¿ããŸãã |
| `OMNIROUTE_BIFROST_KEY` | _ïŒæªèšå®ïŒ_ | `src/app/api/v1/relay/chat/completions/bifrost/route.ts` | `BIFROST_API_KEY` ã®ãšã€ãªã¢ã¹ïŒ`OMNIROUTE_*` çµç±ã§ç°å¢å€æ°ãèªã¿åãã¹ã¯ãªããã§äœ¿çšïŒãäž¡æ¹ãèšå®ãããŠããå Žåã¯ã`BIFROST_API_KEY` ãåªå
ãããŸãã |
| `OMNIROUTE_RELAY_BACKEND` | `ts` / `auto` | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `/api/v1/relay/chat/completions` çšã®ãªã¬ãŒããã¯ãšã³ãïŒ`ts \| bifrost \| auto`ã`ts` = TypeScript ãªã¬ãŒïŒBifrost ãæªèšå®ã®å Žåã®ããã©ã«ãïŒã`auto` ã¯ã`BIFROST_BASE_URL` ãèšå®ãããã〠`BIFROST_ENABLED` â `0` ã®å Žåã« Bifrost ãéžæãããµã€ãã«ãŒã«å°éã§ããªãå Žåã¯èªåçã« TS ã«ãã©ãŒã«ããã¯ããŸãã`bifrost` 㯠Bifrost ã匷å¶ããŸãïŒå³æ Œã¢ãŒãããã©ãŒã«ããã¯ãªãïŒãèªèšŒïŒã¬ãŒãå¶éïŒã€ã³ãžã§ã¯ã·ã§ã³ã¬ãŒãïŒèš±å¯ãªã¹ãã¯ãåžžã«æåã« Next ã«ãŒãã§å®è¡ãããŸããã¬ã¹ãã³ã¹ã«ã¯ `X-Routing-Backend` / `X-Routing-Fallback` / `X-Routing-Fallback-Reason` ãå«ãŸããŸãã |
| `RELAY_ROUTING_BACKEND` | _ïŒæªèšå®ïŒ_ | `src/app/api/v1/relay/chat/completions/routingBackend.ts` | `OMNIROUTE_RELAY_BACKEND` ã®ãšã€ãªã¢ã¹ãšããŠäœ¿çšã§ããŸãïŒå€ã¯åãã `ts \| bifrost \| auto`ïŒãäž¡æ¹ãèšå®ãããŠããå Žåã¯ã`OMNIROUTE_RELAY_BACKEND` ãåªå
ãããŸãã |
| `OMNIROUTE_BIFROST_FAILURE_COOLDOWN_MS` | `5000` | `src/app/api/v1/relay/chat/completions/bifrostCooldown.ts` | `auto` ã¢ãŒãã§ Bifrost ãµã€ãã«ãŒãžã®ãããã倱æããåŸããªã¬ãŒããµã€ãã«ãŒãžã®æ¥ç¶ãå詊è¡ãããŸã§ã®ã¯ãŒã«ããŠã³æéïŒããªç§ïŒãã¯ãŒã«ããŠã³äžã¯ TS ãã¹ãžçŽæ¥ã«ãŒãã£ã³ã°ããçµäºåŸã«å床ãããŒãããŸãã`0` ã§ç¡å¹ã«ãªããŸãã`OMNIROUTE_RELAY_BACKEND=auto` ã®å Žåã«ã®ã¿é©çšãããŸãã |
| `OMNIROUTE_TLS_CERT` | _ïŒæªèšå®ïŒ_ | `bin/cli/commands/serve.mjs` | `omniroute serve` ã HTTPS ã§æäŸããããã® PEM TLS èšŒææžãžã®ãã¹ïŒ`--tls-cert` ãšåçïŒã`OMNIROUTE_TLS_KEY` ãšçµã¿åãããŠæå®ããå¿
èŠããããŸããæå®ãããšãã¹ã¿ã³ãã¢ãã³ãµãŒããŒã¯åããªã¹ããŒã§ TLS ãçµç«¯ããŸãïŒ`wss://` ã倿Žãªãã§æ©èœããŸãïŒãæªèšå® â ãã¬ãŒã³ HTTPãèšŒææžïŒããŒã®äžæ¹ã®ã¿ãæå®ããå ŽåããŸãã¯ãã¹ãèªã¿åããªãå Žåã¯ãèŠåããã°ã«èšé²ã㊠HTTP ã®ãŸãŸåäœããŸãã |
| `OMNIROUTE_TLS_KEY` | _ïŒæªèšå®ïŒ_ | `bin/cli/commands/serve.mjs` | `omniroute serve` ã HTTPS ã§æäŸããããã® PEM TLS ç§å¯éµãžã®ãã¹ïŒ`--tls-key` ãšåçïŒã`OMNIROUTE_TLS_CERT` ãšçµã¿åãããŠæå®ããå¿
èŠããããŸãã`OMNIROUTE_TLS_CERT` ãåç
§ããŠãã ããã |
| `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED` | `0` | `src/lib/security/localEndpoints.ts` | `/api/local/*` ã«ãŒãã®ãã¹ã¿ãŒã¹ã€ãããæªèšå®ãŸã㯠`0` ã®å Žåãæ¬çªç°å¢ã§ã¯ãã¹ãŠã® `/api/local/*` ã«ãŒãã 503 ãè¿ããŸããéã«ãŒãããã¯ç°å¢ãžã®ãããã€ã§ Redis ã©ã³ãã£ãŒãåæ§ã®ã¯ã³ã¯ãªãã¯åŒããŒã«ã«ãµãŒãã¹èµ·åæ©èœãæå¹ã«ããã«ã¯ã`1` ã«èšå®ããå¿
èŠããããŸãã`isLocalOnlyPath()` ã«ããã«ãŒãã¬ãŒãåé¡ïŒ`src/server/authz/routeGuard.ts` å
ã® `LOCAL_ONLY_API_PREFIXES`ïŒãšäœµçšããå€éé²åŸ¡ã§ãã |
| `OMNIROUTE_LOCAL_ENDPOINTS_TOKEN` | _ïŒæªèšå®ïŒ_ | `src/lib/security/localEndpoints.ts` | ã«ãŒãããã¯äžã«ãªã `/api/local/*` åŒã³åºãå
ïŒäŸïŒãã¹ã¯ãããã¢ããªïŒçšã® Bearer ããŒã¯ã³ãèšå®ãããŠããå Žåãéã«ãŒããã㯠IP ããã®ãªã¯ãšã¹ãã«ã¯ `Authorization: Bearer ` ãå«ããå¿
èŠããããŸããéã«ãŒãããã¯ç°å¢ãžã®ãããã€ã§ `OMNIROUTE_LOCAL_ENDPOINTS_ENABLED=1` ã«ããå Žåã¯å¿
é ã§ãã |
| `OMNIROUTE_REDIS_CONTAINER_NAME` | `omniroute-redis` | `bin/cli/commands/redis.mjs` | 1ã¯ãªã㯠Redis ã©ã³ãã£ãŒïŒ`omniroute redis up`ïŒã®ã³ã³ããåãCLI ãš `RedisLauncherPanel` GUI ã®äž¡æ¹ã§äœ¿çšãããŸãã |
| `OMNIROUTE_REDIS_HOST_PORT` | `6379` | `bin/cli/commands/redis.mjs` | 1ã¯ãªã㯠Redis ã©ã³ãã£ãŒã®ãã¹ãããŒãããã¹ãããã§ã« 6379 ããã€ã³ãããŠããå Žåã¯å€æŽããŠãã ãããã³ã³ããã®å
éšããŒã㯠6379 ã®ãŸãŸã§ãã |
| `OMNIROUTE_REDIS_BIND_HOST` | `127.0.0.1` | `bin/cli/commands/redis.mjs` | 1ã¯ãªã㯠Redis ã©ã³ãã£ãŒãå
¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ãã©ã³ãã£ãŒã¯ãã¹ã¯ãŒããªãã§ Redis ãèµ·åããããã`0.0.0.0` ã«ãã€ã³ããããšãLAN äžã®ãã¹ãŠã®ãã¹ãããèªèšŒãªãã§ Redis ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãããã®ç¯å²ãåºããã®ã¯ãã€ã³ã¹ã¿ã³ã¹ã«èªåã§ãã¹ã¯ãŒããèšå®ããå Žåã®ã¿ã«ããŠãã ããã |
| `REDIS_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose ã Redis ãµã€ãã«ãŒãå
¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ïŒ#9286ïŒãcompose ã® Redis 㯠`requirepass` ãªãã§åäœããã¢ããªã³ã³ãã㯠compose ãããã¯ãŒã¯ïŒ`redis:6379`ïŒçµç±ã§ã¢ã¯ã»ã¹ããŸããå
¬éããŒãã¯ãã¹ãåŽããŒã«å°çšã§ãã`0.0.0.0` ãæå®ãããšãèªèšŒãªãã® Redis ã LAN å
šäœã«å
¬éãããŸãã |
| `REDIS_PORT` | `6379` | `docker-compose.yml` | compose Redis ãµã€ãã«ãŒã®ãã¹ãããŒãã |
| `APP_BIND_HOST` | `127.0.0.1` | `docker-compose.yml`, `docker-compose.prod.yml` | docker-compose ãã¢ããªèªèº«ã®ããã·ã¥ããŒã/API/live-WS ããŒããå
¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ïŒ#12568ïŒã`.env.example` ã®ããã©ã«ãèšå®ã§ã¯ `REQUIRE_API_KEY=false` ã§ããããã`0.0.0.0` ãæå®ãããšãå¿åã§å©çšå¯èœãª `/v1` LLM ãããã·ã LAN/WAN å
šäœã«å
¬éãããŸãã`REQUIRE_API_KEY=true` ã«èšå®ããããåæ®µã®ãªããŒã¹ãããã·ã§ç¬èªã®èªèšŒãé©çšããå Žåã«ã®ã¿å
¬éç¯å²ãåºããŠãã ããã |
| `QDRANT_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose ã Qdrant ã¡ã¢ãªãµã€ãã«ãŒãå
¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ïŒ#12578ïŒãLAN ãžã®å
¬éã«é¢ããèãæ¹ã¯ `REDIS_BIND_HOST` ãšåãã§ãã |
| `BIFROST_BIND_HOST` | `127.0.0.1` | `docker-compose.yml` | docker-compose ã Bifrost ã«ãŒã¿ãŒãµã€ãã«ãŒãå
¬éãããã¹ãã€ã³ã¿ãŒãã§ãŒã¹ïŒ#12578ïŒãLAN ãžã®å
¬éã«é¢ããèãæ¹ã¯ `REDIS_BIND_HOST` ãšåãã§ãã |
| `REDIS_KEY_PREFIX` | `omniroute:` | `src/shared/utils/rateLimiter.ts` | ãã¹ãŠã® OmniRoute Redis ããŒïŒã¬ãŒããªããã¿ãŒãèªèšŒãã£ãã·ã¥ãã¯ã©ãŒã¿ã¹ãã¢ããŠã©ãŒã ã¢ããçšãµãŒããããã¬ãŒã«ãŒïŒã«é©çšãããåå空éãã¬ãã£ãã¯ã¹ãRedis ã€ã³ã¹ã¿ã³ã¹ãä»ã®ã¢ããªãšå
±æããå Žåã®ããŒè¡çªãé²ããŸãïŒ#11042ïŒã |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | _ïŒæªèšå® â æ©æ§ã¯ç¡å¹ïŒ_ | `src/lib/api/internalServiceAuth.ts` | åŒã³åºãå
ã®è奿
å ±ãç¶æããå
éš REST ãããïŒ#9260ïŒçšã®å
±æã·ãŒã¯ã¬ãããå¥ã®ããŒã«ã« OmniRoute ã«ãŒããåŒã³åºã OmniRoute ã³ã³ããŒãã³ãã¯ãå
ã®åŒã³åºãå
ã®è奿
å ±ãç¶æãããããã«ãããã `x-omniroute-internal-service-token` ãšããŠéä¿¡ããŸãã`timingSafeEqual` ã§æ¯èŒãããŸãã |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | _(æªèšå®)_ | `src/lib/api/internalServiceAuth.ts` | å
éšãµãŒãã¹ããŒã¯ã³ã®ã·ãŒã¯ã¬ãããã¡ã€ã«çïŒããŒã¯ã³ãšããŠäœ¿çšãããååŸã®ç©ºçœãé€å»ããå
容ãæã€ãã¡ã€ã«ãžã®ãã¹ãã€ã³ã©ã€ã³å€æ°ãæªèšå®ã®å Žåã«ã®ã¿åç
§ãããŸãã |
| `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | `src/lib/catalog/openrouterProviderStats.ts` | ããã·ã¥ããŒãã®ãããã€ããŒäžèŠ§ã« OpenRouter ã®é±éã©ã³ãã³ã°çµ±èšïŒ#9324ïŒã远å ããŸããããã©ã«ãã§æå¹ã§ããããã¯ã°ã©ãŠã³ãååŸãå®å
šã«ã¹ãããããã«ã¯ `false` ã«èšå®ããŸãïŒãã³ããããã³ã°ã§ãèŽåœçãšã©ãŒã«ã¯ãªããŸããïŒã |
| `OPENROUTER_PROVIDER_STATS_TTL_MS` | `86400000`ïŒ24æéïŒ | `src/lib/catalog/openrouterProviderStats.ts` | OpenRouter ãããã€ããŒçµ±èšã¹ãããã·ã§ããã®ãã£ãã·ã¥ TTLïŒããªç§åäœïŒã |
| `OMNIROUTE_REDIS_IMAGE` | `redis:7-alpine` | `bin/cli/commands/redis.mjs` | ã¯ã³ã¯ãªã㯠Redis ã©ã³ãã£ãŒã§äœ¿çšãã Redis ã€ã¡ãŒãžãå¿
èŠã«å¿ã㊠`redis:8-alpine` ãŸãã¯ãã©ã€ããŒãã¬ãžã¹ããªã®ãã©ãŒã«å€æŽã§ããŸãã |
| `QDRANT_HOST` | `qdrant` | _ïŒãªããã€ã³ã®ã¯ã©ã¹ã¿ãŒãããã¡ã€ã«ïŒ_ | `--profile memory` ãæå¹ãªå Žåã® Qdrant ãµã€ãã«ãŒã®ãã¹ãåãããã©ã«ãã§ã¯ãããã¯ãŒã¯å
ã® qdrant ãµãŒãã¹åãæããŸããå€éšãããã€ã¡ã³ãã®å Žåã¯å€æŽããŠãã ãããã³ãŒãå
ïŒ`src/lib/memory/vectorStore.ts:108`ïŒã§ `qdrantEnabled` ã `true` ã®å Žåã«ã®ã¿äœ¿çšãããŸãã |
| `QDRANT_PORT` | `6333` | _ïŒãªããã€ã³ã®ã¯ã©ã¹ã¿ãŒãããã¡ã€ã«ïŒ_ | Qdrant ãµã€ãã«ãŒã® REST ããŒãã |
| `QDRANT_GRPC_PORT` | `6334` | _ïŒãªããã€ã³ã®ã¯ã©ã¹ã¿ãŒãããã¡ã€ã«ïŒ_ | Qdrant ãµã€ãã«ãŒã® gRPC ããŒããã¹ããªãŒãã³ã°æäœã§ REST ããã gRPC ãåªå
ããã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªã«ãã£ãŠäœ¿çšãããŸãã |
| `QDRANT_API_KEY` | _ïŒæªèšå®ïŒ_ | _ïŒãªããã€ã³ã®ã¯ã©ã¹ã¿ãŒãããã¡ã€ã«ïŒ_ | Qdrant Cloud ãŸãã¯èªèšŒæžã¿ãªã³ãã¬ãã¹ã€ã³ã¹ã¿ã³ã¹çšã®ä»»æã® API ããŒã空ã®å Žåã`api-key` ããããŒã¯éä¿¡ãããŸããã |
| `QDRANT_COLLECTION` | `omniroute-memory` | _ïŒãªããã€ã³ã®ã¯ã©ã¹ã¿ãŒãããã¡ã€ã«ïŒ_ | OmniRoute ã®äŒè©±ã¡ã¢ãªãŒåã蟌ã¿çšã³ã¬ã¯ã·ã§ã³åãååå®è¡æã« `QDRANT_VECTOR_SIZE` 次å
ã§äœæãããŸãã |
| `QDRANT_EMBEDDING_MODEL` | `text-embedding-3-small` | _ïŒãªããã€ã³ã®ã¯ã©ã¹ã¿ãŒãããã¡ã€ã«ïŒ_ | Qdrant ã³ã¬ã¯ã·ã§ã³ã®ã¡ã¿ããŒã¿ã«èšé²ãããããã©ã«ãã®åã蟌ã¿ã¢ãã«åãå®éã®åã蟌ã¿ã¯ãOmniRoute ã®èšå®å
ã«ãã `embeddingModel` ãã£ãŒã«ããåç
§ãããããã€ããŒã«ãã£ãŠçæãããŸãã |
| `QDRANT_VECTOR_SIZE` | `1536` | _(ãªããã€ã³ã®ã¯ã©ã¹ã¿ãŒãããã¡ã€ã«)_ | åã蟌ã¿ãã¯ãã«ã®æ¬¡å
æ°ã䜿çšããåã蟌ã¿ã¢ãã«ãšäžèŽããŠããå¿
èŠããããŸãïŒtext-embedding-3-small â 1536ãada-002 â 1536ãnomic-embed-text â 768ïŒã |
| `QDRANT_HNSW_EF_CONSTRUCT` | `128` | _(ãªããã€ã³ã®ã¯ã©ã¹ã¿ãŒãããã¡ã€ã«)_ | HNSW ã€ã³ããã¯ã¹æ§ç¯æã®ç²ŸåºŠãå€ã倧ããã»ã©æ§ç¯ã¯é
ããªããæ€çŽ¢ã¯é«éã«ãªããŸãã |
| `OMNIROUTE_ROTATION_ENABLED` | `true` | `open-sse/services/rotationConfig.ts` | ãªãã¬ãŒã¿ãŒãèšå®å¯èœãªã¢ã«ãŠã³ãããŒããŒã·ã§ã³ã®ãã¹ã¿ãŒã¹ã€ããã`false` ã®å Žåã以äžã® `OMNIROUTE_ROTATE_*` ã¯ã©ã¹ã¯ããããã¢ã«ãŠã³ãã®ãã©ãŒã«ããã¯ãããªã¬ãŒããŸããïŒãã¹ã¿ãŒããªãã®ç¶æ
ã§ã¯ãããã©ã«ãã§æå¹ãª 429/500/502 ã¯ã©ã¹ããããã¯ãããŸãïŒãããã«ããã管çããã³ããšã³ãïŒVibeProxy ãã¹ã¯ãããã¢ããªãªã©ïŒã¯ãç¬èªã®ããŒããŒã·ã§ã³ã«ãŒã«ãããã¯ãšã³ãã®ã¢ã«ãŠã³ããã©ãŒã«ããã¯ãšã³ãžã³ã«åæ ã§ããŸãã |
| `OMNIROUTE_ROTATION_RATE_LIMIT_RESET_SECONDS` | `0` | `open-sse/services/rotationConfig.ts` | ã¢ããã¹ããªãŒã ããæç€ºçãªãªã»ããæå»ãæç€ºãããªãå Žåã«ãã¬ãŒãå¶éãåããã¢ã«ãŠã³ããžé©çšããã¯ãŒã«ããŠã³ïŒç§ïŒã`0` = åºå®ã®äžæžãå€ã§ã¯ãªãããšã³ãžã³ã®ããã©ã«ãã®ã¯ãŒã«ããŠã³ã䜿çšããŸãã |
| `OMNIROUTE_ROTATION_DISABLE_TAG_WITHOUT_RESET` | `true` | `open-sse/services/rotationConfig.ts` | ããã³ããšã³ãã®ããªã»ããæå»ããªããã°ã¬ãŒãå¶éæžã¿ãšããŠã¿ã°ä»ãããªããèšå®ãåæ ããŸãã |
| `OMNIROUTE_ROTATE_ON_429` | `true` | `open-sse/services/rotationConfig.ts` | `429` ãšã©ãŒã«å¯Ÿããã¹ããŒã¿ã¹å¥ãã©ãŒã«ããã¯ã®æå¹åèšå®ã`false` ã®å ŽåïŒã〠`OMNIROUTE_ROTATION_ENABLED=true` ã®å ŽåïŒã`429` ã¯ã¢ã«ãŠã³ãããŒããŒã·ã§ã³ãããªã¬ãŒããªããªãã代ããã«ã¯ã©ã€ã¢ã³ããžè¿ãããŸãã |
| `OMNIROUTE_ROTATE_429_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | ã¢ã«ãŠã³ããããŒããŒã·ã§ã³ããããŸã§ã« `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` å
ã§å¿
èŠãšãªã `429` ãšã©ãŒã®ä»¶æ°ã`1`ïŒããã©ã«ãïŒã§ã¯å³åº§ã«ããŒããŒã·ã§ã³ãããåŸæ¥ã®åäœãç¶æãããŸãã |
| `OMNIROUTE_ROTATE_429_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `429` ãšã©ãŒã `OMNIROUTE_ROTATE_429_THRESHOLD` ã«åããŠã«ãŠã³ãããã¹ã©ã€ãã£ã³ã°ãŠã£ã³ããŠïŒç§ïŒã |
| `OMNIROUTE_ROTATE_ON_500` | `true` | `open-sse/services/rotationConfig.ts` | `5xx` ãµãŒããŒãšã©ãŒïŒç¬èªã®ã¯ã©ã¹ãæã€ `502` ãé€ãïŒã«å¯Ÿããã¹ããŒã¿ã¹å¥ãã©ãŒã«ããã¯ã®æå¹åèšå®ã`false` ã®å Žåããããã®ãšã©ãŒã¯ã¢ã«ãŠã³ãããŒããŒã·ã§ã³ãããªã¬ãŒããªããªããŸãã |
| `OMNIROUTE_ROTATE_500_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | ã¢ã«ãŠã³ããããŒããŒã·ã§ã³ããããŸã§ã« `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` å
ã§å¿
èŠãšãªã `5xx` ãšã©ãŒã®ä»¶æ°ã`1`ïŒããã©ã«ãïŒã§ã¯å³åº§ã«ããŒããŒã·ã§ã³ãããŸãã |
| `OMNIROUTE_ROTATE_500_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `5xx` ãšã©ãŒã `OMNIROUTE_ROTATE_500_THRESHOLD` ã«åããŠã«ãŠã³ããããã¹ã©ã€ãã£ã³ã°ãŠã£ã³ããŠïŒç§ïŒã |
| `OMNIROUTE_ROTATE_ON_502` | `true` | `open-sse/services/rotationConfig.ts` | `502`ïŒäžæ£ãªã²ãŒããŠã§ã€ïŒãšã©ãŒã«å¯Ÿããã¹ããŒã¿ã¹å¥ãã©ãŒã«ããã¯ã®æå¹åèšå®ã`false` ã®å Žåã`502` ã¯ã¢ã«ãŠã³ãããŒããŒã·ã§ã³ãããªã¬ãŒããªããªããŸãã |
| `OMNIROUTE_ROTATE_502_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | ã¢ã«ãŠã³ããããŒããŒã·ã§ã³ããããŸã§ã« `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` å
ã§å¿
èŠãšãªã `502` ãšã©ãŒã®æ°ã`1`ïŒããã©ã«ãïŒã®å Žåã¯å³åº§ã«ããŒããŒã·ã§ã³ããŸãã |
| `OMNIROUTE_ROTATE_502_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `502` ãšã©ãŒã `OMNIROUTE_ROTATE_502_THRESHOLD` ã«åããŠã«ãŠã³ããããã¹ã©ã€ãã£ã³ã°ãŠã£ã³ããŠïŒç§ïŒã |
| `OMNIROUTE_ROTATE_ON_400` | `false` | `open-sse/services/rotationConfig.ts` | ãªããã€ã³ïŒããã©ã«ãã¯ãªãïŒïŒ`true` ã®å Žåãéåžžã® `400`ïŒäžæ£ãªãªã¯ãšã¹ãïŒãã¢ã«ãŠã³ãããŒããŒã·ã§ã³ãããªã¬ãŒããŸããããã¯æ¢åã®åäœã«è¿œå ãããã ãã§ãããã¬ãŒãå¶éãã¯ã©ãŒã¿ã«é¢ããããã¹ããå«ã `400` ãããã®ãã©ã°ã«é¢ä¿ãªãåŒãç¶ããã§ã€ã«ãªãŒããŒãããšãããšã³ãžã³ã®æ¢ååäœã劚ããããšã¯ãããŸããã |
| `OMNIROUTE_ROTATE_400_THRESHOLD` | `1` | `open-sse/services/rotationConfig.ts` | ã¢ã«ãŠã³ããããŒããŒã·ã§ã³ããããŸã§ã« `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` å
ã§å¿
èŠãšãªã `400` ãšã©ãŒã®æ°ïŒ`OMNIROUTE_ROTATE_ON_400=true` ã®å Žåã«ã®ã¿åç
§ãããŸãïŒã |
| `OMNIROUTE_ROTATE_400_WINDOW_SECONDS` | `120` | `open-sse/services/rotationConfig.ts` | `400` ãšã©ãŒã `OMNIROUTE_ROTATE_400_THRESHOLD` ã«åããŠã«ãŠã³ããããã¹ã©ã€ãã£ã³ã°ãŠã£ã³ããŠïŒç§ïŒã |
### Claude ãŠã©ãŒã ã¢ããã¹ã±ãžã¥ãŒã©ãŒ
ãªããã€ã³ãã Anthropic OAuth æ¥ç¶ã察象ãšãã cron é§åã®ãŠã©ãŒã ã¢ããã§ããããã«ããã5æéã®ã¬ãŒãå¶éãŠã£ã³ããŠããæåã®å®éã®ãªã¯ãšã¹ãã§ã¯ãªããã¹ã±ãžã¥ãŒã«ãããç°¡åãªãªã¯ãšã¹ãã«ãã£ãŠéå§ãããŸãïŒ#8848ïŒã`OMNIROUTE_WARMUP_ENABLED` ãçå€ã§ããããã€æ¥ç¶ã `settings.claudeWarmup.connections` ã§æå®ãããŠããå Žåã«ã®ã¿ã¹ã±ãžã¥ãŒã©ãŒãæå¹ã«ãªããŸããæ¥ç¶ãªã¹ãã空ã®å Žåãç°å¢å€æ°ãæå¹ã§ããŠã©ãŒã ã¢ããã¯å®è¡ãããŸããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------ | --------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_WARMUP_ENABLED` | _ïŒæªèšå® â ãªãïŒ_ | `src/lib/warmupScheduler.ts` | ãŠã©ãŒã ã¢ããã¹ã±ãžã¥ãŒã©ã®ãã¹ã¿ãŒã¹ã€ããã`1`/`true`/`yes`/`on` ãåãä»ããŸãïŒå€§æåã»å°æåãåºå¥ãããååŸã®ç©ºçœã¯é€å»ïŒããã以å€ã®å€ããŸãã¯æªèšå®ã®å Žåãã¹ã±ãžã¥ãŒã©ã¯ãªãã®ãŸãŸã§ãã |
| `OMNIROUTE_WARMUP_CRON` | `0 7 * * *` | `src/lib/warmupScheduler.ts` | ãŠã©ãŒã ã¢ããã®å®è¡ã¿ã€ãã³ã°ãæå®ãã5ãã£ãŒã«ãã® cron åŒããã¹ãã®æå»èšå®ã«ãããããã`America/Los_Angeles`ïŒAnthropic ã®ãªã»ããã¿ã€ã ãŸãŒã³ïŒã§è©äŸ¡ãããŸãã |
| `OMNIROUTE_WARMUP_CONCURRENCY` | `3` | `src/lib/warmupScheduler.ts` | åå®è¡æã«äžŠåã§ãŠã©ãŒã ã¢ããããæ¥ç¶æ°ã`1`ïœ`10`ã®ç¯å²ã«å¶éãããæ°å€ä»¥å€ã®å Žåã¯`3`ã«ãã©ãŒã«ããã¯ããŸãã |
| `OMNIROUTE_WARMUP_MODEL` | `claude-3-5-haiku-20241022` | `src/lib/warmupScheduler.ts` | ãŠã©ãŒã ã¢ãããªã¯ãšã¹ãã«äœ¿çšããã¢ãã«ãããã©ã«ãããå©çšã®ãã©ã³ã§äœ¿çšã§ããªãå Žåã«ã®ã¿äžæžããããŠã£ã³ããŠãéãããšãã§ããæãå®äŸ¡ãªã¢ãã«ãéžæããŠãã ããã |
### ãã©ãŠã¶ãã°ã€ã³çš VNC ã»ãã·ã§ã³ãšããŒã¿ãã£ã¬ã¯ããªã®ãšã€ãªã¢ã¹
察話åãã©ãŠã¶ãã°ã€ã³ã§èªèšŒæ
å ±ãååŸããããã«äœ¿çšããã³ã³ããåããã Chromium+VNCïŒ`/api/vnc-session`ïŒãšãåŸæ¥ã®`DATA_DIR`ãšã€ãªã¢ã¹ã§ãããã¹ãŠä»»æèšå®ã§ããVNC ã®ããã©ã«ãå€ã¯å梱ã®`omniroute-vnc-chromium:local`ã€ã¡ãŒãžã察象ãšããŠãããã«ã¹ã¿ã ã³ã³ããã€ã¡ãŒãžãããŒãããŸãã¯ã©ã€ããµã€ã¯ã«èª¿æŽãå¿
èŠãªå Žåã«ã®ã¿äžæžãããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | Chromium+VNC ãã°ã€ã³ã³ã³ããã® Docker ã€ã¡ãŒãžã¿ã°ã`docker/vnc-browser/chromium`ããã«ãããããã«ã¹ã¿ã ã€ã¡ãŒãžãæå®ããŠãã ããã |
| `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC ã³ã³ããã®èµ·åã«äœ¿çšããã³ã³ããã©ã³ã¿ã€ã ã®ãã€ããªïŒäŸïŒ`podman`ã«èšå®ïŒã |
| `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | ã³ã³ããå
ã§å
¬éããã VNC/noVNC ããŒãã |
| `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | ã³ã³ããå
ã® Chrome DevTools Protocol ããŒãã |
| `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | ã³ã³ããå
ã® Chromium ãããã¡ã€ã«ãã£ã¬ã¯ããªã®ãã¹ã |
| `OMNIROUTE_VNC_PROFILE_DIR` | `$HOME/.omniroute/browser-login-profiles` | `src/lib/vncSession/manifest.ts` | æ°žç¶åããããã©ãŠã¶ãã°ã€ã³ãããã¡ã€ã«ãæ ŒçŽãããã¹ãåŽãã£ã¬ã¯ããªã |
| `OMNIROUTE_VNC_IDLE_MS` | `600000`ïŒ10åïŒ | `src/lib/vncSession/manifest.ts` | éã¢ã¯ãã£ã㪠VNC ã»ãã·ã§ã³ãåé€ããããŸã§ã®ã¢ã€ãã«ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `OMNIROUTE_VNC_MAX_MS` | `1800000`ïŒ30åïŒ | `src/lib/vncSession/manifest.ts` | åäžã® VNC ã»ãã·ã§ã³ã®åç¶æéã«å¯ŸããäžéïŒããªç§ïŒã |
| `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | åæã«å®è¡ã§ãã VNC ã»ãã·ã§ã³ã®æå€§æ°ã |
| `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | ã³ã³ããåããããã©ãŠã¶ã CDP 察å¿ç¶æ
ã«ãªããŸã§ã®åŸ
æ©ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | ãã°ã€ã³å®äºåŸãååŸããã»ãã·ã§ã³/ã¯ãããŒãåéããéã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `OMNIROUTE_VNC_CHROMIUM_ARGS` | `--remote-debugging-port=9222 --no-first-run --no-default-browser-check` | `src/lib/vncSession/manifest.ts` | ã³ã³ããåããã Chromium ã«æž¡ããã远å ã®ã³ãã³ãã©ã€ã³ãã©ã°ã |
| `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | VNC ãã°ã€ã³ã³ã³ãããããã©ã«ãããªããžã®ä»£ããã«åå ããå°çš Docker ãããã¯ãŒã¯ïŒ#12571ïŒãããã«ãããåéå±€ã®ã³ã³ãããã CDP ããªããžããŒãã«ã¢ã¯ã»ã¹ã§ããªããªããŸãã |
| `VIBEPROXY_DATA_DIR` | _ïŒæªèšå®ïŒ_ | `open-sse/services/notionThreadSessions.ts` | `DATA_DIR`ã®**åŸæ¥ã®ãšã€ãªã¢ã¹**ã`DATA_DIR`ãš`OMNIROUTE_DATA_DIR`ã®äž¡æ¹ãæªèšå®ã®å Žåã«ã®ã¿ç¢ºèªãããŸããNotion Web ã¹ã¬ããã®ã»ãã·ã§ã³ãã£ãã·ã¥ïŒ`/notion-web-thread-sessions.json`ïŒã®å Žæãæå®ããŸãã |
---
## 26. ãã¹ã & E2E ããŒãã¹
`scripts/dev/run-next-playwright.mjs`ã`scripts/dev/smoke-electron-packaged.mjs`ã
`scripts/dev/run-ecosystem-tests.mjs`ãããã³ `scripts/build/uninstall.mjs` ã§äœ¿çšãããŸããæ¬çªç°å¢ãžã®ãããã€ã§ã¯ã以äžã®ãã¹ãŠã®å€ãæªèšå®ã®ãŸãŸã«ããŠãã ããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| -------------------------------------- | ----------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OMNIROUTE_E2E_BOOTSTRAP_MODE` | `auth` | `scripts/dev/run-next-playwright.mjs` | Playwright ã©ã³ããŒã® E2E ããŒãã¹ãã©ããã¢ãŒãïŒ`auth`ã`fresh`ã`reuse`ïŒã |
| `OMNIROUTE_E2E_PASSWORD` | `INITIAL_PASSWORD` ã«ãã©ãŒã«ãã㯠| `scripts/dev/run-next-playwright.mjs` | Playwright ç°å¢ã«æ³šå
¥ããã管çè
ãã¹ã¯ãŒãã |
| `OMNIROUTE_DISABLE_LOCAL_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright ã®å®è¡äžãããŒã«ã«ãã«ã¹ãã§ãã¯ã®ããŒãªã³ã°ãç¡å¹ã«ããŸãã |
| `OMNIROUTE_DISABLE_TOKEN_HEALTHCHECK` | `true` | `scripts/dev/run-next-playwright.mjs` | ãã¹ãäžãOAuth ããŒã¯ã³ã®ãã«ã¹ãã§ãã¯ã«ãŒããç¡å¹ã«ããŸãã |
| `OMNIROUTE_HEALTHCHECK_SKIP_PROVIDERS` | _ïŒæªèšå®ïŒ_ | `src/lib/tokenHealthCheck.ts` | ããã¢ã¯ãã£ããªããŒã¯ã³æŽæ°ã¹ã€ãŒãããé€å€ãããããã€ããŒãã«ã³ãåºåãã§æå®ããŸãïŒäŸïŒ`codex,openai`ïŒããã«ã¹ãã§ãã¯ãå®å
šã«ç¡å¹åãã代ãããšãªã察象éå®ã®èšå®ã§ããTTL ãçããããã€ããŒã¯æŽæ°ãç¶ç¶ããã«ã¹ã±ãŒããããã€ããŒã¯ãªã¢ã¯ãã£ããªæŽæ°ã®ã¿ãè¡ããŸãã |
| `OMNIROUTE_HIDE_HEALTHCHECK_LOGS` | `true` | `scripts/dev/run-next-playwright.mjs` | Playwright ã®æšæºåºåã«å«ãŸãããã«ã¹ãã§ãã¯ã®ãã€ãºãæå¶ããŸãã |
| `OMNIROUTE_PLAYWRIGHT_SKIP_BUILD` | `0` | `scripts/dev/run-next-playwright.mjs` | Playwright ã®èµ·ååã«è¡ããã Next.js ã®æ¬çªãã«ããã¹ãããããŸãïŒCI ã®æé©åïŒã |
| `OMNIROUTE_SKIP_UNINSTALL_HOOK` | `0` | `scripts/build/uninstall.mjs` | OmniRoute ã®ã¢ã³ã€ã³ã¹ããŒã«ããã¯ãã¹ãããããŸãïŒCI ã§ `node_modules` ãç¶æããããã«äœ¿çšïŒã |
| `ECOSYSTEM_SERVER_WAIT_MS` | `180000` | `scripts/dev/run-ecosystem-tests.mjs` | ãšã³ã·ã¹ãã ïŒãããã³ã«ãã¹ããå®è¡ããåã«ããµãŒããŒãæ£åžžã«ãªããŸã§åŸ
æ©ããæéïŒããªç§ïŒã |
| `ELECTRON_SMOKE_URL` | `http://127.0.0.1:20128/login` | `scripts/dev/smoke-electron-packaged.mjs` | Electron ã¹ã¢ãŒã¯ããŒãã¹ããããã±ãŒãžåãããã¢ããªã«ãã£ãŠæäŸãããããšãæ³å®ãã URLã |
| `ELECTRON_SMOKE_TIMEOUT_MS` | `45000` | `scripts/dev/smoke-electron-packaged.mjs` | ã¹ã¢ãŒã¯ããŒãã¹ãåŠçãæå¿µãããŸã§ã®åèšã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `ELECTRON_SMOKE_SETTLE_MS` | `2000` | `scripts/dev/smoke-electron-packaged.mjs` | ããŒãžèªã¿èŸŒã¿åŸã®å®å®ååŸ
æ©æéïŒããªç§ïŒã |
| `ELECTRON_SMOKE_APP_EXECUTABLE` | _ïŒèªåïŒ_ | `scripts/dev/smoke-electron-packaged.mjs` | ããã±ãŒãžåããã Electron å®è¡å¯èœãã¡ã€ã«ãžã®æç€ºçãªãã¹ã |
| `ELECTRON_SMOKE_DATA_DIR` | _ïŒtmpdirïŒ_ | `scripts/dev/smoke-electron-packaged.mjs` | Electron ã¹ã¢ãŒã¯å®è¡çšã®ããŒã¿ãã£ã¬ã¯ããªã |
| `ELECTRON_SMOKE_KEEP_DATA` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | å®è¡åŸãã¹ã¢ãŒã¯ãã¹ãã®ããŒã¿ãã£ã¬ã¯ããªãä¿æããã«ã¯ã`1` ã«èšå®ããŸãã |
| `ELECTRON_SMOKE_STREAM_LOGS` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | å®è¡äžã« Electron ã®ãã°ã stdout ã«ã¹ããªãŒãã³ã°ããã«ã¯ã`1` ã«èšå®ããŸãã |
| `ELECTRON_SMOKE_COLD_RESTART` | `0` | `scripts/dev/smoke-electron-packaged.mjs` | #7592: åãããŒã¿ãã£ã¬ã¯ããªã䜿çšããŠåèµ·åãã2 åç®ã®èµ·åã§ãã€ãã£ã SQLite ãã©ã€ããŒãéžæãããããšã確èªããŸãã |
| `CLI_DEVIN_BIN` | _ïŒPATH æ€çŽ¢ïŒ_ | `open-sse/executors/devin-cli.ts` | Devin CLI ãã€ããªã®ãã¹ãäžæžãããŸãã |
### ããã¥ã¡ã³ã翻蚳ãã€ãã©ã€ã³
`scripts/i18n/run-translation.mjs`ïŒ`npm run i18n:run` ã³ãã³ãïŒã§äœ¿çšãããŸãã
5 ã€ã®å€æ°ã¯ãã¹ãŠããã©ã«ãã§ã¯æªèšå®ã§ããããã¥ã¡ã³ã翻蚳ããŒã«ãå®è¡ã§ããããã«ãã
ãã·ã³ã§ã®ã¿ã`.env` ã«èšå®ããŠãã ããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ----------------------------------- | ------------ | ---------------------------------- | ---------------------------------------------------------------------- |
| `OMNIROUTE_TRANSLATION_API_URL` | _ïŒæªèšå®ïŒ_ | `scripts/i18n/run-translation.mjs` | 翻蚳ããã¯ãšã³ãçšã® OpenAI äºæããŒã¹ URLã |
| `OMNIROUTE_TRANSLATION_API_KEY` | _ïŒæªèšå®ïŒ_ | `scripts/i18n/run-translation.mjs` | 翻蚳ããã¯ãšã³ãçšã® Bearer ããŒã¯ã³ïŒãã°ã«ã¯æ±ºããŠèšé²ãããŸããïŒã |
| `OMNIROUTE_TRANSLATION_MODEL` | _ïŒæªèšå®ïŒ_ | `scripts/i18n/run-translation.mjs` | ã¢ãã« IDïŒäŸ: `gpt-4o-mini` ãŸã㯠`cx/gpt-5.4-mini`ïŒã |
| `OMNIROUTE_TRANSLATION_TIMEOUT_MS` | `60000` | `scripts/i18n/run-translation.mjs` | ãªã¯ãšã¹ãããšã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `OMNIROUTE_TRANSLATION_CONCURRENCY` | `4` | `scripts/i18n/run-translation.mjs` | è€æ°ã®ãã¡ã€ã«ããã±ãŒã«ãåŠçããéã®äžŠå翻蚳ãªã¯ãšã¹ãæ°ã |
---
## 27. Radar ãã£ãŒãïŒã»ã«ããã¹ãã£ã³ã°ïŒ
RADAR_ENABLED æ©èœãã©ã°ã«ãã£ãŠå¶åŸ¡ããããªãã·ã§ã³ã®ã¢ããªã³ã§ãïŒããã©ã«ãã¯ãªã â ç°å¢å€æ°ã§ã¯ãªããSettings/DB çµç±ã§åãæ¿ããæ©èœãã©ã°ã§ãã[docs/frameworks/RADAR.md](../frameworks/RADAR.md#flag-radar_enabled-default-off) ãåç
§ããŠãã ããïŒã
以äžã®æåã®4ã€ã®å€æ°ã¯ãã»ã«ããã¹ããŸãã¯ãã©ãŒã¯ãããã£ãŒããããã³ãµããŒã¿ãŒããŒã®ãããŒã«å¯Ÿãããªãã·ã§ã³ã®ãªãŒããŒã©ã€ãã§ãã5ã€ç®ã® `RADAR_ADMIN_URL` ã¯ãææè
ã®éå
¬ééçšããã«ãžã®ãããã©ã«ãå€ãæããªãç¬ç«ãããªã³ã¯ã§ããã¢ãžã¥ãŒã«ã®å®å
šãªããã¥ã¡ã³ããš
[ãšã³ãããŒãšã³ãã®æå¹åããã³ã¬ã€ãä»ãã»ããã¢ããæé ](../frameworks/RADAR.md#end-to-end-activation-and-guided-setup)ã«ã€ããŠã¯ã[docs/frameworks/RADAR.md](../frameworks/RADAR.md) ãåç
§ããŠãã ããã
æ±çšã® Home/Changelog ãç¥ãããªãŒããŒã¯ç°å¢å€æ°ã§èšå®ããããRADAR_ENABLED æ©èœãã©ã°ã«ãäŸåããŸããã`src/shared/utils/releaseNotes.ts` ã§å®£èšãããå
¬éãªããžããªã®
`news.json` URL ã GET ã®ã¿ã§èªã¿åããŸããé衚瀺ã«ãããç¥ããã® ID ã¯ãåŒãç¶ããã©ãŠã¶ãŒã®ããŒã«ã«ã¹ãã¬ãŒãžã«ä¿åãããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ----------------------------- | -------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RADAR_FEED_URL` | `https://radar.omniroute.online` | `src/lib/radar/{sync,referralsSync,offersSync,intelSync}.ts` | åå¥ã«çœ²åãããã«ã¿ãã°ã玹ä»ããµããŒã¿ãŒåããªãã¡ãŒãããã³ Intel ãã£ãŒãã§å
±æãããããŒã¹ URLãã»ã«ããã¹ããŸãã¯ãã©ãŒã¯ãããµãŒãã¹ãæå®ããã«ã¯ãªãŒããŒã©ã€ãããŸãã |
| `RADAR_FEED_PUBKEY` | _ïŒåºå®ãããããã©ã«ãããŒïŒ_ | `src/lib/radar/pinnedKeys.ts` | ã«ã¹ã¿ã ãã£ãŒãããã®ãã£ãŒã眲åãæ€èšŒããããã«äœ¿çšããã Ed25519 å
¬ééµïŒbase64-DER SPKI ãŸã㯠PEMïŒã |
| `RADAR_CONTRIBUTOR_CLAIM_URL` | `https://radar.omniroute.online/auth/github` | `src/lib/radar/links.ts` | ããã·ã¥ããŒãã®ãã³ã³ããªãã¥ãŒã¿ãŒã§ãããã¿ã³ã§éã URLïŒGitHub OAuth ãµããŒã¿ãŒããŒç³è«ãããŒïŒã |
| `RADAR_SUPPORTER_PLANS_URL` | `https://radar.omniroute.online/planos` | `src/lib/radar/links.ts` | ããã·ã¥ããŒãã®ããããžã§ã¯ããæ¯æŽããã¿ã³ã§éã URLïŒæ¯æãïŒãã©ã³ããŒãžïŒã |
| `RADAR_ADMIN_URL` | _ïŒæªèšå®ïŒ_ | `src/lib/radar/links.ts` | ææè
å°çšã®éå
¬ééçšããã«ãžã®ãªã³ã¯ãHTTP ã«ãŒããã㯠SSH 転éãé€ããHTTPS ãå¿
é ã§ããæªèšå®ãŸãã¯ç¡å¹ãªå€ã®å Žåãããã²ãŒã·ã§ã³é
ç®ã¯äœæãããŸããã |
---
## ç£æ»ïŒå逿žã¿ïŒæªäœ¿çšã®å€æ°
以äžã®å€æ°ã¯ä»¥åã®ããŒãžã§ã³ã® `.env.example` ã«ååšããŠããŸããããçŸåšã®ã³ãŒãããŒã¹ã§ã¯**å®è¡æã«åç
§ãããŠããŸãã**ããããã¯åé€ãããŸããã
| 倿° | çç± |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `STORAGE_DRIVER=sqlite` | ã©ã®ãœãŒã¹ãã¡ã€ã«ãããèªã¿åãããŸãããSQLite ãå¯äžãµããŒããããŠãããã©ã€ããŒã§ãããããéžæã¯äžèŠã§ãã |
| `INSTANCE_NAME=omniroute` | å€ãããã¥ã¡ã³ããç°å¢å€æ°ãã³ãã¬ãŒãã«ã¯ååšããŸãããå®è¡æã«ã¯äœ¿çšãããŸãããå°æ¥ã®ãã«ãã€ã³ã¹ã¿ã³ã¹æ©èœã§åå°å
¥ãããå¯èœæ§ããããŸãã |
| `SQLITE_MAX_SIZE_MB=2048` | ãœãŒã¹ã³ãŒãããåç
§ãããŠããŸãããããŒã¿ããŒã¹ãµã€ãºã¯äººçºçã«å¶éãããŸããã |
| `SQLITE_CLEAN_LEGACY_FILES=true` | ãœãŒã¹ã³ãŒãããåç
§ãããŠããŸãããã¬ã¬ã·ãŒãã¡ã€ã«ã®ã¯ãªãŒã³ã¢ããæ©èœã¯åé€ãããå¯èœæ§ããããŸãã |
| `CLI_ROO_BIN` | `src/shared/services/cliRuntime.ts` ã«ç»é²ãããŠããŸããã |
| `CLI_KIMI_CODING_BIN` | `src/shared/services/cliRuntime.ts` ã«ç»é²ãããŠããŸããïŒKimi Coding 㯠CLI ãã€ããªã§ã¯ãªã OAuth ã䜿çšããŸãïŒã |
| `IFLOW_OAUTH_CLIENT_ID` / `IFLOW_OAUTH_CLIENT_SECRET` | ãœãŒã¹ã³ãŒãå
ã®ã©ããããåç
§ãããŠããŸããã |
| `CEREBRAS_API_KEY` / `COHERE_API_KEY` / `FIREWORKS_API_KEY` / `GROQ_API_KEY` / `MISTRAL_API_KEY` / `NEBIUS_API_KEY` / `PERPLEXITY_API_KEY` / `TOGETHER_API_KEY` / `XAI_API_KEY` | v3.8.0 ã§åé€ãããŸãããã©ã³ã¿ã€ã ã¯ãããã®ç°å¢å€æ°ãèªã¿åããªããªããŸãããèªèšŒæ
å ±ã¯ Dashboard / `data/provider-credentials.json` / æå·å DB ããååŸãããŸãã |
| `CURSOR_PROTOBUF_DEBUG` | v3.8.0 ã§åé€ãããŸãããCursor executor 㯠`CURSOR_DEBUG` / `CURSOR_STREAM_DEBUG` ã䜿çšããŸãïŒÂ§22 ãåç
§ïŒã |
| `CLI_COMPAT_KIRO` | v3.8.0 ã§åé€ãããŸãããKiro 㯠`CLI_COMPAT_OMITTED_PROVIDER_IDS` ã«å«ãŸããŠããããããã®åãæ¿ãèšå®ã¯å¹æããããŸããã |
| `QIANFAN_API_KEY` | v3.8.0 ã§ãä»ã®æªäœ¿çšãããã€ã㌠API ããŒã®ã¹ã¿ããšãšãã«åé€ãããŸããã |
### ããã©ã«ãå€ã®ä¿®æ£
| 倿° | æ§ `.env.example` ã®å€ | å®éã®ã³ãŒãäžã®ããã©ã«ãå€ | ä¿®æ£å
容 |
| ------------------------- | ---------------------- | ---------------------------- | -------------------------------------------------------- |
| `APP_LOG_RETENTION_DAYS` | `90` | `7` | â
誀解ãæãå€ãåé€ããããã©ã«ãå€ã `7` ã§ãããšæèš |
| `CALL_LOG_RETENTION_DAYS` | `90` | `7` | â
誀解ãæãå€ãåé€ããããã©ã«ãå€ã `7` ã§ãããšæèš |
### OpenCode èšå®ã®åçæïŒã¢ãããã¯ããŒã«ïŒ
`scripts/ad-hoc/regen-opencode-config.ts` ã§äœ¿çšãããå®è¡äžã®
OmniRoute ã€ã³ã¹ã¿ã³ã¹ããååŸããæ£ç¢ºãª `limit.context` ããã³ `limit.output`
ã®å€ã䜿çšã㊠`opencode.json` ãåçæããŸãããããã¯éåžžã®åäœã«ã¯
å¿
èŠãããŸããããã®ã¹ã¯ãªããã¯éçºè
åãããŒã«ãšããŠã®ã¿äœ¿çšãããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------ | ------------------------ | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_URL` | `http://localhost:20128` | `scripts/ad-hoc/regen-opencode-config.ts` | `/v1/models` ãç
§äŒãã OmniRoute ã€ã³ã¹ã¿ã³ã¹ã®ããŒã¹ URLã |
| `OMNIROUTE_KEY` | _(æªèšå®)_ | `scripts/ad-hoc/regen-opencode-config.ts` | OmniRoute ã® `/v1/models` ãšã³ããã€ã³ãã«å¯ŸããèªèšŒçš API ããŒãæªèšå®ã®å Žå㯠`OPENCODE_API_KEY` ã«ãã©ãŒã«ããã¯ããŸãã |
| `OPENCODE_API_KEY` | _(æªèšå®)_ | `scripts/ad-hoc/regen-opencode-config.ts` | åçæããã `opencode.json` ã«æžã蟌ãŸãã OpenCode 圢åŒã® API ããŒïŒ`sk-...`ïŒãæªèšå®ã®å Žå㯠`OMNIROUTE_KEY` ã«ãã©ãŒã«ããã¯ããŸãã |
### å§çž®ãªãã©ã€ã³è©äŸ¡ããŒãã¹ïŒã¢ãããã¯ããŒã«ïŒ
ãªãã©ã€ã³å§çž®è©äŸ¡ CLI ã§ãã `scripts/compression-eval/index.ts` ã«ãã£ãŠäœ¿çšãããŸãã
éåžžã®éçšã«ã¯äžèŠã§ãéçºè
åãããŒã«ã§ã®ã¿äœ¿çšãããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------- | ---------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_EVAL_CREDENTIALS` | `{}`ïŒç©ºïŒ | `scripts/compression-eval/index.ts` | ãªãã©ã€ã³å§çž®è©äŸ¡ CLI ã§ãã¹ããããããã€ããŒçšã«ãªãã¬ãŒã¿ãŒãæå®ãã JSON èªèšŒæ
å ±ïŒ`JSON.parse` ã§è§£æïŒããã©ã€ã©ã³ã®å Žåã¯æªèšå®ã®ãŸãŸã«ããŠãã ããã |
### VNC ãã©ãŠã¶ãŒã»ãã·ã§ã³
ãã©ãŠã¶ãŒèªååãããã€ããŒåãã® Docker ããŒã¹ã®ãããã¬ã¹ Chromium ã»ãã·ã§ã³ãèšå®ããããã«ã`src/lib/vncSession/manifest.ts` ã«ãã£ãŠäœ¿çšãããŸãããã¹ãŠä»»æã§ããããã©ã«ãå€ã以äžã«ç€ºããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------- | ------------------------------ | ------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `OMNIROUTE_DOCKER_BIN` | `docker` | `src/lib/vncSession/manifest.ts` | VNC ã³ã³ããã®èµ·åã«äœ¿çšãã Docker ãã€ããªãžã®ãã¹ã |
| `OMNIROUTE_VNC_IMAGE` | `omniroute-vnc-chromium:local` | `src/lib/vncSession/manifest.ts` | VNC Chromium ã³ã³ããçšã® Docker ã€ã¡ãŒãžã |
| `OMNIROUTE_VNC_CHROMIUM_ARGS` | _(çµã¿èŸŒã¿ãã©ã°)_ | `src/lib/vncSession/manifest.ts` | ã³ã³ããå
ã®ãã©ãŠã¶ãŒã«æž¡ã远å ã® Chromium CLI åŒæ°ã |
| `OMNIROUTE_VNC_CONTAINER_VNC_PORT` | `3000` | `src/lib/vncSession/manifest.ts` | ã³ã³ããå
ã® VNC ããŒãã |
| `OMNIROUTE_VNC_CONTAINER_CDP_PORT` | `9223` | `src/lib/vncSession/manifest.ts` | ã³ã³ããå
ã® Chrome DevTools Protocol ããŒãã |
| `OMNIROUTE_VNC_CONTAINER_PROFILE_DIR` | `/config` | `src/lib/vncSession/manifest.ts` | ã³ã³ããå
ã®ãããã¡ã€ã«ãã£ã¬ã¯ããªã |
| `OMNIROUTE_VNC_PROFILE_DIR` | _(æªèšå®)_ | `src/lib/vncSession/manifest.ts` | æ°žç¶çãªãã©ãŠã¶ãŒãããã¡ã€ã«çšã®ãã¹ãåŽãã£ã¬ã¯ããªã |
| `OMNIROUTE_VNC_IDLE_MS` | `600000` | `src/lib/vncSession/manifest.ts` | VNC ã»ãã·ã§ã³ãååããããŸã§ã®ã¢ã€ãã«ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `OMNIROUTE_VNC_MAX_MS` | `1800000` | `src/lib/vncSession/manifest.ts` | ã»ãã·ã§ã³ã®æå€§ç¶ç¶æéïŒããªç§ïŒã |
| `OMNIROUTE_VNC_MAX_SESSIONS` | `4` | `src/lib/vncSession/manifest.ts` | åæã«å®è¡ã§ãã VNC ã»ãã·ã§ã³ã®æå€§æ°ã |
| `OMNIROUTE_VNC_READY_MS` | `45000` | `src/lib/vncSession/manifest.ts` | ãã©ãŠã¶ãŒã®æºåå®äºã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `OMNIROUTE_VNC_HARVEST_MS` | `20000` | `src/lib/vncSession/manifest.ts` | ååïŒã¯ãªãŒã³ã¢ããã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã |
| `OMNIROUTE_VNC_NETWORK` | `omniroute-vnc-browser-login` | `src/lib/vncSession/manifest.ts` | ã³ã³ãããåå ããå°çš Docker ãããã¯ãŒã¯ïŒ#12571ïŒãããã©ã«ãããªããžã¯äœ¿çšããŸããã |
| `VIBEPROXY_DATA_DIR` | _(æªèšå®)_ | `open-sse/services/notionThreadSessions.ts` | Notion ã¹ã¬ããã»ãã·ã§ã³ãæ°žç¶åãããã£ã¬ã¯ããªã |
### å
éšãµãŒãã¹èªèšŒ
| 倿° | ããã©ã«ã | 説æ |
| --------------------------------------- | ---------- | ---------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN` | â | 管çãã¬ãŒã³ã®ãµãŒãã¹éèªèšŒã«äœ¿çšããã€ã³ã©ã€ã³åœ¢åŒã®ããŒã¯ã³ã |
| `OMNIROUTE_INTERNAL_SERVICE_TOKEN_FILE` | â | å
éšãµãŒãã¹ããŒã¯ã³ãæ ŒçŽãããã¡ã€ã«ãžã®ãã¹ïŒã³ã³ããã§ã¯æšå¥šãã€ã³ã©ã€ã³å€æ°ããåªå
ãããŸãïŒã |
### OpenRouter ãããã€ããŒçµ±èš
| 倿° | ããã©ã«ã | 説æ |
| ----------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------ |
| `OPENROUTER_PROVIDER_STATS_ENABLED` | `true` | ã«ã¿ãã°æ
å ±ã®æ¡å
ã«äœ¿çšãã OpenRouter ã®ãããã€ããŒå¥çµ±èšã®ååŸãã¹ãããããã«ã¯ã`false` ã«èšå®ããŸãã |
| `OPENROUTER_PROVIDER_STATS_TTL_MS` | `3600000` | ååŸãã OpenRouter ãããã€ããŒçµ±èšã®ãã£ãã·ã¥ TTLïŒããªç§ïŒã |
### çµã¿èŸŒã¿ Redis ãã€ã³ãã£ã³ã°
| 倿° | ããã©ã«ã | 説æ |
| --------------------------- | ----------- | ------------------------------------------------------------------------------ |
| `REDIS_BIND_HOST` | `127.0.0.1` | çµã¿èŸŒã¿ Redis ãµãŒãã¹ã®ãã€ã³ãã¢ãã¬ã¹ã |
| `REDIS_PORT` | `6379` | çµã¿èŸŒã¿ Redis ãµãŒãã¹ã®ããŒãã |
| `OMNIROUTE_REDIS_BIND_HOST` | â | çµã¿èŸŒã¿ Redis ã®ãã€ã³ãã¢ãã¬ã¹ã«å¯Ÿãã OmniRoute ã¹ã³ãŒãã®ãªãŒããŒã©ã€ãã |
---
## 24. ãªãªãŒã¹ v3.8.50 ã§ã®è¿œå äºé
ãããã®èšå®ã¯ãååã®ç°å¢ã³ã³ãã©ã¯ãã®ã¹ãããã·ã§ãã以éã«å°å
¥ãããŸããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_CHAT_ADMISSION_QUEUE_MS` | `2000` | `src/shared/middleware/chatBodyAdmission.ts` | è² è·ã®é«ããã£ããã®åãå
¥ãã¹ããããåŸ
æ©ããæå€§æéã§ãããã®æéãè¶
ãããšãå詊è¡å¯èœãª `503` ãè¿ãããŸããçãäžéä»ãåŸ
æ©ãèšããããšã§ããšãŒãžã§ã³ãããã®ãªã¯ãšã¹ããéäžããå Žåã«å³åº§ã« `503` ãè¿ãã®ã§ã¯ãªããé æ¬¡åŠçããŸãã`0` ã«ãããšå³ææåŠã«æ»ããŸãã |
| `OMNIROUTE_CHAT_ADMISSION_MAX_QUEUED_BYTES` | `4194304`ïŒ4 MBïŒ | `src/shared/middleware/chatBodyAdmission.ts` | åãå
¥ãåŸ
æ©çšã®ãã¥ãŒæžã¿ãã€ãæ°ã®äžéã§ããããã»ã¹å
šäœã§åŸ
æ©ç¶æ
ã«çœ®ãããããããã¡ãªã³ã°æžã¿ãªã¯ãšã¹ãããã£ã®ç·ãã€ãæ°ãå¶éããåŸ
æ©ã«ããããŒã䜿çšéã®å¢å€§ãé²ããŸãïŒ#4380ïŒãäžéãè¶
ããåŸ
æ©ãªã¯ãšã¹ãã«ã¯ãå詊è¡å¯èœãª `503` ãå³åº§ã«è¿ãããŸãã |
| `OMNIROUTE_CHAT_VIRTUAL_TTL_MS` | `60000`ïŒ60 ç§ïŒ | `src/shared/middleware/chatBodyAdmission.ts` | #10110 以éã¯éæšå¥šã§ãããäœãè¡ããŸãããã»ãã·ã§ã³åäœã®åãå
¥ãã¬ãŒã³ã¯å»æ¢ãããããã»ã¹å
šäœã§å
±æãããåäžã®ããžã§ããã«çœ®ãæããããŸãããèšå®äºææ§ã®ããåãä»ããããŸãããç¡èŠãããŸãã |
| `OMNIROUTE_CHAT_VIRTUAL_MAX_SESSIONS` | `64` | `src/shared/middleware/chatBodyAdmission.ts` | #10110 以éã¯éæšå¥šã§ãããäœãè¡ããŸãããã»ãã·ã§ã³åäœã®åãå
¥ãã¬ãŒã³ã¯å»æ¢ãããããã»ã¹å
šäœã§å
±æãããåäžã®ããžã§ããã«çœ®ãæããããŸãããèšå®äºææ§ã®ããåãä»ããããŸãããç¡èŠãããŸãã |
| `OMNIROUTE_CHAT_VIRTUAL_LANES` | `0`ïŒãªãïŒ | `open-sse/services/admission/runtime.ts` | é©å¿åã©ã³ã¿ã€ã ä»®æ³åãå
¥ãã¬ãŒã³ïŒ#9654ïŒïŒããã³ãåäœã®é©å¿åã²ãŒãïŒã·ã¹ãã 2ïŒã®ãã¹ã¿ãŒã¹ã€ããã§ããäžèšã®éæšå¥šãšãªã£ãæ¥ç¶åäœã®ã¬ãŒã³å€æ°ïŒTTL_MS / MAX_SESSIONSã#10110 以éã¯äœãè¡ããªãïŒãšã¯ç°ãªããŸããååã®ããã·ã¥ããŒãæ©èœãã©ã°ãååšããŸãããç°å¢å€æ°ãããã·ã¥ããŒãã®ãªãŒããŒã©ã€ãããåªå
ãããŸãã倿Žã«ã¯åèµ·åãå¿
èŠã§ãã |
| `OMNIROUTE_RUNNOW_TIMEOUT_MS` | `30000` | `src/app/api/jobs/[id]/run-now/route.ts` | å®è¡äžã®ãžã§ããããå Žåãrun-now åŒã³åºãããã¥ãŒã«å
¥ããããå®è¡ãéå§ãããŸã§åŸ
æ©ããæéãå¶éããŸãã |
| `ADOBE_FIREFLY_BROWSER_REFRESH` | æå¹ | `open-sse/services/adobeFireflySession.ts` | ã¢ã«ãŠã³ãåäœã® Chrome CDP ã»ãã·ã§ã³ãéããŠãIMS ãšãã©ãŠã¶ãŒã®ãªã¹ã¯ç¶æ
ãææ°ã«ä¿ã¡ãŸããç¡å¹ã«ããã«ã¯ `0` ãèšå®ããŸãã |
| `ADOBE_FIREFLY_SESSION_DISK` | æå¹ | `open-sse/services/adobeFireflySession.ts` | 修埩ããã Adobe ã»ãã·ã§ã³ã `DATA_DIR` é
äžã«æ°žç¶åããŸããã¡ã¢ãªã®ã¿ã®ç¶æ
ã«ããã«ã¯ `0` ãèšå®ããŸãã |
| `ADOBE_FIREFLY_MIN_SUBMIT_GAP_MS` | `12000` | `open-sse/services/adobeFireflySession.ts` | Adobe Firefly ã®çæãªã¯ãšã¹ãéä¿¡éã®æå°ééã§ãã |
| `ADOBE_FIREFLY_BATCH_EXTRA_GAP_MS` | `15000` | `open-sse/services/adobeFireflySession.ts` | Adobe ãžã®éä¿¡ã 3 åæåãããã³ã«è¿œå ãããäŒæ¢æéã§ãã |
| `ADOBE_FIREFLY_CHROME_HEADLESS` | `0` | `open-sse/services/adobeFireflyBrowserLogin.ts` | ãããã°å°çšã®å®å
šãããã¬ã¹ã¢ãŒãã§ããéåžžãAdobe colligo ã¯ãã®ã¢ãŒãã§çæããããªã¹ã¯ã»ãã·ã§ã³ãæåŠããŸãã |
| `CHROME_PATH` | èªåæ€åº | `open-sse/executors/cloudflare-playground.ts`ã`open-sse/executors/chatgpt-web-codex.ts` | ãã©ãããã©ãŒã ã®èªåæ€åºã§ã¯äžååãªå Žåã«ããã©ãŠã¶ãŒé§åå executor ã䜿çšãã Chrome å®è¡ãã¡ã€ã«ã®çµ¶å¯Ÿãã¹ãä»»æã§æå®ããŸãã |
| `TELEGRAM_BOT_TOKEN` | _ïŒæªèšå®ïŒ_ | `src/lib/telegram/config.ts` | åä¿¡ Webhook ãæå¹åããMini App ã® `initData` ã«çœ²åãã BotFather ããŒã¯ã³ã§ãã |
| `TELEGRAM_WEBHOOK_SECRET` | _ïŒæªèšå®ïŒ_ | `src/lib/telegram/config.ts` | `setWebhook` ãä»ããŠç»é²ãããWebhook ãé
ä¿¡ããããã³ã« `X-Telegram-Bot-Api-Secret-Token` ããããŒãšç
§åãããå
±æã·ãŒã¯ã¬ããã§ããWebhook ãã¹ã«ã¯å¿
é ã§ããæªèšå®ã®å ŽåãWebhook ã®é
信㯠503 ã§æåŠãããŸãã |
| `TELEGRAM_DEFAULT_MODEL` | `auto/chat` | `src/lib/telegram/chatProxy.ts` | Telegram ã®ãã£ããè¿ä¿¡ã«äœ¿çšãããã¢ãã«ã§ãã |
| `TELEGRAM_BOT_API_BASE` | `https://api.telegram.org` | `src/lib/telegram/config.ts` | ãããã·ãŸãã¯ã»ã«ããã¹ãå Bot API ãµãŒããŒåãã® Bot API ããŒã¹ URL ã®ãªãŒããŒã©ã€ãã§ãã |
| `TELEGRAM_WEBHOOK_TIMEOUT_MS` | `60000` | `src/lib/telegram/config.ts` | éä¿¡ Bot API åŒã³åºãã®ã¿ã€ã ã¢ãŠãïŒããªç§ïŒã§ãã |
| `OMNIROUTE_OPTIONAL_PACK_TAR` | `1`ïŒæå¹ïŒ | `scripts/build/optionalPackStaging.mjs` | Electron ã¹ã¿ã³ãã¢ãã³ããªãŒçšã®ãªãã·ã§ã³ MLïŒãã©ãŠã¶ãŒããã¯ãã¹ããŒãžã³ã°ããéã«ã`.tar.gz` tarball ã®åºåãçç¥ããã«ã¯ `0` ãèšå®ããŸãïŒããã¯ãã£ã¬ã¯ããªãš `optional-packs.index.json` ã¯åŒãç¶ãçæãããŸãïŒããã¹ã¯ããããªãªãŒã¹ã®ã¯ãŒã¯ãããŒã§ãã¢ãŒãã£ãã¡ã¯ãã®ã¢ããããŒããµã€ãºãåæžããããã«äœ¿çšãããŸãã |
| `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | xAI ãµãã¹ã¯ãªãã·ã§ã³ç»åã«ãŒãã®ç»é²ãæå¹ã«ããŸããAPI ããŒã䜿çšããç»åãã¹ã倿Žããªããããããã©ã«ãã§ã¯ç¡å¹ã§ãã |
| `OMNIROUTE_API_KEY_COOLDOWN_MS` | `60000` | `open-sse/services/apiKeyRotator.ts` | `429` ã¬ã¹ãã³ã¹ã«äœ¿çšå¯èœãª `Retry-After` ãã³ãããªãå Žåã®ãããŒåäœã®ã¯ãŒã«ããŠã³æéïŒããªç§ïŒã§ãã |
| `OMNIROUTE_ESTIMATOR_CALIBRATION` | æå¹ | `open-sse/services/estimatorCalibration.ts` | ã¡ã¢ãªå
ã§ã®æšå®åšãã£ãªãã¬ãŒã·ã§ã³ã®èšé²ãšé©çšãç¡å¹ã«ããã«ã¯ã`off`ã`0`ããŸã㯠`false` ãèšå®ããŸãã |
| `NEXT_MANUAL_SIG_HANDLE` | _ïŒå
éšçšïŒ_ | `scripts/dev/standalone-server-ws.mjs` | ã¹ã¿ã³ãã¢ãã³ãµãŒããŒã®ã·ã°ãã«ãã³ãã©ãŒããªãŒããŒã©ã€ãããå
éšèšå®ã§ããéåžžã¯ãªãã¬ãŒã¿ãŒãèšå®ããã®ã§ã¯ãªããã©ã³ãã£ãŒã«ãã£ãŠèšå®ããã³è§£é€ãããŸãã |
### ChatGPT WebïŒCodexïŒ
ãããã¬ã¹ãã©ãŠã¶ãŒããã³éä¿¡ Tool Tunnel ã®ã°ããŒãã«ããã©ã«ãã§ããããã·ã¥ããŒãã§èšå®ããã Connection ã®å€ãåªå
ãããŸãã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| --------------------------------------- | ------------------------------ | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CHATGPT_WEB_CODEX_CHROME_PATH` | _(èªåæ€åº)_ | `open-sse/executors/chatgpt-web-codex.ts` | npmãsystemdãããã³PM2ã§ã®å®è¡çšã«æç€ºçã«æå®ããChrome/Chromiumã®ãã¹ã |
| `CHROME_PATH` | _(èªåæ€åº)_ | `open-sse/executors/chatgpt-web-codex.ts` | æç€ºçãªChrome/Chromiumãã¹ã®å
±éãã©ãŒã«ããã¯ã |
| `CHATGPT_WEB_CODEX_CDP_URL` | _(æªèšå®)_ | `open-sse/executors/chatgpt-web-codex.ts` | å
éšCDPãšã³ããã€ã³ããDockerã§ã¯ããŒã`9223`äžã®ãµã€ãã«ãŒã䜿çšããŸãã |
| `CDP_PROXY_TOKEN` | _(æªèšå®)_ | `docker/chatgpt-web-codex-browser/cdp-proxy.mjs` | èšå®ãããŠããå ŽåãCDPãããã·ã»ãµã€ãã«ãŒãžã®ãã¹ãŠã®ãªã¯ãšã¹ãã§ããã®å€ãããããŒ`X-Omni-Cdp-Token`ã«å«ããå¿
èŠããããŸãïŒ#13679ïŒãå€ããªãå Žåããããã·ã¯èªèšŒãªãã§è»¢éããŸãããã®å Žåãä¿è·ã¯Composeãããã¯ãŒã¯`chatgpt-web-codex-net`ã®ãããã¯ãŒã¯åé¢ã®ã¿ã«äŸåããŸãã`openssl rand -hex 32`ã§çæã§ããŸãã |
| `CHATGPT_WEB_CODEX_TUNNEL_ID` | _(æªèšå®)_ | `open-sse/executors/chatgpt-web-codex.ts` | ããŒã«ã«ã®CodexããŒã«ã©ãŠã³ãçšã®ã°ããŒãã«OpenAIãã³ãã«IDã |
| `CHATGPT_WEB_CODEX_RUNTIME_KEY` | _(æªèšå®)_ | `open-sse/executors/chatgpt-web-codex.ts` | ã°ããŒãã«ãã³ãã«ã®ã©ã³ã¿ã€ã ããŒããã°ã«ã¯çµ¶å¯Ÿã«åºåããªãã§ãã ããã |
| `CHATGPT_WEB_CODEX_CONNECTOR_NAME` | `OmniRoute Codex v2` | `open-sse/executors/chatgpt-web-codex.ts` | MCPããªããžçšã«æ°ããäœæãããChatGPTã«ã¹ã¿ã ã³ãã¯ã¿ãŒã®æ£ç¢ºãªååã |
| `CODEX_CHATGPT_WEB_HOME` | `/chatgpt-web-codex` | `open-sse/vendor/codex-chatgpt-web/config.ts` | ãã©ãŠã¶ãŒããããŒã«ãŒãããã³ãã³ãã«ã®ç¶æ
ãä¿åããå°çšãã£ã¬ã¯ããªã |
| `CODEX_CHATGPT_WEB_BROWSER_DIAGNOSTICS` | `0` | `open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts` | `1`ã®å Žåãåãã§ãã¯ãã€ã³ãã§ãã©ãŠã¶ãŒèšºæç»åãååŸããŸãã |
| `CODEX_CHATGPT_WEB_LAUNCHER` | _(æªèšå®)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | æ°žç¶çãªã©ã³ãã£ãŒãã€ããªãžã®ãªãã·ã§ã³ã®çµ¶å¯Ÿãã¹ã |
| `CODEX_CHATGPT_WEB_BUN` | _(èªåæ€åº)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | Bunã©ã³ã¿ã€ã ãã€ããªãžã®ãªãã·ã§ã³ã®çµ¶å¯Ÿãã¹ã |
| `CODEX_WEB_GPT_BUN` | _(æªèšå®)_ | `open-sse/vendor/codex-chatgpt-web/config.ts` | `CODEX_CHATGPT_WEB_BUN`çšã®ã¬ã¬ã·ãŒãã©ãŒã«ããã¯ãæ°ããã»ããã¢ããã§ã¯æ£åŒãªååã䜿çšããŸãã |
---
## OmniConductor ããªããž
OmniConductor ããã®ã¿ã¹ã¯ãããŒã«ã«ã® A2A TaskManagerïŒ`src/lib/conductor/`ïŒã«ãã©ãŒãªã³ã°ãããé·æé皌ååã® SSE ã³ã³ã·ã¥ãŒããŒã§ãããªããã€ã³æ¹åŒã§ãããããªããžã¯ `CONDUCTOR_HUB_URL` ãèšå®ãããŠããå Žåã«ã®ã¿èµ·åããŸãããµãŒããŒåŽéå®ã§ããããããŒã¯ã³ããã©ãŠã¶ã«æž¡ããŠã¯ãªããŸããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ------------------------------ | ----------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `CONDUCTOR_HUB_URL` | _ïŒç©ºïŒ_ | `src/lib/conductor/boot.ts` | OmniConductor ããã®ããŒã¹ URLïŒäŸïŒ`http://127.0.0.1:7910`ïŒãæªèšå®ã®å Žåãããªããžã¯ç¡å¹ã«ãªããŸãã |
| `CONDUCTOR_HUB_TOKEN` | _ïŒç©ºïŒ_ | `src/lib/conductor/boot.ts` | SSE ãã£ãŒãçšã®ããèªèšŒæ
å ±ãããäžã§ `spokesperson` çš®å¥ã®ãã¢ãçºè¡ããŸãïŒ`POST /v1/peers`ã管çè
æš©éïŒã |
| `CONDUCTOR_ORCHESTRATOR_TOKEN` | _ïŒç©ºïŒ_ | `src/lib/conductor/hubProxy.ts` | åä¿¡ãã A2Aâããã®ã¿ã¹ã¯å§ä»»ïŒ`POST /v1/tasks`ïŒçšã®èªèšŒæ
å ±ãæªèšå®ã®å Žå㯠`CONDUCTOR_HUB_TOKEN` ã«ãã©ãŒã«ããã¯ããŸãã |
| `CONDUCTOR_SPOKESPERSON_URL` | `http://127.0.0.1:7920` | `src/lib/conductor/faroProxy.ts` | ããã·ã¥ããŒãã®ãã£ãããããã·ïŒ`/api/conductor/ask`ïŒã®èåŸã«ãã spokespersonïŒFaroïŒãµãŒãã¹ã®ããŒã¹ URLã |
### ã¯ã©ãŒã¿å¯Ÿå¿ã¹ã±ãžã¥ãŒãªã³ã°
`open-sse/services/combo.ts` ããã³ `src/lib/quota/quotaScheduler.ts` ãããªã¯ãšã¹ãåã®ããŒã¯ã³äºç®ãã§ãã¯ã«äœ¿çšããŸãããªããã€ã³æ¹åŒã§ãããæªèšå®ã®å Žåãããã©ã«ãã®ã«ãŒãã£ã³ã°åäœã¯å€æŽãããŸããã
| 倿° | ããã©ã«ã | ãœãŒã¹ãã¡ã€ã« | 説æ |
| ---------------------------------- | ---------- | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `OMNIROUTE_QUOTA_AWARE_ROUTING` | `0` | `open-sse/services/combo.ts` | `1` ã®å ŽåããŠã£ã³ããŠããšã®ããŒã¯ã³äºç®ïŒ`rateLimitOverrides.tpm`ãããŒãã« `provider_quota_state`ïŒã§ã¯ãã£ã¹ãããåã«æšå®ãªã¯ãšã¹ãã³ã¹ããè³ããªãæ¥ç¶ãã¹ãããããŸããäºç®ãèšå®ãããŠããªãå Žåã¯ãã§ã€ã«ãªãŒãã³ã«ãªããŸãã |
| `OMNIROUTE_ESTIMATOR_CALIBRATION` | _ïŒãªã³ïŒ_ | `open-sse/services/estimatorCalibration.ts` | ã³ã³ããã¹ãã¬ãŒãã®ããŒã¯ã³æšå®åšïŒ#14931ïŒã®ãã£ãŒãããã¯èŒæ£ã§ããïŒproviderãmodelãtools ã®æç¡ïŒããšã« `usage.prompt_tokens` / æšå®å€ã® EMA ãç®åºãã0.15ïœ2.0 ã®ç¯å²ã«å¶éããŸããã¡ã¢ãªå
ã§ã®ã¿ä¿æãããŸãã`off`ã`0`ããŸã㯠`false` ãæå®ãããšãèšé²ãšé©çšãç¡å¹ã«ãªããŸãã |
| `GROK_SUBSCRIPTION_IMAGES_ENABLED` | `false` | `open-sse/config/imageRegistry.ts` | `xai-oauth`ïŒ`xao`ïŒããã³ `grok-cli` ã®ç»åã«ãŒããç»é²ããŸããååã®ããã·ã¥ããŒãæ©èœãã©ã°ã§ããDB ã®ãªãŒããŒã©ã€ãããã®å€ããåªå
ãããŸãã |