Skip to Content
Self HostingRunning Services

Running Services

Quick Start

The simplest way to run all services is with start-openfactory.sh, which manages screen sessions for each backend:

./start-openfactory.sh start

This starts all three backends and the frontend in separate screen sessions.

Manual Startup

If you prefer to start services individually (useful for debugging):

elster-terminal-backend

cd elster-terminal-backend source venv/bin/activate uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload --reload-exclude 'data/*'

cto-gui-libvirt-backend

cd cto-gui-libvirt-backend source venv/bin/activate uvicorn app.main:app --host 0.0.0.0 --port 8001 --reload --reload-exclude 'data/*'

web-terminal-backend

cd web-terminal-backend source venv/bin/activate uvicorn app.main:app --host 0.0.0.0 --port 8002 --reload --reload-exclude 'data/*'

Frontend

cd elster-terminal npm run dev

Accessing Services

ServiceURL
Frontend (chat UI)http://localhost:3000 
Backend APIhttp://localhost:8000 
Libvirt APIhttp://localhost:8001 
Web Terminalhttp://localhost:8002 

Viewing Logs

If running via screen sessions:

# List sessions screen -ls # Attach to a session screen -r elster-terminal-backend screen -r cto-gui-libvirt-backend screen -r web-terminal-backend # Detach from a session: Ctrl+A, then D

Build logs are written to elster-terminal-backend/data/logs/.

Restarting Backends

To restart backend services without interrupting other processes:

./start-openfactory.sh restart-backends

This restarts elster-terminal-backend, cto-gui-libvirt-backend, and web-terminal-backend.

Stopping Services

./start-openfactory.sh stop

Service Status

./start-openfactory.sh status

Health Checks

Verify each service is responding:

# Backend API curl -s http://localhost:8000/api/health | python3 -m json.tool # Libvirt backend curl -s http://localhost:8001/api/health | python3 -m json.tool # Frontend curl -s -o /dev/null -w "%{http_code}" http://localhost:3000

Next Steps

For a production deployment with SSL, systemd services, and monitoring, see Production Deployment.