Skip to main content

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

zigdaggertiger-datatimescaledbpostgresqltypescriptreactvitedockergithub-actions

AI tools

Coded withClaude CodeClaude Sonnet 5.5Claude Opus 5.5

Prize Categories Entered

  • Tiger Data Q3 2026 - Q2 2027

    Best Use of Tiger Data

    Submitted

    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 prize

    Best Overall

    Submitted

    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.