By Davide Ciffa

AI code review and GitHub Actions on one Lucebox: paid back in about 7 months

One Lucebox now reviews every pull request on our main repository, tells us why a job failed, and runs the Linux jobs we move to it from GitHub Actions. The code never leaves the office. Our CI bots cost us about $1,340 a month on hosted models. The box costs $8,199 once and about $310 a month to run, and pays for itself in about 7 months.

Work out what one box would save your team

A Lucebox with a long strip of printer paper running out of it, rows of code with a check mark every few rows

In short

Set up AI code review on GitHub

The CI tab in Lucebox Manage, recorded read-only and with cuts. Repository, job and pull request names are made up.
  1. Connect GitHub. The CI tab creates a private GitHub App for the box. It sees only the repositories you pick, and you turn CI on for each one.
  2. Choose when CI runs. Jobs run in a virtual machine on the box, apart from the model and the dashboard, while Run CI is open: start it now, or give each repository a schedule. CI has its own model.
  3. Turn on code review. Every new pull request gets a review from DeepSeek V4.1 Flash on the box. A bug is posted only with the command and the output that show it.
  4. Triage failed jobs. When a job fails, the box reads its log and says why on the run and as a check on GitHub: a bug in the change, a wrong or flaky test, a dependency, or the runner. With automatic fixes on, it opens a draft pull request for each bug or wrong test it finds.
  5. Move jobs. The job picker lists the jobs the box can run and moves the ones you pick with a pull request.

What it changes for the team

Review comments you can believe. When the reviewer thinks it found a bug, it writes a test or a command that shows it and runs it. If it can't show the bug, it says nothing. So when it does comment, it's worth reading.

A red check tells you why. Nobody has to open a long log to find out whether the change broke something, the test is flaky, a dependency moved or the runner had a problem. The reason is on the run and on GitHub. If it's a bug and automatic fixes are on, a draft pull request with the fix is already there.

The code stays with you. Pull requests, logs and fixes are read by the model on the box in your office. None of it goes to a hosted model.

No bill per review. Nobody has to decide which pull requests are worth a review.

Your own work comes first. CI runs on a schedule you pick, or when you start it. If you need the box's GPUs for your own models, CI waits.

What it costs vs GitHub Actions and hosted models

Our four CI bots cost us about $1,340 a month on hosted models today, mostly Kimi K3 and GLM 5.3. GitHub's list price for our Linux minutes adds about $215. One Lucebox does that work for $8,199 once and about $310 a month to run, so it pays for itself in about 7 months.

We price the running costs as if the box never rested. Electricity: 500 W, its full inference load, 24 hours a day, about $110 a month at $0.30 per kWh. That is well above what we measured: with four reviews running at once, its two chips drew about 170 W. Upkeep: two hours of an engineer's time a month for updates and the odd stuck job, $200 at $100 an hour.

In a budget the box is a purchase, written off over the years it serves: $537 a month over three years, or $446 over five, running costs included. Hosted services are a bill every month, and it grows with every pull request.

When one box pays for itself, by what it replaces in our CI
What it replacesA monthPays back in
What our CI pays today: the hosted models of our four CI bots, plus GitHub's Linux minutes$1,560~7 months
The same model hosted, DeepSeek V4.1 Flash at list price, reviewing every new commit (about 2,400 a month in our two repositories), plus Linux minutes$870~15 months

Try it with your numbers

The slider starts at what our CI pays today. Move it to what yours pays a month for Linux minutes and hosted AI, and the chart below follows.

$1,559 a month
36 months
Pays for itself in
about 7 months
In the budget
$537 a month
Over the write-off
saves about $36,780
Then saves
$1,250 a month
Total spent, month by month: one box with its running costs, against the bill you set above.

And since we price the box as if it never rested, whatever else a team runs on it, like coding agents or chat, adds nothing to its bill.

What we measured

GitHub's runners24.1 min
One Lucebox7.6 min
One Lucebox, while it writes a review8.3 min
Our engine build, played 60 times faster, at the times in the table below.
On one Lucebox Zero 495 with 192 GB, running DeepSeek V4.1 Flash
WhatResult
Our engine build7.6 minutes, against 24.1 on GitHub's runners (average of 92 runs)
The same build while the box writes a review8.3 minutes; while a build runs, the model writes about 9% slower
A pull request with two planted bugsBoth found, each shown with a command, in about two and a half minutes
Our first two real reviews19 and 23 minutes
Four reviews or chats at once7.4 tok/s each
Power with four reviews runningAbout 170 W from its two chips, against 46 W idle

What comes next

How we worked it out

Our two repositories over 30 days, from GitHub: about 480 pull requests, 2,400 commits pushed to them, and 480 reviews from our review bot, about one a pull request.

In 12 days of its logs the review bot ran 220 times, read about 167 million tokens and wrote about 8 million: about 760,000 read and 36,000 written a review. At DeepSeek V4.1 Flash's list price on a hosted API, $0.30 per million tokens read and $1.20 written, that is about $0.27 a review.

Our four CI bots spent about $530 on hosted models in those 12 days, mostly Kimi K3 and GLM 5.3: about $1,340 a month.

GitHub's list prices for the minutes the box takes: about 36,000 Linux minutes a month on 2-core runners at $0.006, about $215. Our Windows, ARM64 and GPU-test minutes stay where they run: the box has no Windows, no ARM64 cores, and its GPU holds the model.

Running costs, the same whatever the box replaces: 500 W around the clock is 12 kWh a day, about $110 a month at $0.30 per kWh, plus $200 of upkeep. About $310 a month in all, or $10 a day. The payback is the box's price divided by what it saves each month after those costs.

Common questions

Can AI code review run on your own hardware?

Yes. A Lucebox Zero 495 with 192 GB runs DeepSeek V4.1 Flash and reviews every pull request on our main repository. The code never leaves the office.

How much does hosted AI code review cost?

About $0.27 a review for DeepSeek V4.1 Flash at list price on a hosted API. Reviewing every new commit in our two repositories, about 2,400 a month, comes to about $870 a month with the Linux minutes.

Can AI tell you why a CI job failed?

Yes. When a job fails, the box reads its log with DeepSeek V4.1 Flash and says whether the change, the test, a dependency or the runner is to blame, on the run and as a check on GitHub. For a bug or a wrong test, it can open a draft pull request with the fix.

Is a self-hosted GitHub Actions runner faster?

For our engine build it was: 7.6 minutes on the box against 24.1 on GitHub's runners, average of 92 runs.


Related

Run your CI on a Lucebox

The engine is open source.

The box GitHub Discord

Keep reading

All reports
Lucebox client harness experiments on an RTX 3090

Launch and tune Lucebox with real agent harnesses

Real-client profiles, launch scripts, and TQ3/DDTree results for OpenCode, Hermes, OpenClaw, Open WebUI, Codex, Claude Code, and Pi.

PFlash v2: a long document with a few whole units highlighted in gold, flowing into a short compressed prompt

PFlash v2: 3x faster processing on long prompts

PFlash decides which parts of a long prompt the model reads: 92 of 124 public long-context questions against 94 for full prefill, with the model reading a median 27% of the prompt and the first token 3.7x sooner on average on one AMD Radeon AI PRO R9700.

An amber tool prefix feeding three progressively growing blue agent turns

Tool prefix caching: 48× faster warm prefill for agent loops

Agent turns resend thousands of tool-definition tokens. Lucebox restores that stable prefix and processes only the new conversation: 1.04 seconds warm after a 50.35 second cold turn.