Design Docs
Architecture decisions and design philosophy for server-less.
Core Design
- Impl-First Design — Protocol projections, naming conventions, return types
- Inference vs Configuration — Full reference for all inference rules and overrides
- Param Attributes —
#[param]cross-protocol design, clap alignment, positional ordering - Error Mapping —
#[derive(ServerlessError)]inference and protocol dispatch
Composition & Coordination
- Extension Coordination — How derives compose via
Serve - Parse-Time Coordination — Why compile-time inspection over runtime registries
- Protocol Naming —
PascalCasederive →snake_casemethod convention - Blessed Presets —
#[server],#[rpc],#[tool],#[program]presets
Feature-Specific
- CLI Attributes — Method-level
#[cli(...)]attributes:default,hidden,skip,helper,name,display_with - CLI Output Formatting — Display default,
--json/--jq/--output-schema - CLI Capability-Wiring Invariant — the "declared-but-silently-inert" footgun class, the macro-terminated/name-referenced/convention-referenced taxonomy, and the register↔consume ledger that closes it
- Route & Response Attributes —
#[route]and#[response]HTTP overrides - Mount Points — Nested subcommand composition via
&Treturn types - OpenAPI Composition — Multi-protocol OpenAPI spec composition
- Config Management —
#[derive(Config)], config sources, and the generatedconfigsubcommand - Application Metadata —
#[app]for name, description, version, homepage across all protocols
Process
- Open Questions — Unresolved design questions
- Iteration Log — Development history
- Implementation Notes — Early implementation snapshot