enslaving the oppressors since 2026
TLDR: Automated VM/container designed to put the clankers to work. They're not going away, let's put them to work. Powered by Kubestellar Hive's Contributor Relay (ClankR). We did not make that up, real dads made these jokes.
review comes with goose prebundled and will passthrough client creds. PRs accepted for other clients, the design supports doing local side containers - but we don't want to ship a huge container either.
These are NOT anonymous "donations" - it's tied to the person's github account, reputation in the queue is based on your real life reputation in the project. The cream will rise to the top.
The Bluefin Hive will send these agents work and coordinate - which will dole out work based on your standing in the project. New contributors will be given easier tasks until they level up, and maintainers are given more important tasks. Everything in here is clanker-queue only, the human-queue is not managed here.
It owns only VM boot, credential handoff, and review context. Hive owns the
contributor protocol, task selection, the contributor tmux session, prompt
injection, and output capture.
review participates in the Bluefin Agentic Factory Feedback Loop. Its
canonical local model is docs/factory/agentic-model.md:
Hive dispatches work to Factory Workers, maintainers retain review and merge
authority, and the MCP app presents read-only Review Evidence. The
documentation, launcher, image, and tests describe one model; none may
silently create a second workflow, authority path, or task queue.
Running a downstream consumer of Hive's contributor protocol means we find
things upstream cannot see from inside. Reporting that evidence to
kubestellar/hive, and following up on
what we file, is part of the job. We report observations, reproductions, and
options with tradeoffs; upstream owns the design decision and its own triage.
We do not add a local workaround for an accepted upstream gap, because a
downstream workaround becomes upstream's compatibility burden later. See
docs/skills/upstream-hive.md.
The root justfile is the public launcher surface for this repository.
Run just review, just review-container, and just review-doctor from the
repository root. If you ship it in a custom image, keep those same recipes
available through the installed root Justfile.
NOTE: WIP - you want to run this in projectbluefin/common: the container AUTOMOUNTS the repo's agentic skills in the container so that the project context is given to every client. This is important because this let's us make more things deterministic. The more docs and scripts we can put in this thing the easier it is for less capable models to do this work. Local models are VIABLE!
For a checkout, run the recipes directly:
just --list
just reviewjustfile is the installable artifact and exposes exactly
three public recipes:
| Command | Purpose |
|---|---|
just review |
Run the contributor through a foreground QEMU VM. |
just review-container |
Run the contributor container directly, without a VM. |
just review-doctor |
Perform read-only launch diagnostics. |
Every run remains attached to its originating terminal. Ctrl-C or closing that
terminal stops it; the launcher provides no lifecycle commands or daemon.
Detaching tmux (prefix, then d) detaches the view only—the originating
terminal remains responsible for the foreground run.
mcp-app/ is an optional, read-only Goose Desktop MCP App. It observes Hive
and GitHub evidence in a single Tactical Ledger view; it does not replace the
launcher, select work, control Hive, read tmux, persist data, or poll.
Build it, then register node mcp-app/dist/server.js as a stdio MCP server in
Goose Desktop:
npm --prefix mcp-app install
npm --prefix mcp-app run buildThe app fetches one evidence snapshot when opened and only fetches again when
the user activates Refresh all evidence. Its server uses
REVIEW_GH_TOKEN, then GH_TOKEN, for GitHub API reads when
available; it never uses or displays a Copilot credential. See
mcp-app/README.md for Hive endpoint configuration and
Goose resource details.
The generated public PR queue is a small, static review backlog:
/serves the Markdown overview;/queue.mdserves the Markdown artifact;/queue.jsonserves the machine-readable artifact.
Every artifact carries generated_at. Treat it as a recommendation snapshot:
check its freshness and verify the selected pull request directly in GitHub
before acting. The queue's actions are fix-ci, resolve-conflicts, review,
investigate, and ready-for-human-merge; it never authorizes a merge.
GitHub remains authoritative for pull requests, reviews, checks, and merge
state, while Hive remains authoritative for agent coordination. The queue does
not claim work, assign agents, mutate labels, include private repositories, or
run a service. The queue.projectbluefin.io custom-domain and DNS mapping are
an operations task outside this repository automation.
gh auth login --web --hostname github.com --scopes repo,read:orgis a hard prerequisite for both launch modes.podmanfor either launch mode.- Readable, writable
/dev/kvmfor VM mode. - For a local raw VM:
qemu-system-<host-arch>,qemu-img, matching UEFI firmware,curl, andzstd. - Goose configured for GitHub Copilot, or
GITHUB_COPILOT_TOKEN. - For container-only Git operations, a separate GitHub token via
REVIEW_GH_TOKEN.
Goose is the only agent backend and GitHub Copilot is the only supported
provider. GOOSE_PROVIDER may be unset or github_copilot; GOOSE_MODEL
optionally overrides the gpt-5.6-luna default, and
GOOSE_THINKING_EFFORT optionally overrides the default high reasoning
effort. A gh auth token does not authenticate Copilot inference.
The container recipe inherits the Copilot and GitHub tokens by environment
variable name, so token values are not placed on Podman's command line. The
agent can use every scope on its GitHub token; prefer a
REVIEW_GH_TOKEN limited to public_repo or repo.
At startup, the contributor image reports any unavailable common validation
commands (bats, shellcheck, systemd-analyze, pre-commit, just, and
podman) without blocking the assigned task.
The VM guest has no GitHub identity mapping. Use
review-container when fork, push, or pull-request access is needed;
a host gh login or PAT cannot add that identity to the VM.
Run just review-doctor to check the selected VM path, including
local tools, firmware, raw-artifact availability, contributor image, Hive
setup, and credentials. It never starts a VM or container. A normal attended
launch runs Hive's upstream setup when ~/.config/hive/contributor.env is
absent; doctor only reports that condition.
For a Bluefin review, load /bluefin-review after the assigned repository is
available. To inspect earlier output, enter tmux copy-mode with Ctrl-b [;
PageUp scrolls, tmux search finds text, and q returns to the live pane.
The mouse wheel also enters copy-mode and scrolls long output. Copy-mode only
changes your view; Hive still owns task and output handling.
All configuration is read at launch.
| Variable | Purpose |
|---|---|
REVIEW_VM_RAW |
Verified local raw disk; its .sha256 sidecar is required. |
REVIEW_VM_RUNNER_IMAGE |
Immutable QEMU runner image used when no raw disk is selected. |
REVIEW_VM_VERSION |
Raw-release version used when neither VM override is set. |
REVIEW_CONTRIBUTOR_IMAGE |
Contributor image; defaults to ghcr.io/projectbluefin/review:stable. |
REVIEW_HIVE_COMMIT |
Full Hive commit used for contributor setup. |
REVIEW_GH_TOKEN |
Optional GitHub token override for container-only mode. |
GOOSE_PROVIDER |
Unset or github_copilot. |
GOOSE_MODEL |
Optional GitHub Copilot model override. |
GOOSE_THINKING_EFFORT |
Optional Copilot reasoning-effort override. |
GITHUB_COPILOT_TOKEN |
Optional Copilot credential override. |
TOOL |
Agent backend selector; only goose is accepted. |
~/.config/review/last-selections.env stores launcher configuration
state such as the last Goose/provider selection between runs.
~/.local/state/review/ stores the pinned Hive checkout and verified
VM artifact cache. No other launcher state persists.
VM selection prefers an explicit raw disk, then a configured runner image, then an exact version-and-architecture raw release. Raw images are checksum verified, boot through disposable overlays, and cached by version and architecture. Once the requested raw image is verified, older caches for that architecture are removed.
stable is the default contributor-image tag and is pulled at each launch.
Use an immutable sha-<commit> tag or digest with
REVIEW_CONTRIBUTOR_IMAGE when a reproducible image is required.
The image derives from the digest-pinned Project Bluefin FSDK lab runner and
layers the pinned Hive runtime at 4d61ad7ce8b646a4e380865c521d5b12677240c9,
the current Goose canary snapshot, GitHub CLI, tmux, hooks, and generated
organization skills. Goose publishes that snapshot from its active main
branch; each archive is verified against GitHub's signed build provenance
before installation.
That Hive SHA is load-bearing, not decorative. It is the third of three copies
of the same pin: hive_commit in the justfile, ARG HIVE_COMMIT in
image/Containerfile, and the one above. All three must move together, and CI
fails if they disagree. Renovate proposes them as a single change, so take its
pull request whole rather than editing any copy by hand.
The Goose canary snapshot is intentionally not byte-reproducible: rebuilding
the same contributor-image source later can use a newer Goose binary. Use an
immutable contributor image digest or sha-<commit> image tag when a fixed
artifact is required.
Hive overwrites ~/.config/goose/config.yaml at startup. The image therefore
uses GOOSE_PATH_ROOT=/opt/bluefin/goose for its controlled Goose
configuration, including Context7.
Organization skills are generated at image build time from
projectbluefin/common's docs/skills/index.json into Goose's global skill
directory. Repositories may route agents to their own skill catalog, but
per-repository skills are not automatically discovered at session startup.
The image supplies xterm-256color and tmux-256color terminfo definitions.
It preserves a recognized terminal type when attaching tmux and falls back to
xterm-256color only when that type is unavailable in the image.
Git hooks at /opt/bluefin/git-hooks are ergonomics only; GitHub rulesets and
required checks enforce repository policy.
Prototype image-owned behavior in this checkout, then build a local tag:
GH_TOKEN="$(gh auth token)" podman build \
--secret id=github_token,env=GH_TOKEN \
--build-arg GOOSE_REFRESH="$(date +%s)" \
-f image/Containerfile -t localhost/review:dev .Use that tag for a container-only trial without publishing it:
REVIEW_CONTRIBUTOR_IMAGE=localhost/review:dev \
just review-containerThe launcher prefers a fresh copy of moving tags, but falls back to an already
present local image when no registry copy is available. After the change is
ready, commit it and use the normal publish workflow; CI publishes immutable
sha-<commit> and version tags and advances :stable from main.
The build secret exists only while GitHub CLI verifies Goose's signed
provenance and is never included in an image layer.
bash scripts/check-skill-frontmatter.sh
bash tests/generate-skills.sh
bash tests/image-contract.sh
bash tests/just-onboarding.sh
git diff --check
just --list
pre-commit run --all-filesSee AGENTS.md for contributor boundaries and
docs/SKILL.md for task-specific documentation.
Licensed under the Apache License 2.0.
