Server Availability Schedule

All times in UTC. Always check current mode before spawning agents.

IONOS VPS Schedule

Time (UTC)ModeMax AgentsDescription
09:00–22:45daily-scan415-min auto-issue-pipeline active
22:45–23:00pre-nightly0Preparing for nightly orchestrator
23:00–01:00nightly-reviews5Parallel PR reviews (scanner paused)
01:00–04:00nightly-tests0npm test/build/e2e/tsc (not agents)
04:00–05:00nightly-synthesis1Single synthesis agent + Discord report
05:00–09:00post-nightly0Cooldown buffer

Scheduling Rules

  1. Check server_mode_status before spawning any agents
  2. Check agent_sessions WHERE status='active' — never exceed max_agents for current window
  3. Nightly mode blocks all scanner tasks — scanner checks server_mode_status and exits if not idle or daily-scan
  4. 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 #general via DISCORD_WEBHOOK_URL
  • Weekly infra health: reports to Discord via .github/workflows/infra-health.yml

Adding a New Server

  1. Provision via ansible-playbook ansible/playbooks/provision-new-vps.yml
  2. Add availability windows to server_schedules Supabase table
  3. Update this document with the new server’s schedule
  4. Add server to monitoring/prometheus/prometheus.yml scrape targets