Progressive control Planned
Convenience should never be a trap. Clamp is designed so you can start with defaults and take control of any part later, without switching frameworks.
Status. This is the design model that guides the prototypes. Only the smallest level, Pico, is a finished feature.
Use → Configure → Extend → Replace → Own
USE take the default
↓
CONFIGURE change its settings
↓
EXTEND add to it
↓
REPLACE swap in your own provider, explicitly
↓
OWN drop to plain Rust for that part
Control and responsibility move together: the further down you go, the more of the behaviour is yours to maintain. Explicit replacement already exists in the prototype — selecting a different provider includes only that provider's own dependencies.
From pico to platform
Application size is not something you declare. It emerges from what you compose.
| Scale | What it adds | Status |
|---|---|---|
| Pico | Plain Rust plus Clamp::run. Zero dependencies, zero bytes of binary overhead measured. | Works |
| Nano | Foundations and small, direct composition — like example 01's injected Clock. | Prototype |
| Micro | Kernel-resolved modules — like example 02. | Prototype |
| Standard | A normal application with lifecycle, configuration and integrations. | Planned |
| Platform | Several processes from one blueprint, up to distributed systems. Example 04 is the first step. | Planned |
Profiles
A profile will be a preset — defaults, recommended modules and policies — for a kind of software: CLI, service, worker, game, simulation, device. Profiles are flat and combinable. They are never a separate edition of the framework, and nothing a profile gives you is out of reach without it. Planned
Escape hatches are first-class
Existing Rust code stays first-class. Adopting Clamp must not force a rewrite of working Axum, SQLx or Tokio code, and leaving a part of Clamp must be as supported as entering it: a paved road, not a walled garden.