bascule-oss/CLAUDE.md
Tyler King 2fa92f8635 docs: comprehensive documentation + developer experience polish
New files:
  CONTRIBUTING.md — dev setup, code style, PR process
  CLAUDE.md — workspace context for Claude Code
  Makefile — build, test, lint, fmt, docker, helm-lint, dev, ci
  .editorconfig — consistent formatting
  rustfmt.toml — Rust formatting config
  docs/kubernetes.md — Helm install, values, architecture
  docs/bascule-shell.md — client shell install, config, TPM
  charts/bascule/README.md — Helm quick start

Updated:
  README.md — accurate feature matrix, clear shipped vs planned
  config/bascule.example.toml — full reference (72 lines, all fields)

All 15 README links verified valid.
Helm lint clean. Build passes. 0 substrate deps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 10:53:08 -04:00

1.3 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
  • crates/bascule-server/ — Binary: CLI wrapper, config loading, telemetry setup
  • crates/bascule-auth-agent-id/ — Optional: Entra Agent ID auth provider
  • crates/bascule-shell/ — Binary: Identity-aware login shell with TPM attestation
  • charts/bascule/ — Helm chart for K8s deployment
  • images/ — Curated container images for operator environments

Key traits

  • AuthProvider (auth.rs) — implement to add auth methods
  • SessionHandler (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)

  • agent-id — Entra Agent ID auth

Rules

  • Zero substrate/chronicle/gsap dependencies
  • No unwrap() in production code
  • cargo fmt + cargo clippy must pass