Bourdon is pre-alpha. On this page that phrase has a specific meaning, because a version number alone cannot tell you what is safe to build on.
What pre-alpha means here#
- The memory format is stable. The L5 manifest, spec
0.1, has not had a breaking change since it was published, and every manifest declares the version it conforms to. When the spec does change, the major version bumps and a migration path ships with it. - The engine is still moving. CLI flags, MCP tool parameters, and the shape of tool responses can change between minor versions. Each change is listed in the changelog with the version that made it.
- It runs in production for its authors. Every agent used to build Bourdon federates through it, on several machines, every day. That is not the same as a claim that it is production-ready for you; it means the failure modes you will hit are ones we hit first.
- "Not ready for production use" in the repository README is the honest summary, and it stays there until 1.0.
Current release#
| Python package | bourdon 0.22.0 on PyPI, released 2026-09-17 |
| npm package | bourdon 0.18.0 |
| Container | bourdonai/bourdon:0.22.0 (also latest) on Docker Hub and the GitLab registry, same digest |
| Homebrew | bourdonai/bourdon/bourdon, bottles for Apple silicon macOS 26 and ARM64 Ubuntu 24.04 |
| Python | 3.10 or newer |
| Platforms | macOS, Linux, Windows (WSL recommended) |
Stable contracts#
Other software may depend on these. They change only with a major version of the contract itself.
| Contract | Version | Where |
|---|---|---|
| L5 manifest schema | 0.1 | https://bourdon.ai/schema/L5_manifest_v0.1.json, byte-checked against the repository on every site build |
bourdon.agents/v1 | 1 | bourdon agents --json, export_agents |
bourdon.roster/v1 | 1 | bourdon agents list --json |
codex-turn-brief/v1 | 1 | compile_codex_turn |
| Participant contract | spec/PARTICIPANT_CONTRACT.md | |
| Conformance fixtures | conformance/, regenerated and diffed in CI so a behaviour change cannot land silently |
What may still change#
- Tool parameter names and response fields on the MCP server, other than the contracts above.
- CLI subcommand flags. Subcommand names have been additive so far.
- The peer federation wire protocol (HTTP, bearer tokens, depth one). The semantics are settled; the transport details are not frozen.
- The Claude Code hooks, the live evaluation tooling, and the recognition string shape (0.21.0), and the usefulness signal and per-agent L1 source cache (0.22.0).
Release history#
| Version | Date | Headline |
|---|---|---|
| 0.22.0 | 2026-09-17 | The hooks close their own loop (usefulness signal wired, hook stop), L1 stays fresh from per-agent exports, doctor staleness fixes, and the container image ships Debian's security fixes: 43 fixable HIGH/CRITICAL OS findings in 0.21.0, none in 0.22.0 |
| 0.21.0 | 2026-09-17 | Recognition judged by its first sentence: entity hygiene, fuzzy tier, clustering and ranking, a gloss in the recognition string, one hydration door, Claude Code hooks as product, live evaluation and a usefulness signal |
| 0.20.0 | 2026-09-17 | Lovable participant (tenth surface, first cloud-native); stable member identities, library enrollment, describe_caller; Homebrew and GitLab Releases as gated publish channels |
| 0.19.0 | 2026-08-24 | Consent-based federation roster, bourdon agents, bourdon console, bourdon sync stage |
| 0.18.0 | 2026-08-17 | Schema-driven clamping so readers can never emit an invalid row; store can no longer be bricked by a tightened filename policy |
| 0.17.0 | 2026-08-17 | Version history and rollback: list_memory_versions, explain_memory_change, rollback_agent_memory |
| 0.16.0, 0.16.1 | 2026-08-09 | OAuth front door for claude.ai and ChatGPT connectors |
| 0.15.0 to 0.15.2 | 2026-08-04 | Homebrew bottles, release hardening |
| 0.14.0 | 2026-08-04 | Drift surfacing: a vendor format change is reported at turn start |
| 0.13.0 | 2026-08-03 | Reproducible CI resolution, pinned constraint set |
| 0.12.5 | 2026-07-27 | Hermes Agent participant |
Every release before these, back to 0.0.1 in April 2026, is on the GitLab releases page with notes. The full change list is CHANGELOG.md.
What every change passes before it ships#
A change reaches main only through a pull request whose checks are green, and the checks are required by branch protection rather than convention:
| Gate | What it catches |
|---|---|
pytest, over 2,800 tests | behaviour, including negative tests for every security control on the Security page |
| Python 3.10 and 3.11 matrix | the supported-version claim is executed, not written |
ruff, mypy, bandit | style, types, and common Python security mistakes |
pip-audit against a pinned constraint set | known-vulnerable dependencies; resolution is reproducible |
| contamination gate | operator-specific paths or identifiers leaking into a public tree |
gitleaks (pinned, checksummed) | secrets in the tree |
| leak-audit fixture | bourdon audit-leaks runs against a real manifest so it cannot pass by scanning nothing |
| conformance regeneration | the cross-implementation fixtures are rebuilt and diffed |
wheel build, twine check, fresh-venv smoke install | the artifact that ships is the artifact that was tested |
On a tag, the pipeline additionally verifies the tag matches pyproject.toml, then publishes to PyPI through trusted publishing and to the container registries.
Evidence rather than claims#
Performance and behaviour numbers on this site come from dated, reproducible field tests, each with its method and its limits written down: recognition latency on a local model, cross-account recognition on a fresh machine, and cross-machine fallback memory. They are on the Field tests page, and the running log of what did and did not hold is the findings journal.
Where to report things#
- Bugs and questions: GitLab issues, or [email protected] if you would rather write.
- Security: the process in
SECURITY.md; please do not open a public issue first. - A new agent adapter:
docs/AUTHORING_A_PARTICIPANT.md, then a pull request. Two shipping adapters arrived this way.