Files
cameleer-server/CLAUDE.md
hsiegeln 3438216fd9
Some checks failed
CI / build (push) Successful in 1m2s
CI / docker (push) Successful in 15s
CI / deploy (push) Has been cancelled
Update docs for RBAC, OIDC, and user management
Add RBAC role table, OIDC login flow, user admin API examples, and
new configuration properties to HOWTO.md. Update CLAUDE.md with RBAC
roles, OIDC support, and user persistence. Add user repository to
ARCHITECTURE.md component table.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 12:41:41 +01:00

2.7 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project

Cameleer3 Server — observability server that receives, stores, and serves Camel route execution data and route diagrams from Cameleer3 agents. Pushes config and commands to agents via SSE.

  • cameleer3 (https://gitea.siegeln.net/cameleer/cameleer3) — the Java agent that instruments Camel applications
  • Protocol defined in cameleer3-common/PROTOCOL.md in the agent repo
  • This server depends on com.cameleer3:cameleer3-common (shared models and graph API)

Modules

  • cameleer3-server-core — domain logic, storage, agent registry
  • cameleer3-server-app — Spring Boot web app, REST controllers, SSE, static resources

Build Commands

mvn clean compile          # Compile all modules
mvn clean verify           # Full build with tests

Run

java -jar cameleer3-server-app/target/cameleer3-server-app-1.0-SNAPSHOT.jar

Key Conventions

  • Java 17+ required
  • Spring Boot 3.4.3 parent POM
  • Depends on com.cameleer3:cameleer3-common from Gitea Maven registry
  • Jackson JavaTimeModule for Instant deserialization
  • Communication: receives HTTP POST data from agents, serves SSE event streams for config push/commands
  • Maintains agent instance registry with states: LIVE → STALE → DEAD
  • Storage: ClickHouse for structured data, text index for full-text search
  • Security: JWT auth with RBAC (AGENT/VIEWER/OPERATOR/ADMIN roles), Ed25519 config signing, bootstrap token for registration
  • OIDC: Optional external identity provider support (token exchange pattern). Configured via CAMELEER_OIDC_* env vars
  • User persistence: ClickHouse users table, admin CRUD at /api/v1/admin/users

CI/CD & Deployment

  • CI workflow: .gitea/workflows/ci.yml — build → docker → deploy on push to main
  • Build step skips integration tests (-DskipITs) — Testcontainers needs Docker daemon
  • Docker: multi-stage build (Dockerfile), $BUILDPLATFORM for native Maven on ARM64 runner, amd64 runtime
  • REGISTRY_TOKEN build arg required for cameleer3-common dependency resolution
  • Registry: gitea.siegeln.net/cameleer/cameleer3-server (container images)
  • K8s manifests in deploy/ — ClickHouse StatefulSet + server Deployment + NodePort Service (30081)
  • Deployment target: k3s at 192.168.50.86, namespace cameleer
  • Secrets managed in CI deploy step (idempotent --dry-run=client | kubectl apply): cameleer-auth, clickhouse-credentials, CAMELEER_JWT_SECRET
  • K8s probes: server uses /api/v1/health, ClickHouse uses /ping
  • Docker build uses buildx registry cache + --provenance=false for Gitea compatibility