Thank you for investing your time in contributing to Ortie.
Whether you are a human or an AI agent, read these in order before touching the code:
- the Pimalaya README for what the project is and how its repositories stack;
- the Pimalaya CONTRIBUTING guide, which chains to the shared architecture and guidelines;
- the inline header documentation, starting with src/main.rs: it is the architecture document of this crate;
- the cairn/ folder, which follows Cairn:
spec/is current truth,changes/holds in-flight proposals, andlog/is the dated history.
Everything below documents only what differs from the Pimalaya standards.
Ortie is a pure CLI binary: the glue between a user's TOML configuration and two engines it drives. Fixes usually land in one of three places, so triage before patching:
- OAuth wire semantics (grants, PKCE, token and registration requests) belong in io-oauth;
- service discovery consumed by the wizard belongs in io-pim-discovery;
- configuration shape, token storage, hooks and command UX live here.
The shared clap, printer and prompt primitives come from pimalaya/cli, the TOML loader and secret resolution from pimalaya/config, and the TCP and TLS plumbing from pimalaya/stream.
The binary always ships the full CLI; the only cargo features left are the TLS providers (rustls-ring default, rustls-aws, native-tls), vendored and notify. Build against a non-default provider to check it still compiles:
cargo build --no-default-features --features native-tls