Skip to content

Colonizer v0.2.14

Choose a tag to compare

@github-actions github-actions released this 08 Oct 06:53
Immutable release. Only release title and notes can be modified.
f59bdf7

Colonizer v0.2.14

What's new

  • The observability exporter can be configured entirely from OTEL_* environment variables, and a header it cannot parse is refused rather than half-sent. The standard variables are read and each one overrides its module field, with GET /api/observability/status naming where every field came from (module, env:<VAR> or default). COLONIZER_OBSERVABILITY=on turns export on for a setup with no module saved, and set to anything else (off, false, 0, no, empty) turns it off even when a module is saved and enabled — an operator who wrote it meant it. OTEL_SDK_DISABLED still wins over both. A header list from OTEL_EXPORTER_OTLP_HEADERS or the Observability headers secret is now really parsed: k=v,… pairs, values percent-decoded so Grafana Cloud's Authorization header, whose value carries a percent-encoded space before the base64, works, = allowed inside a value, an empty value legal, and one malformed pair refuses the whole list rather than sending a half-read credential. A rejected pair is reported by its position in the list, and by its name only when the pair has a legal one, so a mistyped Authorization: Basic … or a bare token can never reach the status page; the same rules are applied as the add-on applies them when it reads the list, so a header list the status calls valid never fails at spawn. Every export now carries the whole resource (service.name, service.version, service.instance.id, host.name, and colonizer.fleet.id/colonizer.fleet.role where they are known); OTEL_RESOURCE_ATTRIBUTES can add keys to it but never supply service.name, service.instance.id, host.name or anything under colonizer. — a fleet member carries no fleet id and a lone mothership no role, whatever the environment says. The effective config serialises with header names and never a value, so the status API and any log line are safe by construction. The default service name is now colonizer-mothership, which says which install is talking. (#841)
  • understand-anything: an optional knowledge-graph skillset, with a cost guard in colonies.
  • Colonies can run the repository's own check scripts, syntax-check a script, and ask git about the placeholders with -C, without a security hold. The exec policy's script-egress rule refused python3 tools/sync-nav.py --check and other check scripts a repository ships and tells contributors to run, so colonies retried and were held for repeated_denial. The boot now writes the base commit's scripts, with their git object ids, to /colonizer/tracked-scripts (read on the host from the merge-base, where the colony cannot change it), and the default rule leaves a script to the VM's network policy while its bytes are still the committed ones. A script the colony adds or edits is read as before, and an org, install or repository layer still sees every script. bash -n, sh -n, --noexec, node --check, node -c and ruby -c parse the script without running it and are no longer read as a run (bash -n -c … still is). The name-only allowance from #1169 now accepts git -C <the repository> check-ignore --no-index …; a -C naming any other directory is still refused. (#1239, #1227, #1079)
  • The exec policy now refuses reading a committed secret file through a git object spec. secret-paths matched path-looking words, so the <rev>: prefix in git show HEAD:.env, git cat-file -p HEAD:.env, git show origin/main:.npmrc or git show <sha>:.netrc hid the path, and the command printed the committed file. A git command's <rev>:<path> arguments now have their path part matched too, for any subcommand (show, cat-file, archive, diff, grep, log and the rest). git show HEAD:README.md and committed templates such as HEAD:.env.example still pass. (#1241)

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

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.

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.

e9563804d9f2d85cd534e0a721d21ec7d20c1f704f826f0fc8b766eebd9adda1  colonizer-darwin-arm64.tar.gz
de1211f1bc1954d98b13d7b49eb5aead2a69214d780d404a7bb0c3a98b1dd7d1  colonizer-linux-x86_64.tar.gz
ddab5dee7e70cedf8f8bc9fbbdd8e493e913e6de0d29eb017fe96fafe12af61a  Colonizer-arm64.dmg
4293bed20d991fb79164e457163a058fb362f10e480c0588e0edac4d3ffd7b4b  install.sh