118 lines
3.9 KiB
JavaScript
118 lines
3.9 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: process.env.DATABASE_URL || 'postgresql://llm:llm_secure_2026@82.165.222.127:5432/llm_gateway',
|
|
TIP_DATABASE_URL: process.env.TIP_DATABASE_URL || 'postgresql://tip:tip_prod_2026@217.154.82.179:5433/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',
|
|
CLAUDE_CODE_URL: 'http://localhost:3250',
|
|
OPENAI_BRIDGE_URL: 'http://localhost:3251',
|
|
CHATGPT_BRIDGE_URL: 'http://localhost:3251',
|
|
COPILOT_BRIDGE_URL: 'http://localhost:3252',
|
|
LLM_PROVIDERS: 'claude,openai,chatgpt,copilot,cerebras,groq,mistral,nvidia',
|
|
// Subscription API Keys (add as needed)
|
|
OPENAI_API_KEY: '',
|
|
GITHUB_CODEX_TOKEN: '',
|
|
// 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: 'copilot-bridge',
|
|
script: '/opt/copilot-bridge/server.js',
|
|
cwd: '/opt/copilot-bridge',
|
|
instances: 1,
|
|
exec_mode: 'fork',
|
|
env: {
|
|
NODE_ENV: 'production',
|
|
COPILOT_BRIDGE_PORT: 3252,
|
|
COPILOT_API_INTERNAL_PORT: 4141,
|
|
},
|
|
autorestart: true,
|
|
watch: false,
|
|
max_memory_restart: '256M',
|
|
kill_timeout: 5000,
|
|
error_file: '/var/log/llm-gateway/copilot-bridge-error.log',
|
|
out_file: '/var/log/llm-gateway/copilot-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: process.env.DATABASE_URL || 'postgresql://llm:llm_secure_2026@82.165.222.127: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',
|
|
},
|
|
],
|
|
}
|