MCP Foxxy Bridge includes comprehensive daemon management capabilities for running the bridge server in the background with process monitoring and lifecycle management.
# Start as daemon
foxxy-bridge server start --daemon
# Check running daemons
foxxy-bridge server list
# Stop daemon
foxxy-bridge server stop# Start with default configuration
foxxy-bridge server start --daemon
# Start with custom configuration
foxxy-bridge server start --daemon --config /path/to/config.json
# Start with specific port and host
foxxy-bridge server start --daemon --port 9000 --host 0.0.0.0foxxy-bridge server listExample Output:
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Name ┃ PID ┃ Status ┃ Config File ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ default │ 12345 │ running │ ~/.config/foxxy-bridge/config.json │
│ production │ 12346 │ running │ /etc/foxxy-bridge/prod-config.json │
└────────────────────┴──────────┴────────────┴──────────────────────────────────────┘
# Stop specific daemon by name
foxxy-bridge server stop production
# Force stop if graceful shutdown fails
foxxy-bridge server stop production --force
# Stop all daemons
foxxy-bridge server stop --all# Check status of specific daemon
foxxy-bridge server server-status production
# Check status with JSON output
foxxy-bridge server server-status production --format jsonDaemons are identified by:
- Configuration Path: Each unique config file creates a separate daemon
- Daemon Name: Derived from config filename or explicitly set
- Process ID (PID): Operating system process identifier
The daemon manager automatically:
- Tracks process status and health
- Monitors for unexpected exits
- Maintains process metadata
- Cleans up orphaned processes
PID Files:
- Location:
~/.config/foxxy-bridge/pids/ - Format:
{daemon-name}.pid - Contains: Process ID and metadata
Log Files:
- Location:
~/.config/foxxy-bridge/logs/ - Format:
{daemon-name}.log - Automatic log rotation supported
{
"bridge": {
"daemon": {
"pid_file": "~/.config/foxxy-bridge/pids/bridge.pid",
"log_file": "~/.config/foxxy-bridge/logs/bridge.log",
"user": "foxxy-bridge",
"group": "foxxy-bridge"
}
}
}Run multiple bridge instances with different configurations:
# Production instance
foxxy-bridge server start --daemon --config /etc/foxxy-bridge/prod.json
# Development instance
foxxy-bridge server start --daemon --config ~/.config/foxxy-bridge/dev.json
# Testing instance
foxxy-bridge server start --daemon --config ./test-config.jsonThe daemon manager performs automatic health monitoring:
# Manual health check
foxxy-bridge server server-status production
# Continuous monitoring
foxxy-bridge server server-status production --watch- Process Status: Verify daemon process is running
- Port Availability: Check if server port is responsive
- API Endpoint: Test bridge API health endpoint
- MCP Server Status: Monitor connected MCP server health
Process Restart:
- Automatic restart on unexpected exit
- Configurable retry attempts and delays
- Process state preservation
Configuration Reload:
- Hot reload on configuration changes
- Graceful server restart when needed
- Validation before applying changes
Create a systemd service file:
# /etc/systemd/system/foxxy-bridge.service
[Unit]
Description=MCP Foxxy Bridge
After=network.target
[Service]
Type=forking
User=foxxy-bridge
Group=foxxy-bridge
ExecStart=/usr/local/bin/foxxy-bridge server start --daemon --config /etc/foxxy-bridge/config.json
ExecStop=/usr/local/bin/foxxy-bridge server stop
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetEnable and start:
sudo systemctl enable foxxy-bridge
sudo systemctl start foxxy-bridge
sudo systemctl status foxxy-bridgeRun as daemon in Docker containers:
# Use daemon mode in container
CMD ["foxxy-bridge", "server", "start", "--daemon", "--host", "0.0.0.0"]Daemon Won't Start:
# Check configuration
foxxy-bridge config validate
# Check port availability
lsof -i :8080
# Check permissions
ls -la ~/.config/foxxy-bridge/Daemon Stops Unexpectedly:
# Check daemon logs
tail -f ~/.config/foxxy-bridge/logs/bridge.log
# Check system logs
journalctl -u foxxy-bridge
# Verify process limits
ulimit -aMultiple Daemons Conflict:
# List all running daemons
foxxy-bridge server list
# Check port conflicts
netstat -tulpn | grep :8080
# Stop conflicting daemons
foxxy-bridge server stop --allEnable debug logging for daemon troubleshooting:
# Start daemon with debug logging
foxxy-bridge --debug server start --daemon
# Check debug logs
tail -f ~/.config/foxxy-bridge/logs/bridge.log | grep DEBUGClean up orphaned processes and files:
# Manual cleanup
rm -f ~/.config/foxxy-bridge/pids/*.pid
pkill -f foxxy-bridge
# Automatic cleanup on start
foxxy-bridge server start --daemon --cleanup- Dedicated User: Run daemon as non-root user
- Configuration Management: Use absolute paths for config files
- Log Rotation: Configure log rotation to prevent disk space issues
- Monitoring: Set up external monitoring for daemon health
- Backup: Regular backup of configuration and state files
- Separate Configs: Use different configurations for dev/test/prod
- Port Management: Use non-conflicting ports for multiple instances
- Log Monitoring: Monitor daemon logs during development
- Quick Restart: Use
--forcefor rapid development cycles
- File Permissions: Restrict access to PID and log files
- Process Isolation: Run each daemon with minimal privileges
- Configuration Security: Protect configuration files containing secrets
- Network Security: Bind to localhost in development, use proper firewall rules in production
Convert from direct server execution:
# Old way (blocking)
foxxy-bridge server start --port 8080
# New way (daemon)
foxxy-bridge server start --daemon --port 8080Process management benefits:
- Background execution
- Process monitoring
- Automatic restart
- Multiple instance support
- Service integration