Server Availability Schedule
All times in UTC. Always check current mode before spawning agents.
IONOS VPS Schedule
| Time (UTC) | Mode | Max Agents | Description |
|---|---|---|---|
| 09:00–22:45 | daily-scan | 4 | 15-min auto-issue-pipeline active |
| 22:45–23:00 | pre-nightly | 0 | Preparing for nightly orchestrator |
| 23:00–01:00 | nightly-reviews | 5 | Parallel PR reviews (scanner paused) |
| 01:00–04:00 | nightly-tests | 0 | npm test/build/e2e/tsc (not agents) |
| 04:00–05:00 | nightly-synthesis | 1 | Single synthesis agent + Discord report |
| 05:00–09:00 | post-nightly | 0 | Cooldown buffer |
Scheduling Rules
- Check
server_mode_statusbefore spawning any agents - Check
agent_sessions WHERE status='active'— never exceedmax_agentsfor current window - Nightly mode blocks all scanner tasks — scanner checks
server_mode_statusand exits if notidleordaily-scan - Scanner resumes automatically at 09:00 UTC via time check in auto-issue-pipeline skill
Resource Budget
IONOS VPS — 7.4 GB RAM total
Services always running:
3× OpenClaw processes ~2.0 GB
2× GitHub Actions runners ~0.4 GB
System + OS ~0.8 GB
─────────────────────────────────
Fixed overhead ~3.2 GB
Available for agents ~4.2 GB
Per Claude Code agent: ~700 MB
Safe daily limit: floor(4200 / 700) = 6 → conservative: 4
Safe nightly limit: floor(4600 / 700) = 6 → conservative: 5
Reporting
- 15-min scanner: reports to GitHub Issues + Supabase agent_sessions
- Nightly: reports to Discord
#generalvia DISCORD_WEBHOOK_URL - Weekly infra health: reports to Discord via
.github/workflows/infra-health.yml
Adding a New Server
- Provision via
ansible-playbook ansible/playbooks/provision-new-vps.yml - Add availability windows to
server_schedulesSupabase table - Update this document with the new server’s schedule
- Add server to
monitoring/prometheus/prometheus.ymlscrape targets