# Boxology
Boxology is an early-stage framework for building software as independent boxes that humans define and agents implement. Humans own box boundaries, typed interfaces, data models, and allowed connections; implementations can evolve behind compatible contracts.
V0 was completed on 2026-08-09. The accepted stream specs describe its delivered boundary.
Applications built with Boxology are separate products and are not included in this repository.
Boxology `0.1.1` tools are published on crates.io. Building this checkout requires Rust 1.97.1.
## Quick start
Install the initializer and checker from crates.io, then initialize an existing empty target
directory (a lone `.git` is allowed):
```sh
cargo install boxology-init --locked
cargo install boxology-cli --locked
boxology-init --name example --target <empty-directory>
cd <empty-directory>
cargo build --workspace
boxology check
```
Update with `cargo install --force boxology-init --locked` and
`cargo install --force boxology-cli --locked`; add `--version 0.1.1` to pin this release.
To install directly from the source repository instead:
```sh
cargo install --git https://github.com/fontanierh/boxology --locked boxology-init
cargo install --git https://github.com/fontanierh/boxology --locked boxology-cli
```
The generated project README owns that project's invocation contract.
Hand-managed boxes may name their generated contract dependency after the domain instead of using
a framework-shaped Cargo alias. Put the selected Rust crate name at the start of `contract.rs`:
```rust
boxology::contract! {
contract_crate = review_contract;
// declarations and capabilities
}
```
and use the same key in `Cargo.toml`, for example
`review_contract = { package = "review-contract", path = "../generated/contract" }`. Omitting
`contract_crate` preserves the generated-project default, `boxology_generated_contract`. When a
project-local name is selected, pass the same name to the implementation attribute:
```rust
#[boxology::implementation(contract_crate = review_contract)]
impl ReviewService {
// ordinary async capability methods
}
```
## Release procedure
Run `cargo xtask ci --base origin/main`, then `cargo xtask release preflight`. Preflight checks the
exact `0.1.1` closure and order, inspects every crate's planned file inventory (including README and
both licenses), and creates, verifies, and inspects the real dependency-free root `.crate`. It does
not claim to package dependent crates: Cargo requires their predecessors to be visible on crates.io.
Configure Cargo's crates.io credentials securely, then publish exactly the next crate shown by the
order using `BOXOLOGY_RELEASE_PUBLISH=1 cargo xtask release publish <crate-name>`. Each invocation
recognizes the already-visible prefix, rejects gaps or an out-of-order name, runs a real crates.io
publish dry-run, and publishes only that crate. Wait for it to become visible before invoking the
next. After the sequence, prove fresh registry installs with the Quick start commands and smoke-test
`boxology --help` plus an initialized project. Tag the proven release commit and create its GitHub
Release only after that registry smoke test passes. Tests and preflight never publish.
## Documentation
See the [changelog](CHANGELOG.md) for release history and known boundaries. Start with the
concise [white paper](boxology-whitepaper.md), then use its linked sections to open the detailed
documents. The [product contract](boxology-details/07-product-contract.md) separates long-term
direction from the completed foundation milestone.
- [Boxes](boxology-details/01-boxes.md)
- [Packages, providers, and compositions](boxology-details/02-packages.md)
- [Runtime](boxology-details/03-runtime.md)
- [Contract evolution and deprecation](boxology-details/04-evolution.md)
- [Software factory](boxology-details/05-software-factory.md)
- [Quality and authority](boxology-details/06-quality-and-authority.md)
- [Product contract and foundation milestone](boxology-details/07-product-contract.md)
- [Rust build topology](boxology-details/08-rust-build-topology.md)
- [Canonical capability contract](boxology-details/09-capability-contract.md)
- [V0 streams](boxology-details/11-v0-streams.md)
## License
Boxology is dual-licensed under [MIT](LICENSE-MIT) or [Apache License 2.0](LICENSE-APACHE), at your option.
## Contributing and security
See [CONTRIBUTING.md](CONTRIBUTING.md) before proposing a change and [SECURITY.md](SECURITY.md)
before reporting a vulnerability. Community participation is governed by the
[Contributor Covenant](CODE_OF_CONDUCT.md).