blaxstar/citric

Self-hosted Gerrit-style code review with built-in CI. One binary, SQLite, Docker-ready, no telemetry.

Go

2

8 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built a self-hosted Gerrit alternative with CI baked in. It's one ~7 MB binary and runs on Linux, macOS and Windows (r/coolgithubprojects)

So I've always liked Gerrit-style review, where you push a commit, it becomes a change, and you iterate on it with patchsets. But for a small team, running Gerrit plus Jenkins felt like way too much machinery, and I didn't want to pay for a forge either. So I built my own. We've been using it…

1

Oct 11, 2026

README

CitriC

Self-hosted code review and CI. Push a change, get a CL with a diff, reviewers, inline comments and build results; submit it when it's approved and green. One binary, one SQLite file, no external services.

CitriC

  • Gerrit-style review: every commit is a change (CL) with patchsets, stable Change-Ids, stacked CLs, OWNERS files and auto-assigned reviewers.
  • Built-in CI: lint, test, integration and format run on every patchset, configured per repo in .citric.toml; required tools gate submission. Live logs, cancel, re-run.
  • Build nodes: add machines (Linux, macOS, Windows) to run builds; route tools to them with labels. Nodes only make outbound connections.
  • Runs anywhere: Docker, .deb/.rpm, a single binary on Linux, macOS or Windows (as a native service).
  • Single sign-on with any OpenID Connect provider, or CLI tokens.
  • Ten citrus color palettes, dark and light; admins set the default and everyone can pick their own.
  • No telemetry. CitriC never contacts anything you didn't configure.

Quickstart (Docker)

curl -O https://raw.githubusercontent.com/blaxstar/citric/main/compose.yaml
# edit CITRIC_PUBLIC_URL in compose.yaml, then:
docker compose up -d
docker compose logs citric | grep "CLI token"

Install the CLI from your server and sign in:

curl -fsSL http://localhost:4400/install.sh | sh                  # macOS / Linux
irm http://localhost:4400/install.ps1 | iex                        # Windows (PowerShell)
citric auth login --server http://localhost:4400 --token <token>

Create a repo and send your first change:

docker compose exec citric citric repo init myproject
citric clone myproject && cd myproject
citric template --write          # generates .citric.toml for your project type
git add -A && citric commit -m "first change" && citric push

Open the server in a browser to review it. The :latest-full image used by compose.yaml has Go, Node, Rust, Python/uv and common linters, so CI works out of the box; :latest is git and citric only.

Other ways to run it

Docker & Composeimages, volumes, HTTPS with Caddy, upgrades
Linux packages & systemd.deb, .rpm, tarballs, citric service install
WindowsMSI, winget, Scoop, Windows service
From sourcemake
Reverse proxynginx, Caddy

Then: configuration · build nodes · security · backups

License

Apache-2.0. Copyright 2026 BLAXSTAR LLC; see NOTICE and TRADEMARKS.

build-system
ci-cd
code-review
continuous-integration
developer-tools
docker
gerrit
git
golang
self-hosted
sqlite
stacked-diffs

blaxstar/citric

Self-hosted Gerrit-style code review with built-in CI. One binary, SQLite, Docker-ready, no telemetry.

Go

2

8 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

I built a self-hosted Gerrit alternative with CI baked in. It's one ~7 MB binary and runs on Linux, macOS and Windows (r/coolgithubprojects)

So I've always liked Gerrit-style review, where you push a commit, it becomes a change, and you iterate on it with patchsets. But for a small team, running Gerrit plus Jenkins felt like way too much machinery, and I didn't want to pay for a forge either. So I built my own. We've been using it…

1

Oct 11, 2026

README

CitriC

Self-hosted code review and CI. Push a change, get a CL with a diff, reviewers, inline comments and build results; submit it when it's approved and green. One binary, one SQLite file, no external services.

CitriC

  • Gerrit-style review: every commit is a change (CL) with patchsets, stable Change-Ids, stacked CLs, OWNERS files and auto-assigned reviewers.
  • Built-in CI: lint, test, integration and format run on every patchset, configured per repo in .citric.toml; required tools gate submission. Live logs, cancel, re-run.
  • Build nodes: add machines (Linux, macOS, Windows) to run builds; route tools to them with labels. Nodes only make outbound connections.
  • Runs anywhere: Docker, .deb/.rpm, a single binary on Linux, macOS or Windows (as a native service).
  • Single sign-on with any OpenID Connect provider, or CLI tokens.
  • Ten citrus color palettes, dark and light; admins set the default and everyone can pick their own.
  • No telemetry. CitriC never contacts anything you didn't configure.

Quickstart (Docker)

curl -O https://raw.githubusercontent.com/blaxstar/citric/main/compose.yaml
# edit CITRIC_PUBLIC_URL in compose.yaml, then:
docker compose up -d
docker compose logs citric | grep "CLI token"

Install the CLI from your server and sign in:

curl -fsSL http://localhost:4400/install.sh | sh                  # macOS / Linux
irm http://localhost:4400/install.ps1 | iex                        # Windows (PowerShell)
citric auth login --server http://localhost:4400 --token <token>

Create a repo and send your first change:

docker compose exec citric citric repo init myproject
citric clone myproject && cd myproject
citric template --write          # generates .citric.toml for your project type
git add -A && citric commit -m "first change" && citric push

Open the server in a browser to review it. The :latest-full image used by compose.yaml has Go, Node, Rust, Python/uv and common linters, so CI works out of the box; :latest is git and citric only.

Other ways to run it

Docker & Composeimages, volumes, HTTPS with Caddy, upgrades
Linux packages & systemd.deb, .rpm, tarballs, citric service install
WindowsMSI, winget, Scoop, Windows service
From sourcemake
Reverse proxynginx, Caddy

Then: configuration · build nodes · security · backups

License

Apache-2.0. Copyright 2026 BLAXSTAR LLC; see NOTICE and TRADEMARKS.

build-system
ci-cd
code-review
continuous-integration
developer-tools
docker
gerrit
git
golang
self-hosted
sqlite
stacked-diffs