AI Engineer NYC 2026
Join AI Engineer and Major League Hacking (MLH) on Sunday, October 11, for a full day of building, experimenting, and meeting fellow AI engineers.
Zig Actions Runner
A tiny Zig replacement for GitHub's Actions runner: Dagger runs the jobs, Tiger Data stores the logs.
About the project
Zig Actions Runner is a lightweight alternative to the official GitHub Actions runner. It registers as a just-in-time self-hosted runner, long-polls GitHub’s broker for work, acquires the job, runs every step as a Dagger pipeline (Dagger’s cache makes an identical re-run noticeably faster), uploads the step logs back to GitHub and completes the job, so GitHub shows the run as a normal success or failure.
Run state and log lines are stored in Tiger Data (TimescaleDB): runs, jobs and steps are plain tables, and job_logs is a hypertable with 1 day chunks, compression after a day and 30 day retention. A React frontend lists runs and runners, shows each job’s steps, and tails its ANSI-colored logs live. The runner is a single Zig binary with no runtime dependencies beyond the Dagger CLI. Design and spec are in the repo’s docs folder.
Built with
AI tools
Prize Categories Entered
- Submitted

Best Use of Tiger Data
We use Tiger Data (TimescaleDB on Tiger Cloud, v2.30.2) as the store for a Zig-based GitHub Actions runner. Runs, jobs, steps and runners are plain SQL tables. Job output goes into a job_logs hypertable with 1 day chunks, compression after 1 day (segmented by job, ordered by line sequence) and a 30 day retention policy, so logs from many CI jobs stay small and expire on their own. The runner writes through a pure-Zig PostgreSQL client, and a read API and React frontend page through the logs by sequence number to tail a running job live. Schema changes are versioned migrations applied with dbmate and checked on the Tiger service. Staying on standard SQL meant no separate log store or time-series tool. We haven't used continuous aggregates yet.
- Event prizeSubmitted
Best Overall
This replaces GitHub's official Actions runner with a single small Zig binary, and it works against real GitHub. It registers as a just-in-time runner, picks up a real queued job, runs each step as a Dagger pipeline, uploads the logs and completes the job, so GitHub shows the run as a normal success or failure. Dagger's cache makes an identical re-run noticeably faster: about 0.8 s instead of 3.9 s for the same job. We reverse-engineered undocumented parts of GitHub's runner protocol and wrote the findings into a spec. Run state and logs are stored in Tiger Data, and a React frontend shows runs, runners and live ANSI-colored logs. It's a useful tool for anyone who wants cheaper, lighter self-hosted CI, built end to end by a team of two in a day with tests and a written design.