cf6056cede
* feat(db): allow disabling sqlite auto backups * chore(db): rename sqlite auto backup env flag
227 lines
9.4 KiB
Bash
227 lines
9.4 KiB
Bash
# OmniRoute environment contract
|
|
# This file reflects actual runtime usage in the current codebase.
|
|
|
|
# ═══════════════════════════════════════════════════
|
|
# REQUIRED SECRETS — Generate strong values!
|
|
# ═══════════════════════════════════════════════════
|
|
# Generate with: openssl rand -base64 48
|
|
JWT_SECRET=
|
|
# Generate with: openssl rand -hex 32
|
|
API_KEY_SECRET=
|
|
|
|
# Initial admin password — CHANGE THIS before first use!
|
|
INITIAL_PASSWORD=CHANGEME
|
|
DATA_DIR=/var/lib/omniroute
|
|
|
|
# Storage (SQLite)
|
|
STORAGE_DRIVER=sqlite
|
|
# Generate with: openssl rand -hex 32
|
|
STORAGE_ENCRYPTION_KEY=
|
|
STORAGE_ENCRYPTION_KEY_VERSION=v1
|
|
LOG_RETENTION_DAYS=90
|
|
SQLITE_MAX_SIZE_MB=2048
|
|
SQLITE_CLEAN_LEGACY_FILES=true
|
|
DISABLE_SQLITE_AUTO_BACKUP=false
|
|
|
|
# Recommended runtime variables
|
|
# Canonical/base port (keeps backward compatibility)
|
|
PORT=20128
|
|
# Optional split ports:
|
|
# API_PORT=20129
|
|
# API_HOST=0.0.0.0
|
|
# DASHBOARD_PORT=20128
|
|
# Optional Docker production host publish ports:
|
|
# PROD_DASHBOARD_PORT=20130
|
|
# PROD_API_PORT=20131
|
|
NODE_ENV=production
|
|
INSTANCE_NAME=omniroute
|
|
|
|
# Recommended security and ops variables
|
|
MACHINE_ID_SALT=endpoint-proxy-salt
|
|
ENABLE_REQUEST_LOGS=false
|
|
AUTH_COOKIE_SECURE=false
|
|
REQUIRE_API_KEY=false
|
|
ALLOW_API_KEY_REVEAL=false
|
|
|
|
# Input Sanitizer (FASE-01 — prompt injection & PII protection)
|
|
# INPUT_SANITIZER_ENABLED=true
|
|
# INPUT_SANITIZER_MODE=warn # warn | block | redact
|
|
# PII_REDACTION_ENABLED=false
|
|
|
|
# Cloud sync variables
|
|
# Must point to this running instance so internal sync jobs can call /api/sync/cloud.
|
|
# Server-side preferred variables:
|
|
BASE_URL=http://localhost:20128
|
|
CLOUD_URL=
|
|
# Backward-compatible/public variables:
|
|
# NEXT_PUBLIC_BASE_URL is also used as the OAuth redirect_uri origin when running behind a
|
|
# reverse proxy (e.g., nginx). Set this to your public-facing URL so OAuth callbacks work.
|
|
# Example: NEXT_PUBLIC_BASE_URL=https://omniroute.example.com
|
|
NEXT_PUBLIC_BASE_URL=http://localhost:20128
|
|
NEXT_PUBLIC_CLOUD_URL=
|
|
|
|
# Optional outbound proxy variables for upstream provider calls
|
|
# Lowercase variants are also supported: http_proxy, https_proxy, all_proxy, no_proxy
|
|
# SOCKS5 proxy support
|
|
ENABLE_SOCKS5_PROXY=true
|
|
NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=true
|
|
# HTTP_PROXY=http://127.0.0.1:7890
|
|
# HTTPS_PROXY=http://127.0.0.1:7890
|
|
# ALL_PROXY=socks5://127.0.0.1:7890
|
|
# NO_PROXY=localhost,127.0.0.1
|
|
|
|
# TLS fingerprint spoofing (opt-in) — mimics Chrome 124 TLS handshake via wreq-js
|
|
# Reduces risk of JA3/JA4 fingerprint-based blocking by providers (e.g., Google)
|
|
# Requires wreq-js to be installed (included in dependencies)
|
|
# ENABLE_TLS_FINGERPRINT=true
|
|
|
|
# Optional CLI runtime overrides (Docker/host integration)
|
|
# CLI_MODE=auto
|
|
# CLI_EXTRA_PATHS=/host-cli/bin
|
|
# CLI_CONFIG_HOME=/root
|
|
# CLI_ALLOW_CONFIG_WRITES=true
|
|
# CLI_CLAUDE_BIN=claude
|
|
# CLI_CODEX_BIN=codex
|
|
# CLI_DROID_BIN=droid
|
|
# CLI_OPENCLAW_BIN=openclaw
|
|
# CLI_CURSOR_BIN=agent
|
|
# CLI_CLINE_BIN=cline
|
|
# CLI_ROO_BIN=roo
|
|
# CLI_CONTINUE_BIN=cn
|
|
|
|
# Provider OAuth Credentials (optional — override hardcoded defaults)
|
|
# These can also be set via data/provider-credentials.json
|
|
# CLAUDE_OAUTH_CLIENT_ID=
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# ⚠️ GOOGLE OAUTH (Antigravity, Gemini CLI) — IMPORTANT FOR REMOTE SERVERS
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# The built-in Google OAuth credentials ONLY work when OmniRoute runs on
|
|
# localhost (127.0.0.1 / local network). They are registered with
|
|
# redirect_uri = http://localhost:PORT/callback and Google will reject any
|
|
# other redirect URI with: redirect_uri_mismatch.
|
|
#
|
|
# If you are hosting OmniRoute on a remote server (VPS, Docker, cloud), you
|
|
# MUST register your own Google Cloud OAuth 2.0 credentials:
|
|
#
|
|
# 1. Go to https://console.cloud.google.com/apis/credentials
|
|
# 2. Create an OAuth 2.0 Client ID (type: "Web application")
|
|
# 3. Add your server URL as Authorized redirect URI:
|
|
# https://your-server.com/callback
|
|
# 4. Copy the Client ID and Client Secret below.
|
|
#
|
|
# See the full tutorial in README.md → "OAuth em Servidor Remoto" section.
|
|
#
|
|
# Antigravity (Google Gemini Code Assist):
|
|
# ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
|
|
# ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
|
|
ANTIGRAVITY_OAUTH_CLIENT_SECRET=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
|
|
|
|
# Gemini CLI (Google AI):
|
|
# GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
|
|
# GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
|
|
# GEMINI_CLI_OAUTH_CLIENT_ID=
|
|
GEMINI_OAUTH_CLIENT_SECRET=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
|
|
GEMINI_CLI_OAUTH_CLIENT_SECRET=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
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
# CLAUDE_OAUTH_CLIENT_ID=
|
|
# CODEX_OAUTH_CLIENT_ID=
|
|
# CODEX_OAUTH_CLIENT_SECRET=
|
|
# QWEN_OAUTH_CLIENT_ID=
|
|
# QODER_OAUTH_CLIENT_ID=
|
|
QODER_OAUTH_CLIENT_SECRET=4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Provider User-Agent Overrides (optional — customize per-provider UA headers)
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Format: {PROVIDER_ID}_USER_AGENT=custom-value
|
|
# When set, overrides the default User-Agent header sent to that provider.
|
|
# Useful when providers update versions or block old user-agents.
|
|
CLAUDE_USER_AGENT=claude-cli/1.0.83 (external, cli)
|
|
CODEX_USER_AGENT=codex-cli/0.92.0 (Windows 10.0.26100; x64)
|
|
GITHUB_USER_AGENT=GitHubCopilotChat/0.26.7
|
|
ANTIGRAVITY_USER_AGENT=antigravity/1.104.0 darwin/arm64
|
|
KIRO_USER_AGENT=AWS-SDK-JS/3.0.0 kiro-ide/1.0.0
|
|
QODER_USER_AGENT=Qoder-Cli
|
|
QWEN_USER_AGENT=QwenCode/0.12.3 (linux; x64)
|
|
CURSOR_USER_AGENT=connect-es/1.6.1
|
|
GEMINI_CLI_USER_AGENT=google-api-nodejs-client/9.15.1
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# CLI Fingerprint Compatibility (optional — match native CLI binary signatures)
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# When enabled, OmniRoute reorders HTTP headers and JSON body fields to match
|
|
# the exact signature of official CLI tools, reducing account flagging risk.
|
|
# Your proxy IP is preserved — you get both stealth AND IP masking.
|
|
#
|
|
# Enable per-provider:
|
|
# CLI_COMPAT_CODEX=1
|
|
# CLI_COMPAT_CLAUDE=1
|
|
# CLI_COMPAT_GITHUB=1
|
|
# CLI_COMPAT_ANTIGRAVITY=1
|
|
# CLI_COMPAT_KIRO=1
|
|
# CLI_COMPAT_CURSOR=1
|
|
# CLI_COMPAT_KIMI_CODING=1
|
|
# CLI_COMPAT_KILOCODE=1
|
|
# CLI_COMPAT_CLINE=1
|
|
# CLI_COMPAT_QWEN=1
|
|
#
|
|
# Or enable for all providers at once:
|
|
# CLI_COMPAT_ALL=1
|
|
|
|
# API Key Providers (Phase 1 + Phase 4)
|
|
# Add via Dashboard → Providers → Add API Key, or set here
|
|
# DEEPSEEK_API_KEY=
|
|
# GROQ_API_KEY=
|
|
# XAI_API_KEY=
|
|
# MISTRAL_API_KEY=
|
|
# PERPLEXITY_API_KEY=
|
|
# TOGETHER_API_KEY=
|
|
# FIREWORKS_API_KEY=
|
|
# CEREBRAS_API_KEY=
|
|
# COHERE_API_KEY=
|
|
# NVIDIA_API_KEY=
|
|
|
|
# Embedding Providers (optional — used by /v1/embeddings)
|
|
# NEBIUS_API_KEY=
|
|
# Provider keys above (openai, mistral, together, fireworks, nvidia) also work for embeddings
|
|
|
|
# Timeout settings
|
|
# FETCH_TIMEOUT_MS=120000
|
|
# STREAM_IDLE_TIMEOUT_MS=60000
|
|
# API bridge timeout for /v1 proxy requests (default: 30000)
|
|
# API_BRIDGE_PROXY_TIMEOUT_MS=120000
|
|
|
|
# CORS configuration (default: * allows all origins)
|
|
# CORS_ORIGINS=*
|
|
|
|
# Logging
|
|
# LOG_LEVEL=info
|
|
# LOG_FORMAT=text
|
|
LOG_TO_FILE=true
|
|
# LOG_FILE_PATH=logs/application/app.log
|
|
# LOG_MAX_FILE_SIZE=50M
|
|
# LOG_RETENTION_DAYS=7
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Memory Optimization (Low-RAM configurations)
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Node.js heap limit in MB (default: 256 for Docker, system default for npm)
|
|
# OMNIROUTE_MEMORY_MB=256
|
|
|
|
# Prompt cache settings
|
|
# PROMPT_CACHE_MAX_SIZE=50
|
|
# PROMPT_CACHE_MAX_BYTES=2097152
|
|
# PROMPT_CACHE_TTL_MS=300000
|
|
|
|
# Semantic cache settings (temperature=0 responses)
|
|
# SEMANTIC_CACHE_MAX_SIZE=100
|
|
# SEMANTIC_CACHE_MAX_BYTES=4194304
|
|
# SEMANTIC_CACHE_TTL_MS=1800000
|
|
|
|
# In-memory log buffers
|
|
# PROXY_LOG_MAX_ENTRIES=200
|
|
# CALL_LOGS_MAX=200
|
|
# STREAM_HISTORY_MAX=50
|