- CLAUDE.md: session protocol, architecture overview, spec pointers, workplan convention, state-hub repo ID (8a99bb74, netkingdom domain) - README.md: replace repo-seed placeholder with KeyCape description Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.6 KiB
KeyCape — Claude Code Instructions
What This Repo Is
KeyCape is the lightweight IAM component of NetKingdom.
"Prepare for Keycloak without Keycloak"
KeyCape implements the NetKingdom IAM Profile — a versioned OIDC/PKCE contract that NetKingdom applications integrate against. It orchestrates:
| Component | Role |
|---|---|
| Authelia | OIDC provider / session / tokens |
| LLDAP | Lightweight identity directory |
| privacyIDEA | MFA authority |
Keycape is intentionally replaceable by Keycloak in expanded mode. All apps must target the profile, not Keycape or Keycloak incidentals.
Custodian State Hub Integration
- Domain:
netkingdom - Repo ID:
8a99bb74-1ec0-4478-ac70-35a7cddb0e3c - State Hub API:
http://127.0.0.1:8000(runcd ~/the-custodian/state-hub && make apiif offline)
Session Protocol
Start of every session:
get_domain_summary("netkingdom")
This gives the full picture of active workstreams, blocking decisions, and recent
progress for the NetKingdom domain at ~10% of the cost of get_state_summary().
During work:
record_decision()for any architectural choice (profile extensions, backend selection, etc.)add_progress_event()for milestones, blockers, discoveriesresolve_decision()once a decision is closed
End of every session:
add_progress_event(summary="...", event_type="...", workstream_id="<active ws id>")
After modifying workplan files, run:
cd ~/the-custodian/state-hub && make fix-consistency REPO=key-cape
Key Documents
| Document | Path | Purpose |
|---|---|---|
| Keycape Specification v0.1 | wiki/KeyCapeSpecification_v0.1.md |
Architecture, design intent, objectives |
| Normative Specification Pack v0.1 | wiki/KeyCapeSpecificationPack_v0.1.md |
Normative spec for implementation agents: identity model, LDAP schema, error taxonomy, telemetry, migration contract, acceptance test matrix |
Architecture
key-cape/
wiki/ # Specifications (read before implementing)
workplans/ # Implementation workplans (ADR-001 convention)
src/ # Implementation (to be created)
tests/ # Test suite (to be created)
Lightweight mode stack
Application ──→ NetKingdom IAM Profile
│
KeyCape ←── config translation, claim normalization
/ | \
Authelia LLDAP privacyIDEA
Expanded mode stack (Keycape → Keycloak)
Application ──→ NetKingdom IAM Profile
│
Keycloak (same profile, different runtime)
/ \
LDAP privacyIDEA
Implementation Priorities (from spec)
- Profile endpoints — OIDC discovery, authorization, token, JWKS, userinfo
- Canonical identity model — product-neutral user/group/client schema
- Claim normalization — stable claim set regardless of backend quirks
- Unsupported-feature enforcement — structured errors, never silent emulation
- Telemetry — demand visibility for unsupported features and auth events
- Migration tooling — export/validate for LLDAP → Keycloak path
Workplan Convention (ADR-001)
Workplans live in workplans/<id>-<slug>.md with YAML frontmatter:
id: KEY-WP-0001
type: workplan
title: "..."
domain: netkingdom
repo: key-cape
status: todo|active|done
owner: Bernd
topic_slug: netkingdom
Tasks are embedded as ## Task Title\n```task\nid: ...\nstatus: todo\n```\n blocks.