The public release path is GitHub Actions. BuildBuddy release lanes are an
owner-only acceleration path and use the same Make-level contract.
Versioning and Compatibility
Meerkat is pre-1.0 and releases on a fast0.x.y patch train. The policy,
stated plainly so downstream embedders can build against it:
- Patch releases may change public APIs. A
0.7.x→0.7.(x+1)bump can add required fields, change function signatures, or remove items. Cargo’s default caret requirement (meerkat = "0.7") treats the whole0.7family as compatible, which is stronger than this project guarantees. - Embedders must pin exact versions. Libraries and applications that
build against Meerkat crates should declare
=0.7.19-style exact pins and move deliberately, reading the changelog for each hop. - The only supported crate combination is exact version parity. All
workspace crates (
meerkat,meerkat-core,meerkat-runtime, …), the Python/TypeScript/Web SDKs, andContractVersion::CURRENTare lock-stepped to one version per release. Mixing crate versions across releases is unsupported. - Breaking API changes are flagged in the changelog. Public-signature
changes land under a
### Breakingheading inCHANGELOG.mdfor the release that ships them; observable default-behavior changes land under### Changed. A release with neither heading is intended to be a drop-in replacement for the previous patch version.
Downstream compatibility matrix
Known downstream projects that embed Meerkat, and the exact versions they were built and verified against:
Downstream projects should declare their supported Meerkat version as an
exact pin in their own
Cargo.toml (not only in Cargo.lock), so consumers
can read the supported combination without archaeologizing lockfiles at
release tags.
Release Checks
Run the release gate before cutting a tag:Binary Artifacts
Release assets are built for these binaries:rkatrkat-rpcrkat-restrkat-mcp
x86_64-unknown-linux-gnuaarch64-unknown-linux-gnuaarch64-apple-darwinx86_64-apple-darwinx86_64-pc-windows-msvc
checksums.sha256index.json
Homebrew Tap
The featured CLI install path is the Homebrew tap:rkat plus the companion binaries:
rkat-rpcrkat-restrkat-mcp
SDK Bootstrap
Python and TypeScript SDK users should not need a local Rust toolchain.
The SDKs are clients. They start or connect to the JSON-RPC surface rather than
embedding a separate runtime implementation.
Release Workflow
- Complete CI on the exact release commit and emit its tree-bound attestation.
- Push the tag for that same commit; the tag gate consumes the attestation instead of recomputing CI.
- Build platform binaries.
- Create the GitHub release and upload binary assets.
- Update the Homebrew tap formula.
- Publish Rust crates.
- Publish Python, TypeScript, and Web SDK packages.
- Run install smoke checks for at least one platform.
BuildBuddy
Cargo is the default backend. BuildBuddy is selected explicitly:make buildbuddy-doctor when the local BuildBuddy setup looks suspicious.
It checks the API key, pinned bb CLI, generated Bazel files, selector
behavior, and lane isolation without printing secrets.
Credentials
Registry credentials are independent:
Keep tokens in CI secrets or a local secret store. Do not commit registry
tokens, private BuildBuddy endpoints, or enterprise infrastructure names.
Hard Rules
- Release only from tagged versions.
- Never publish mismatched Rust, Python, TypeScript, or contract versions.
- Never publish SDKs from a commit with stale generated schema artifacts.
- Keep public binary names stable:
rkat,rkat-rpc,rkat-rest,rkat-mcp. - Publish checksums and an index for release binary consumers.
