- Add openai-bridge service (port 3251) for ChatGPT and Codex integration - Update external-providers.ts with openai and chatgpt provider definitions - Add GPT-4 Turbo, GPT-4, and GPT-3.5 Turbo models to provider registry - Modify getApiKey() to handle bridge provider authentication - Modify getBaseUrl() to construct URLs from env vars - Update ecosystem.config.cjs with OPENAI_BRIDGE_URL and OPENAI_API_KEY config - Add openai-bridge PM2 service configuration (port 3251) - Support both claude-bridge (port 3250) and openai-bridge (port 3251) as subscription services - Extend fallback chain: claude → openai/chatgpt → cerebras → groq → mistral → nvidia → cloudflare Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
96 lines
3.1 KiB
JavaScript
96 lines
3.1 KiB
JavaScript
/**
|
|
* PM2 Ecosystem Config — LLM Gateway on Erik (217.154.82.179)
|
|
*
|
|
* Deploy: pm2 start deploy/ecosystem.config.cjs
|
|
* Reload: pm2 reload llm-gateway llm-learning
|
|
* Logs: pm2 logs llm-gateway
|
|
* Status: pm2 status
|
|
*/
|
|
module.exports = {
|
|
apps: [
|
|
{
|
|
name: 'llm-gateway',
|
|
script: 'packages/gateway/dist/server.js',
|
|
cwd: '/opt/llm-gateway',
|
|
instances: 1,
|
|
exec_mode: 'fork',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
PORT: 3103,
|
|
DATABASE_URL: 'postgresql://llm:llm_secure_2026@localhost:5432/llm_gateway',
|
|
TIP_DATABASE_URL: 'postgresql://tip:tip_prod_2026@localhost:5432/transceiver_db',
|
|
OLLAMA_URL: 'http://192.168.178.213:11434',
|
|
LOG_LEVEL: 'info',
|
|
GITEA_URL: 'http://192.168.178.196:3000',
|
|
GITEA_TOKEN: '',
|
|
// LLM Provider Configuration
|
|
CLAUDE_BRIDGE_URL: 'http://localhost:3250',
|
|
CLAUDE_BRIDGE_ENABLED: 'true',
|
|
OPENAI_BRIDGE_URL: 'http://localhost:3251',
|
|
CHATGPT_BRIDGE_URL: 'http://localhost:3251',
|
|
LLM_PROVIDERS: 'claude,openai,chatgpt,cerebras,groq,mistral,nvidia',
|
|
// Subscription API Keys (add as needed)
|
|
OPENAI_API_KEY: '',
|
|
// Free LLM APIs (add keys as needed)
|
|
CEREBRAS_API_KEY: '',
|
|
GROQ_API_KEY: '',
|
|
MISTRAL_API_KEY: '',
|
|
NVIDIA_API_KEY: '',
|
|
OPENROUTER_API_KEY: '',
|
|
},
|
|
// Restart on crash, but not on intentional stop
|
|
autorestart: true,
|
|
watch: false,
|
|
max_memory_restart: '512M',
|
|
// Graceful shutdown: wait up to 10s for in-flight requests
|
|
kill_timeout: 10000,
|
|
// Log rotation
|
|
error_file: '/var/log/llm-gateway/error.log',
|
|
out_file: '/var/log/llm-gateway/out.log',
|
|
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
|
|
merge_logs: true,
|
|
},
|
|
{
|
|
name: 'openai-bridge',
|
|
script: '/opt/openai-bridge/server.js',
|
|
cwd: '/opt/openai-bridge',
|
|
instances: 1,
|
|
exec_mode: 'fork',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
OPENAI_BRIDGE_PORT: 3251,
|
|
OPENAI_API_KEY: '',
|
|
OPENAI_MODEL: 'gpt-4-turbo',
|
|
},
|
|
autorestart: true,
|
|
watch: false,
|
|
max_memory_restart: '256M',
|
|
kill_timeout: 5000,
|
|
error_file: '/var/log/llm-gateway/openai-bridge-error.log',
|
|
out_file: '/var/log/llm-gateway/openai-bridge-out.log',
|
|
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
|
|
},
|
|
{
|
|
name: 'llm-learning',
|
|
script: 'packages/learning/src/index.ts',
|
|
interpreter: 'node',
|
|
interpreter_args: '--import tsx/esm',
|
|
cwd: '/opt/llm-gateway',
|
|
instances: 1,
|
|
exec_mode: 'fork',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
DATABASE_URL: 'postgresql://llm:llm_secure_2026@localhost:5432/llm_gateway',
|
|
GATEWAY_URL: 'http://localhost:3103',
|
|
},
|
|
autorestart: true,
|
|
watch: false,
|
|
max_memory_restart: '256M',
|
|
kill_timeout: 5000,
|
|
error_file: '/var/log/llm-gateway/learning-error.log',
|
|
out_file: '/var/log/llm-gateway/learning-out.log',
|
|
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
|
|
},
|
|
],
|
|
}
|