Skip to content

Colonizer v0.2.19

Choose a tag to compare

@github-actions github-actions released this 20 Oct 16:16
Immutable release. Only release title and notes can be modified.
d4a22ee

Colonizer v0.2.19

What's new

  • Code review with Kodus (issue #1280). The reviewer org setting lets you pick between open-code-review (the original ocr binary) and Kodus, a self-hosted AI reviewer service you install yourself using kodus-installer. Both backends use the same shadow mode — findings are recorded, nothing changes — and share the diff snapshot. Store the Kodus URL and team key in Secrets, and the mothership sends only the redacted diff. Kodus's model is configured in Kodus itself, not in Colonizer. Findings land in the colony log and sessions/<id>/kodus.json. (#1280)
  • Settings → Colonies & runtime → Modules lists Cratefield modules as searchable cards. Each shows name, summary, status (published/unreleased/planned), versions (catalogue and published to crates.io), required and optional ports, and links to docs.rs, crates.io, and the catalogue. Search and filters by status and port. "Copy use line" puts a module in the clipboard. Data fetches hourly from CATALOG.json and crates.io with in-memory cache, falling back gracefully to disk cache and bundled snapshot with a banner if the network is down. (#1291)
  • Shadow sentinel logs a verdict before risky tool calls run. Colony tool calls in a narrow risky class — mount/umount/chroot/nsenter, writes to .git/config, .git/hooks or other protected paths, credential-shaped paths, curl/wget off the box, and kill of pid 1 or harness processes — now get an allow/refuse/ask verdict with a probability and a reason, bound to a digest of the exact call, written to the decisions ledger (point sentinel, shadow mode) next to what actually happened (ran, refused_by_policy, error). Read-only commands over credential paths (the grep/node --check shape behind false control_defeat holds) are recorded as allow. Nothing is blocked yet; exec and path policy stay the hard boundary. See docs/sentinel.md. (#1323)
  • Provenance ledger: records every worktree, branch, and pull request the harness creates,
  • Every trace span carries the colony id. Child spans (turn, execute_tool, subagent,
  • PlanetScale skillset: pscale CLI (Apache-2.0) and verified skills (MIT), off by default, downloaded on demand from pinned releases with sha256 verification.
  • Self-host fonts: no external Google Fonts requests. Geist and Geist Mono for the cockpit, and Instrument Sans and JetBrains Mono for crate banners, are now bundled as local WOFF2 files. The web UI no longer connects to fonts.googleapis.com or fonts.gstatic.com; banner rendering (scripts/render-crate-banners.sh) works offline. Font files are hashed at build time and cached for one year on CDN. (#1351)
  • Bench and evolver check the configuration each colony ran under. Every new session records
  • evolve draft: automate prompt generation — evolve.mjs draft spawns a model to generate candidate prompts for a failure class, reads the class evidence and optionally colony transcripts into an evidence directory, and turns valid replies into proposals. The command receives a brief on stdin, sees EVOLVER_LENS and EVOLVER_EVIDENCE in the environment, and must output either KEEP_BASE <reason> or cite-annotated replacement text. A leak guard refuses to spawn if the evidence contains sensitive paths or markers. (#1353)
  • An after colony no longer starts without its parent's work when the parent made no changes and its issue is still open. A colony queued to start once its parent's pull request merges (after without stack) used to be re-based on the default branch and started when the parent ended no_changes or its pull request was closed unmerged. Every colony queued behind it followed, each on a base that lacked the work it depends on. Now, while the parent's issue is still open, the child stays blocked (no slot, not failed) with a reason that names the issue, and so does the chain below it. Closing the issue re-bases and queues the child as before. A newer colony launched for the same issue becomes the child's parent, so its merge releases the chain. A parent without an issue, and stack children, behave as before. (#1362)
  • Pre-publish checks for cargo fmt and cargo clippy now succeed when the rust-toolchain is pinned with profile = "minimal". When a repository pins a Rust toolchain without bundled components, the verifier now automatically installs rustfmt and clippy in the guest sandbox, so these checks run to completion instead of failing with "component not installed". Failed pre-publish checks that fail on the base branch too now show a sample of their output in the PR note for audit, redacted like other log output (#1363)
  • Auto-promote drafts when base-shared CI failures are fixed. When a pre-publish check fails on the base branch, the mothership opens the PR as a draft to hold it. Now, when the PR head's CI is green and all the base-shared red checks pass, the merge train automatically marks the PR ready and posts a comment identifying the now-passing checks. Operator-initiated drafts are never auto-promoted. (#1364)
  • Prevent saving model tiers with inverted pricing: tasks routed high now can't run on cheaper/weaker models than medium ones. When saving agent settings, the mothership now checks whether model_high is cheaper than model (or model_low more expensive than model) and refuses with a clear error naming both models and their prices, unless the new allow_inverted_tiers setting is enabled. Every colony's model_routing now always names the lead model it ran with, and outcome activity entries (merged, failed, stopped, no_changes, etc.) now record the tier and model. Boot warns when tier inversions are detected. (#1366)
  • ECC agents with comma-separated tools are now accepted without warnings. ECC agents with tools: Read, Grep, Glob (comma-separated, the form Claude Code accepts) were dropped from the ant registry with ~70 "must be an inline array" warnings per boot. Now tools and disallowedTools accept comma-separated strings (parens-aware, e.g., Bash(git add:*, git commit:*)), skillsets stays inline-array only, and unparseable agent files are reported as one warning line per pack. (#1367)
  • Copy buttons work when the cockpit is reached over plain HTTP. On a tailnet IP there is no secure context, so navigator.clipboard is missing and Copy did nothing. Every copy button now goes through one helper that falls back to a hidden textarea and execCommand("copy"), shows "Copied" only when the text really reached the clipboard, and otherwise says "Press ⌘C to copy" (Ctrl+C elsewhere).
  • One floating chat button on phones. On a phone the cockpit showed two round accent buttons at the bottom right, search and Ask Colonizer. The Ask button now shows from the sm breakpoint up, and on a phone the search button opens Spotlight, whose Ask row opens the Ask panel. ⌘J is unchanged.

Prebuilt Colonizer for Linux x86_64 (with KVM) and Apple Silicon Macs, built from d4a22ee.

curl -fsSL https://colonizer.dev/install.sh | sh

The installer checks the archive against SHA256SUMS. It fetches the Claude Agent SDK from the npm registry, and on a Mac the Linux build of Claude Code, from Anthropic's own channels: neither is in the release. Guide: https://colonizer.dev/docs/install

Each artifact, SHA256SUMS included, also carries a build-provenance attestation recording the commit that built it. Verify one with:

gh attestation verify colonizer-<platform>.tar.gz --repo Colonizer-dev/harness

Here is linux-x86_64 or darwin-arm64.

The observability add-on rides along as colonizer-observability-.tar.gz for the same platforms; the installer puts it beside the colonizer binary, and the checksums and the attestation above cover it too.

Apple Silicon Macs can also use Colonizer-arm64.dmg: an unsigned app, so macOS asks you to approve it once (System Settings > Privacy & Security > Open Anyway). The curl installer above is the recommended path.

4b346bce2aeb180999f85a218f2c9794fbe9dc5a884237f75501d3df13dfd9e7  colonizer-darwin-arm64.tar.gz
937ba3eb1ffba02dc0440b2811fee8be0e1bd9111b08129de95dcb4af6d01fea  colonizer-linux-x86_64.tar.gz
49b19cb381bbb42bbef0bd72571fab781954d9d24c238846fba7719ee901e762  colonizer-observability-darwin-arm64.tar.gz
5fe4e20b077ef34b78742cef5aed7517fea3c777d48a44a51d3244fa3e46efb0  colonizer-observability-linux-x86_64.tar.gz
4f84fb271bb43faec209f685850824775417f2227ab27f52ca33b582d2105821  Colonizer-arm64.dmg
a65be2043bbd94aa8d5e1e122113ae3d3945120bf4b2771fc300298a06e60f4e  install.sh