Skip to content

Process Management

All services follow the naming convention: <service>-<branch>

PM2 NameServicePort
frontend-mainFrontend (main)3000
frontend-devFrontend (dev)3001
backend-mainBackend (main)8080
backend-devBackend (dev)8081
analyzer-mainAnalyzer (main)9000
analyzer-devAnalyzer (dev)9001
semantic-search-mainSemantic Search9100
ai-service-mainAI Service9300
agent-runner-mainAgent Runner (proposed)9400
mcp-server-mainMCP Server9500
webhook-serverWebhook Server9999
deployment-notifierDeployment Notifier—
Terminal window
# List all processes
pm2 list
# Show detailed status
pm2 show frontend-main
# View logs (last 100 lines)
pm2 logs frontend-main
# Follow logs
pm2 logs frontend-main --lines 200 --raw
# Restart a service
pm2 restart frontend-main
# Stop a service
pm2 stop frontend-main
# Delete from PM2 (remove process)
pm2 delete frontend-main
# Restart all
pm2 restart all
# Stop all
pm2 stop all
# Save current process list (persist across reboots)
pm2 save
# Resurrect saved process list
pm2 resurrect

Use logrite-manager.js instead of PM2 directly when possible:

Terminal window
cd /root/logrite
# Status of all Logrite services
./cli/logrite-manager.js status
# Start/stop/restart specific service
./cli/logrite-manager.js start frontend main
./cli/logrite-manager.js stop backend dev
./cli/logrite-manager.js restart analyzer main
# View logs
./cli/logrite-manager.js logs ai-service main
# Start all (with OpenSearch health check)
./cli/logrite-manager.js start-all
# Stop all
./cli/logrite-manager.js stop-all
Terminal window
# Generate startup script
pm2 startup
# This outputs a command like:
# sudo env PATH=... pm2 startup systemd -u root --hp /root
# Run the output command, then save state
pm2 save

The deployment notifier listens for PM2 events and sends Discord notifications:

Terminal window
# Start as daemon
pm2 start /root/logrite/cli/deployment-notifier.js --name deployment-notifier
# Include in save
pm2 save