Demos
The contrib/demo/ directory contains self-contained scenarios that each
exercise one or more ahdapa features. Every demo ships with a configuration
file, a static users or clients file, and a run.sh script. Most scripts
exit 0 on pass and 1 on failure and are run as CI integration tests after
every successful build.
Quick-start — basic single-node run
For an unstructured single-node session with no particular feature focus, use the top-level script:
bash contrib/demo/run.sh
The script builds the WebUI if webui/dist/ is absent, then locates the
ahdapa binary (system-installed PATH → target/release/ahdapa →
target/debug/ahdapa → cargo build) and prints the resolved path before
starting. It starts ahdapa at http://127.0.0.1:8080 using
contrib/demo/ahdapa.sample.toml. Credentials: alice / alice123,
bob / bob123, carol / carol123. Press Ctrl-C to stop.
Demo overview
| Demo | Features exercised | Interactive |
|---|---|---|
| cluster | CRDT gossip, three-node full-mesh, TLS, cross-node token issuance and introspection | yes (--interactive) |
| federation | IdP-to-IdP delegation, OIDC dynamic registration, federated account linking | yes (Ctrl-C) |
| github | GitHub as upstream OAuth2 provider, numeric-ID subject claim | yes (Ctrl-C) |
| ipa | Ansible-based FreeIPA + ahdapa production deployment | no (infrastructure) |
| obo | RFC 8693 OBO token exchange, HBAC delegation targets, act claim chains, actor gate | yes (--interactive) |
| passkey | WebAuthn credential registration and authentication without FreeIPA | yes (Ctrl-C) |
| static-clients | TOML-seeded OAuth2 clients, write-protection, identity directory API for SSSD | yes (--interactive) |
Each demo page describes:
- what it shows,
- prerequisites,
- how to run it (with example output),
- how to explore it interactively where applicable.
Common options
Binary selection
All demo scripts use the same binary selection order:
- System-installed
ahdapafound in$PATH(resolved to its full absolute path). target/release/ahdapa— a release build in the repository workspace.target/debug/ahdapa— a debug build in the repository workspace.- Falls back to
cargo build(produces a debug binary) if none of the above exist.
The selected path is printed before the server starts:
Using binary: /usr/bin/ahdapa
Log verbosity
All scripts default to RUST_LOG=ahdapa=debug,info (ahdapa debug messages
plus info level for all other crates). Set RUST_LOG in the environment
before running a script to override:
# Quieter — ahdapa info only
RUST_LOG=info contrib/demo/run.sh
# More verbose — trace everything
RUST_LOG=trace contrib/demo/run.sh