Problems / AI products, medium

Background agents poll GitHub until throttled

Background coding agents open a pull request, then wait for CI by polling GitHub every 10 s, about 12 checks per task. All agents share one GitHub App installation, limited to 15,000 requests an hour (250 a minute). 70 tasks start a minute.

Unlock it once for 15 credits; everything inside it is free (runs, changes, Submit, results, hints). Sign in with Google to start; new accounts get free credits.

Your goals

Success ≥ 95% of tasks, p99 ≤ 90 s.

Test cases

Like a coding problem, a solution has to pass every case, not just the one it was built for. Submit in the lab runs all 6; 2 of them are hidden until then.

  1. As given. The problem’s own traffic, scheduled failures and seed.
  2. Peak hour. 25% more traffic than the problem states, with the same failures.
  3. A slow dependency. The main data store or model answers twice as slowly for part of the run.
  4. A server dies. One replica of the service with the most replicas is killed for part of the run.

The traffic

1.167 requests a second for 45 seconds: 100% task (writes).

The system

What each component does in this design, and what calls it. The simulator mimics each one from these settings.

ComponentIts job hereSettings
Load balancerLoad balancerTraffic enters here.Calls Agent API.Layer 4 balancers route by IP and port; layer 7 balancers read HTTP and can route by path or header.–
Agent APIApp serviceLoad balancer forwards to it.Calls Agent harness, CI status poller (every 10 s).Little's law: throughput ≈ concurrency ÷ latency. 200 slots at 50 ms serve about 4,000 req/s.3 replicas × 500 slots · timeout 180 s
Agent harnessAgent harnessAgent API calls it.Calls Model, MCP tool servers.A harness is everything around the model in an agent: context management, tools, checkpoints, retries and evaluation.400 slots · 4 steps
CI status poller (every 10 s)Scheduler / cronAgent API calls it.Calls GitHub API (one app installation).Cron jobs tend to start on the hour, so many systems see a spike at :00.2000 slots · 12 steps
GitHub API (one app installation)External API (mock)CI status poller (every 10 s) calls it.Third-party APIs have their own rate limits and outages that you cannot fix.1000 slots · 250 calls/min
ModelLLM endpointAgent harness calls it.Latency has two parts: time to the first token, then a steady stream of tokens per second.2000 streams
MCP tool serversTool / MCP serverAgent harness calls it.Tools give the model actions such as search or database queries; each call is another round trip.2000 slots

More ai products problems