ADR-0002: Repository Strategy¶
Status: Accepted
Date: 2026-07-23
Related Documents: - ARCHITECTURE.md - ROADMAP.md
Supersedes: None
Context¶
Trussium is intended to evolve into a cloud-native platform consisting of multiple independently developed components.
These components include the runtime, command-line interface (CLI), Kubernetes operator, language-specific SDKs, documentation, deployment assets, and example applications.
As the ecosystem grows, contributors should be able to work on individual components without introducing unnecessary coupling between unrelated projects.
A repository strategy is therefore required to define how the Trussium ecosystem is organized and maintained.
Decision¶
Trussium adopts a multi-repository strategy.
Each major component is maintained in its own repository with independent development, release, and versioning lifecycles.
The current repository set includes:
| Repository | Responsibility |
|---|---|
| trussium | Core runtime platform |
| trussium-helm | Helm chart distribution |
| trussium-operator | Kubernetes operator |
| trussiumhq.github.io | Published documentation site |
| trussium-sdk-python | Python SDK |
| trussium-sdk-go | Go SDK |
| trussium-sdk-typescript | TypeScript SDK |
| trussium-provider-vllm | vLLM provider adapter |
| trussium-provider-anthropic | Anthropic provider adapter |
| trussium-provider-libretranslate | LibreTranslate provider adapter |
| trussium-provider-piper | Piper speech provider adapter |
Each repository owns its own codebase, issue tracking, release cadence, and semantic versioning.
Rationale¶
The Trussium ecosystem contains components with different responsibilities, programming languages, contributor groups, and release frequencies.
Separating these components into dedicated repositories provides several advantages:
- Independent release cycles
- Clear ownership boundaries
- Smaller repositories
- Reduced build complexity
- Simpler dependency management
- Language-specific tooling
- Easier onboarding for contributors
This approach aligns with the modular nature of the Trussium architecture.
Versioning¶
Each repository follows Semantic Versioning independently.
For example:
| Repository | Version |
|---|---|
| trussium-runtime | v1.2.0 |
| trussium-cli | v0.7.0 |
| trussium-sdk-python | v1.1.3 |
Repositories are not required to share identical version numbers.
Version numbers reflect the maturity and release cadence of each individual component.
Release Strategy¶
Each repository is responsible for its own release process.
Releases are expected to use:
- Semantic Versioning
- Conventional Commits
- Automated GitHub Actions
- Automated Git tags
- Automated GitHub Releases
- Generated changelogs
Release automation should be consistent across all Trussium repositories where practical.
Consequences¶
Positive¶
- Components evolve independently.
- Cleaner separation of concerns.
- Faster CI/CD pipelines.
- Easier contributor onboarding.
- Smaller pull requests.
- Independent release schedules.
- Better language-specific tooling.
Negative¶
- Cross-repository changes require coordination.
- More repositories to maintain.
- Shared standards must be documented consistently.
- Version compatibility between repositories must be managed carefully.
These trade-offs are considered acceptable for a long-lived cloud-native platform.
Alternatives Considered¶
Option 1 — Monorepo¶
Advantages
- Single repository.
- Easier cross-component refactoring.
- Simplified dependency updates.
- Unified issue tracking.
Rejected because:
- Increased repository size.
- Slower CI/CD pipelines.
- Multiple languages increase tooling complexity.
- Contributors download unrelated code.
- Independent release cycles become more difficult.
Option 2 — Hybrid Repository Structure¶
Advantages
- Shared repositories for closely related projects.
- Fewer repositories overall.
Rejected because:
- Repository boundaries become unclear over time.
- Components may become tightly coupled.
- Ownership becomes less obvious.
Option 3 — Multi-Repository¶
Advantages
- Strong separation of concerns.
- Independent releases.
- Modular ecosystem.
- Clear ownership boundaries.
- Language-specific tooling.
- Better scalability.
Accepted as the long-term repository strategy for Trussium.
Compliance¶
New repositories should only be created when they represent a distinct architectural component with an independent lifecycle.
Repositories should not be split solely for organizational convenience.
Any significant changes to the repository strategy must be documented through a new Architecture Decision Record.