Updated 9 files to reflect: Management API (axum, port 9090) — embedded in bascule-server Dioxus dashboard components (WASM web target) 6 crates in workspace (was 4) README.md: Added Management API + Dashboard features section Added dashboard row to comparison table docs/architecture.md: Updated diagram showing dual-listener architecture Added Management API section explaining Arc<SessionStore> sharing Updated crate table (6 crates) docs/configuration.md: Added [dashboard] config section reference docs/observability.md: Added Management API monitoring section with curl examples docs/quickstart.md: Added Management API quick start section docs/comparison.md: Added dashboard and TPM attestation rows CLAUDE.md + CONTRIBUTING.md: Updated crate lists and feature flags config/bascule.example.toml: Added [dashboard] section All 17 README links verified valid. Build clean. Signed-off-by: Tyler King <tking@guildhouse.dev>
1.5 KiB
1.5 KiB
CLAUDE.md — Context for Claude Code
What is this?
Bascule is an identity-aware SSH proxy. It authenticates operators via SSH keys or AI agent tokens, then connects them to a shell, remote host, or ephemeral container.
Workspace
crates/bascule-core/— Library: SSH server, auth, session backends, hooks, session storecrates/bascule-server/— Binary: SSH proxy + embedded management API (axum)crates/bascule-auth-agent-id/— Optional: Entra Agent ID auth providercrates/bascule-shell/— Binary: Identity-aware login shell with TPM attestationcrates/bascule-dashboard/— Library: Dioxus UI componentscrates/bascule-dashboard-web/— Binary: WASM web dashboard targetcharts/bascule/— Helm chart for K8s deploymentimages/— Curated container images for operator environments
Key traits
AuthProvider(auth.rs) — implement to add auth methodsSessionHandler(hooks.rs) — implement to add session policy
Commands
cargo build --all # Build everything
cargo test --all # Run tests
cargo clippy --all-targets # Lint
make ci # Full CI check
make dev # Run locally in dev mode
Feature flags (bascule-server)
dashboard— Management API on port 9090 (default on)agent-id— Entra Agent ID auth
Rules
- Zero substrate/chronicle/gsap dependencies
- No unwrap() in production code
- cargo fmt + cargo clippy must pass