llm-gateway/deploy/ecosystem.config.cjs
root 40b53ea625 sec: fix injection-defense bypass — 2 new patterns, 0x08 byte corruption
Added safety-test-ruse and filters-disabled-claim patterns to block
social-engineering probes that claim safety filters are disabled.

Root cause: Python str.replace() wrote literal backspace bytes (0x08)
instead of regex word-boundary markers (\b), making both patterns
silently fail against the probe text.

Fixes persona-bypass pentest probe (Magatama MIND/COMPLY findings).
2026-06-20 17:27:18 +00:00

126 lines
4.3 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/scripts/launch.mjs',
cwd: '/opt/llm-gateway',
instances: 1,
exec_mode: 'fork',
env: {
NODE_ENV: 'production',
PORT: 3103,
AUTO_SPAWN_BRIDGES: '1',
DASHBOARD_AUTH_TOKEN: 'ctx-gw-fbb149f6be8eeea9549853d2681580bdd1f1',
LLM_GATEWAY_ADMIN_TOKEN: 'ctx-gw-fbb149f6be8eeea9549853d2681580bdd1f1',
DATABASE_URL: process.env.DATABASE_URL || 'postgresql://llm:llm_secure_2026@localhost: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://127.0.0.1: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',
CODEX_BRIDGE_URL: 'http://127.0.0.1:3253',
OPENAI_CODEX_URL: 'http://127.0.0.1:3253',
M365_COPILOT_BRIDGE_URL: 'http://127.0.0.1:3357',
LLM_PROVIDERS: 'claude,openai,chatgpt,copilot,m365-copilot,codex,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_BRIDGE_HOST: '127.0.0.1',
COPILOT_API_INTERNAL_PORT: 4141,
COPILOT_API_PACKAGE: 'copilot-api@latest',
},
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@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',
},
],
}