Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# Changelog

What changed in each release of Colonizer, in the order it would matter to
someone running it.

Releases are `vX.Y.Z` tags on `main`, installed with
`curl -fsSL https://colonizer.dev/install.sh | sh`. Each entry links the pull
request, so the reasoning behind a line is one click away. Dates are the day the
release was published.

Colonizer is `0.x`: the shape of things still moves, and a minor version can
change behaviour. Anything that would cost work — a colony, a worktree, a
setting — is called out under **Take care** rather than left for you to find.

## Unreleased

### Added

- Colonizer now knows which version it is. A build records the tag it came from,
its commit and when it was built, and Settings shows them. ([#110])
- It checks whether a newer release is out, every few hours, **on by default**,
with a switch in Settings and `COLONIZER_UPDATE_CHECK=0` to keep it off from
the environment. Switched off it makes no request at all. ([#110])
- **Update in place.** Settings offers the newer release, installs it with the
same verified installer you would run by hand, and restarts into it. Colonies
keep their microVMs and reconnect, and the pane says what happened to each
one. ([#112])
- Shared memory can live in [mem0] instead of files on disk. ([#97])
- `scripts/colony-report.mjs` prints how colonies went, out of what they already
log. ([#99])
- Settings names the Claude account that is connected, or says plainly that it
cannot be named. ([#83])

### Changed

- The colony list is ordered by what it wants from you, shows the queue, and
keeps following a pull request after it opens. ([#82])
- An install now lives behind a symlink, so an install interrupted half-way
leaves either the whole old app or the whole new one — never neither. ([#104])
- A colony that cannot be resumed says why, instead of quoting `gh` at you.
([#111])

### Take care

- An update applied from Settings keeps the previous app directory until no
running colony still mounts plugins from it, and sweeps it at the next start.
An installer run by hand still replaces it immediately, which is safe when
nothing is running and not when something is. ([#112])

## [v0.1.4] — 2026-09-17

### Changed

- The colony chat streams smoothly: even text, fade-ins and eased scrolling,
instead of arriving in jerks. ([#80])

## [v0.1.3] — 2026-09-17

### Added

- A live map at [colonizer.dev/live](https://colonizer.dev/live): a dot for a
mothership's area, lit while colonies run. **Off until you switch it on.**
([#79])

### Changed

- "Settler" now means what it does today, subagents included, and the README
stops claiming nothing is downloaded at runtime — the Claude Agent SDK and,
on a Mac, the Linux build of Claude Code, are fetched at install time from
Anthropic's own channels. ([#78])

## [v0.1.2] — 2026-09-17

### Changed

- The published crates carry a banner and a README of their own. ([#77])

## [v0.1.1] — 2026-09-17

### Added

- `colonizer-harness` and `colonizer-agentd` are published to crates.io on
release, as source to build from rather than as a way to install. ([#76])
- The one-command install is documented now that there is a release to install.
([#75])

## [v0.1.0] — 2026-09-17

The first release: prebuilt for Linux x86_64 with KVM, and for Apple Silicon
Macs. ([#74])

### Colonies

- A GitHub issue becomes a pull request. The agent works in a disposable KVM
microVM on a fresh git worktree, and the **host** — never the VM — commits,
pushes and opens the pull request, automatically when the agent finishes.
- Questions arrive as multiple-choice cards with an "Other…" answer, never a
wall of text, and every step is described in plain language with the exact
command one click away.
- A colony whose microVM stops keeps its worktree and can be resumed where it
left off.
- Colonies past the parallel limit queue instead of being refused, and several
issues can be launched in one go.
- A chat and a terminal per colony, with each subagent shown as its own speaker.

### Credentials and the mesh

- Credentials never enter a colony. Tokens stay on the mothership; the guest
sees a placeholder and microsandbox's TLS proxy substitutes the real value at
the network edge.
- A private mesh of bundled Headscale and Tailscale links each colony to the
mothership, separate from any tailnet you already use, and starts without
internet access.

### Models

- A provider gateway on the mothership holds the keys, queues providers that
take one request at a time, and falls back to Claude when one is down.
Orchestrator, subagent and background models are set separately.
- A searchable catalogue of Anthropic-compatible endpoints, with presets
including Z.AI and Alibaba Qwen, and OpenAI reachable by translating Anthropic
Messages in the gateway.
- Two switches that save tokens: terse replies and compact command output.

### The machine

- Sandbox presets — Node, Python, Rust, Go — instead of typing an image tag, and
the colony image downloads when the stack is chosen rather than during your
first colony.
- Where a launch spends its time is recorded per phase.
- Claude Code plugin directories mount read-only into colonies, with ECC's
skills and agents vendored (its hooks removed, not merely switched off), plus
Google's skills on demand and Headroom.
- An optional pre-flight scan of the workspace, inside the colony, advisory
rather than a boundary.

### Beyond one colony

- Org workspaces, shared memory that agents propose and you approve, and a
watchdog that nudges colonies which stop making progress.

### Take care

- Linux x86_64 with KVM, or an Apple Silicon Mac. On a Mac the private mesh has
no build yet and colonies fall back to a loopback port.
- Colony images must be glibc-based: the Claude Code binary a colony runs is
mounted into it.

[mem0]: https://mem0.ai
[#74]: https://github.com/Colonizer-dev/harness/pull/74
[#75]: https://github.com/Colonizer-dev/harness/pull/75
[#76]: https://github.com/Colonizer-dev/harness/pull/76
[#77]: https://github.com/Colonizer-dev/harness/pull/77
[#78]: https://github.com/Colonizer-dev/harness/pull/78
[#79]: https://github.com/Colonizer-dev/harness/pull/79
[#80]: https://github.com/Colonizer-dev/harness/pull/80
[#82]: https://github.com/Colonizer-dev/harness/pull/82
[#83]: https://github.com/Colonizer-dev/harness/pull/83
[#97]: https://github.com/Colonizer-dev/harness/pull/97
[#99]: https://github.com/Colonizer-dev/harness/pull/99
[#104]: https://github.com/Colonizer-dev/harness/pull/104
[#110]: https://github.com/Colonizer-dev/harness/pull/110
[#111]: https://github.com/Colonizer-dev/harness/pull/111
[#112]: https://github.com/Colonizer-dev/harness/pull/112
[v0.1.4]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.4
[v0.1.3]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.3
[v0.1.2]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.2
[v0.1.1]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.1
[v0.1.0]: https://github.com/Colonizer-dev/harness/releases/tag/v0.1.0
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,12 @@ protocol on stdio, so an agent module can be written in anything.

---

## What changed

[CHANGELOG.md](CHANGELOG.md) covers every release, newest first, with the pull
request behind each line and anything that could cost work called out. The
mothership also tells you when a newer release is out, and can install it.

## What's in the repository

| Path | What it is | Status |
Expand Down