Developer tools
Kinhin
Autoscaling CI runners that live on your Mac — ephemeral, resource-aware, and gone when the job is done.
- Category
- Developer tools
- Stage
- Beta
- For
- Developers and teams seeking self-hosted, autoscaling CI runners for GitHub, GitLab CE, Gitea, or Forgejo.
About
The mindful CI — autoscaling CI runners that live on your Mac. macOS jobs on Tart VMs, Linux jobs on apple/container microVMs or Docker.
Features
- Problem
- A single runner processing one job at a time slows down a busy queue.
- How it works
- Scales a fleet of ephemeral runners to queued demand so jobs can run in parallel.
- Result
- More queued work can run concurrently, within configured and host capacity limits.
- Why
- Desired runner counts are calculated per runtime pool from queue size and configured limits.
- Problem
- Persistent runner environments can carry state between jobs.
- How it works
- Starts each job in a fresh VM or container, then deregisters the runner and deletes its instance.
- Result
- Jobs finish without leaving their runner instance behind.
- Why
- Ephemeral instances prevent state from carrying over between jobs.
- Problem
- Teams using different CI forges may otherwise need separate runner pools.
- How it works
- Serves GitHub, GitLab CE, Gitea, and Forgejo from one shared pool.
- Result
- One Mac-hosted fleet can serve jobs from multiple supported forges.
- Why
- A shared fleet supports these forges while keeping the existing CI workflows.
- Problem
- Different jobs may need different operating systems or execution environments.
- How it works
- Runs macOS jobs on Tart VMs and Linux jobs on Apple container microVMs, Docker containers, or Tart Linux VMs; routes jobs by repository, workflow, or runs-on label.
- Result
- A single fleet can provide multiple supported job environments.
- Why
- Runtime routing lets projects and workflows select an appropriate pool.
- Problem
- Scaling runners without regard to host resources can overload the Mac.
- How it works
- Budgets runtime pools against host capacity and reserves CPU, memory, and disk headroom.
- Result
- Runner capacity is bounded by configured limits and available host resources.
- Why
- The scaler caps concurrency to what the Mac can handle.
- Problem
- Operating a fleet can require a continuously open terminal or a separate app configuration.
- How it works
- Runs the same fleet engine through a macOS menu bar app or a headless LaunchAgent daemon.
- Result
- Users can choose a graphical or headless way to operate the fleet.
- Why
- Both modes use the same configuration and fleet.
Product questions
What does Kinhin do?
Kinhin runs an autoscaling fleet of ephemeral CI runners on a Mac, using your existing supported forge and routing each job to a suitable runtime.
Who is Kinhin for?
Developers and teams seeking self-hosted, autoscaling CI runners for GitHub, GitLab CE, Gitea, or Forgejo.
Screenshots



