Versioning
BSP uses semantic versioning (MAJOR.MINOR.PATCH) following semver.org rules.
Release Version
The release version is the git tag — v{{BSP_VERSION}}, v1.0.0, etc. This is the version implementers and consumers reference in documentation, dependency declarations, and compatibility checks.
The version string (without the v prefix) appears in:
- The
/.well-known/bspmanifest root —BSP.version - Each service definition —
services["io.bsp.*"].version - Each capability definition —
capabilities[*].version
{
"BSP": {
"version": "{{BSP_VERSION}}",
"services": {
"io.bsp.agents": { "version": "{{BSP_VERSION}}", "..." : "..." }
},
"capabilities": [
{ "name": "io.bsp.agents.commands", "version": "{{BSP_VERSION}}", "..." : "..." }
]
}
}
Compatibility Rules
| Change type | Bump |
|---|---|
| Breaking changes — field removal, type change, semantic change | MAJOR |
| Additive changes — new optional fields, new capabilities | MINOR |
| Documentation, clarifications, non-breaking fixes | PATCH |
- Consumers must ignore unknown fields — forward compatibility
- A
MAJORbump signals breaking changes; consumers should review the changelog - Multiple capabilities can have different versions in the same manifest
Namespace Convention
All BSP identifiers use reverse domain notation: io.bsp.{service}.{capability}.
Examples:
io.bsp.agents.registryio.bsp.agents.commandsio.bsp.agents.events
Implementation-specific capabilities use their own namespace (e.g. com.example.custom-capability).