-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Runner Box
github-actions[bot] edited this page Jul 17, 2026
·
1 revision
The self-hosted pool (self-hosted, omni-release labels) runs on the 16 GB box at
192.168.0.113. Two failure modes recurred on release days and were, until v3.8.49,
manual discipline; the janitor script codifies them (WS3.3 of the quality plan):
- Orphaned temp/work dirs filling the disk → disk-full SQLite errors mid-job.
- >4 concurrent runners → OOM-killed jobs (8-wide killed jobs twice on the v3.8.47 release day; 4-wide is the proven ceiling).
sudo mkdir -p /opt/omniroute-ops
sudo cp scripts/ops/runner-janitor.sh /opt/omniroute-ops/
sudo chmod +x /opt/omniroute-ops/runner-janitor.sh
( sudo crontab -l 2>/dev/null; echo '*/30 * * * * /opt/omniroute-ops/runner-janitor.sh >> /var/log/runner-janitor.log 2>&1' ) | sudo crontab -What it does every 30min: sweeps runner temp leftovers older than 24h, alerts at
≥85% root-disk usage, and alerts when more than the runner ceiling (default 4, tunable
via the script's own environment) of Runner.Listener processes are up. Alerts land in /var/log/runner-janitor.log
with a non-zero exit (grep for ⚠).
- Ceiling: 4 runners on the 16 GB box. Runners 5–8 stay STOPPED except for explicit off-peak experiments — never during a release window.
- Stopping a runner mid-job cancels the job (observed live):
systemctl stoponly when its runner is idle (Runner.Listenerwithout aRunner.Workerchild). - The
.15VPS is homologation-only — never runs CI runners.
OmniRoute · Website · npm · Docker Hub
- Setup Guide
- User Guide
- Features
- Quick Start (Docker)
- Electron Desktop App
- Termux (Android)
- PWA Guide
- MCP Server
- A2A Server
- Agent Protocols
- OpenCode Plugin
- Webhooks
- Cloud Agents
- Skills
- Memory
- Evals
- Gamification
- Guardrails
- Compliance
- Error Sanitization
- Public Credentials
- Route Guard Tiers
- Stealth Guide
- CLI Token Auth