Self-Hosted CI Runner Autoscaler
A controller that starts and stops build runners based on the actual job queue, so jobs do not wait and idle machines are not paid for. A concrete scheduling and cost optimisation problem with an unambiguous evaluation.
Intermediate
A small team, or one strong student willing to learn something new.1 semester, 2 students
5 to ship
3 optional extrasSuggested stack
What you should ship
- Queue monitoring reading pending jobs and their resource requirements
- Scaling controller provisioning and terminating runners with a documented policy
- Warm pool handling so a job does not wait for a cold start on every request
- Cost and wait time metrics recorded per job
- Simulation across at least 3 workload patterns comparing your policy against fixed capacity
If you have time left
- Predictive scaling from historical patterns such as the weekday morning surge
- Spot or preemptible instance use with correct handling of interruption
- Per team cost attribution
The problem
Self-hosted build infrastructure is either over-provisioned, paying for idle machines overnight, or under-provisioned, with developers waiting twenty minutes for a runner. Both are expensive and the second is worse.
What you build
A queue monitor, a scaling controller, a warm pool, and a simulation harness comparing policies.
The trade off at the centre
Cold start against idle cost. Terminating aggressively saves money and makes the next job wait for a machine to boot and pull images. Keeping a warm pool costs money and removes the wait. There is no correct answer, only a curve, and mapping that curve is the project.
Why simulation is the right evaluation
Running a real cluster for weeks under varied load is not feasible in a semester. Build a simulator, drive it with realistic job arrival patterns including bursts and quiet periods, and compare your policy against fixed capacity on total cost and p95 wait time. Then validate the simulator against a small real deployment.
The workload patterns to test
Steady arrival, a weekday morning spike, and a burst when a large pull request triggers fifty jobs at once. Policies that look good on smooth load frequently fail on the burst, which is the case that actually annoys developers.
Scope warning
One CI system, one cloud provider or one local cluster. The scheduling policy is the contribution.
Ideas and guidance, not finished projects
These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.
Not sure this one fits you?
I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Every session is free; a few slots open each week.
Follow along
New writing, resources and project ideas land here first.