docs: update all documentation for session changes
CLAUDE.md: - Agent registry auto-heal note (in-memory, JWT fallback) - Usage analytics (ClickHouse usage_events table) HOWTO.md: - Architecture diagram: added deploy-demo (NodePort 30092) and cameleer-demo namespace - Access URLs: added Deploy Demo - Agent registry: server restart resilience documentation - Route control: CommandGroupResponse note ui/README.md: - Fixed outdated generate-api command - Added DS version (v0.1.26) - Fixed VITE_API_TARGET (30081 not 30090) - Added key features section (cmd-k, LIVE mode, route control, event icons) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -37,11 +37,12 @@ java -jar cameleer3-server-app/target/cameleer3-server-app-1.0-SNAPSHOT.jar
|
|||||||
- Depends on `com.cameleer3:cameleer3-common` from Gitea Maven registry
|
- Depends on `com.cameleer3:cameleer3-common` from Gitea Maven registry
|
||||||
- Jackson `JavaTimeModule` for `Instant` deserialization
|
- Jackson `JavaTimeModule` for `Instant` deserialization
|
||||||
- Communication: receives HTTP POST data from agents (executions, diagrams, metrics, logs), serves SSE event streams for config push/commands (config-update, deep-trace, replay, route-control)
|
- Communication: receives HTTP POST data from agents (executions, diagrams, metrics, logs), serves SSE event streams for config push/commands (config-update, deep-trace, replay, route-control)
|
||||||
- Maintains agent instance registry with states: LIVE → STALE → DEAD
|
- Maintains agent instance registry (in-memory) with states: LIVE → STALE → DEAD. Auto-heals from JWT claims on heartbeat/SSE after server restart. Route catalog falls back to ClickHouse stats for route discovery when registry has incomplete data.
|
||||||
- Storage: PostgreSQL for RBAC, config, and audit; ClickHouse for all observability data (executions, search, logs, metrics, stats, diagrams)
|
- Storage: PostgreSQL for RBAC, config, and audit; ClickHouse for all observability data (executions, search, logs, metrics, stats, diagrams)
|
||||||
- Security: JWT auth with RBAC (AGENT/VIEWER/OPERATOR/ADMIN roles), Ed25519 config signing, bootstrap token for registration
|
- 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 admin API, stored in database (`server_config` table)
|
- OIDC: Optional external identity provider support (token exchange pattern). Configured via admin API, stored in database (`server_config` table)
|
||||||
- User persistence: PostgreSQL `users` table, admin CRUD at `/api/v1/admin/users`
|
- User persistence: PostgreSQL `users` table, admin CRUD at `/api/v1/admin/users`
|
||||||
|
- Usage analytics: ClickHouse `usage_events` table tracks authenticated UI requests, flushed every 5s
|
||||||
|
|
||||||
## CI/CD & Deployment
|
## CI/CD & Deployment
|
||||||
|
|
||||||
|
|||||||
9
HOWTO.md
9
HOWTO.md
@@ -343,10 +343,14 @@ curl -s -X POST http://localhost:8081/api/v1/agents/agent-1/commands/{commandId}
|
|||||||
|
|
||||||
**Agent lifecycle:** LIVE (heartbeat within 90s) → STALE (missed 3 heartbeats) → DEAD (5min after STALE). DEAD agents kept indefinitely.
|
**Agent lifecycle:** LIVE (heartbeat within 90s) → STALE (missed 3 heartbeats) → DEAD (5min after STALE). DEAD agents kept indefinitely.
|
||||||
|
|
||||||
|
**Server restart resilience:** The agent registry is in-memory and lost on server restart. Agents auto-re-register on their next heartbeat or SSE connection — the server reconstructs registry entries from JWT claims (subject, application). Route catalog uses ClickHouse execution data as fallback until agents re-register with full route IDs. Agents should also handle 404 on heartbeat by triggering a full re-registration.
|
||||||
|
|
||||||
**SSE events:** `config-update`, `deep-trace`, `replay`, `route-control` commands pushed in real time. Server sends ping keepalive every 15s.
|
**SSE events:** `config-update`, `deep-trace`, `replay`, `route-control` commands pushed in real time. Server sends ping keepalive every 15s.
|
||||||
|
|
||||||
**Command expiry:** Unacknowledged commands expire after 60 seconds.
|
**Command expiry:** Unacknowledged commands expire after 60 seconds.
|
||||||
|
|
||||||
|
**Route control responses:** Route control commands return `CommandGroupResponse` with per-agent status, response count, and timed-out agent IDs.
|
||||||
|
|
||||||
### Backpressure
|
### Backpressure
|
||||||
|
|
||||||
When the write buffer is full (default capacity: 50,000), ingestion endpoints return **503 Service Unavailable**. Already-buffered data is not lost.
|
When the write buffer is full (default capacity: 50,000), ingestion endpoints return **503 Service Unavailable**. Already-buffered data is not lost.
|
||||||
@@ -440,10 +444,14 @@ cameleer namespace:
|
|||||||
ClickHouse (StatefulSet, 10Gi PVC) ← clickhouse:8123 (ClusterIP)
|
ClickHouse (StatefulSet, 10Gi PVC) ← clickhouse:8123 (ClusterIP)
|
||||||
cameleer3-server (Deployment) ← NodePort 30081
|
cameleer3-server (Deployment) ← NodePort 30081
|
||||||
cameleer3-ui (Deployment, Nginx) ← NodePort 30090
|
cameleer3-ui (Deployment, Nginx) ← NodePort 30090
|
||||||
|
cameleer-deploy-demo (Deployment) ← NodePort 30092
|
||||||
Authentik Server (Deployment) ← NodePort 30950
|
Authentik Server (Deployment) ← NodePort 30950
|
||||||
Authentik Worker (Deployment)
|
Authentik Worker (Deployment)
|
||||||
Authentik PostgreSQL (StatefulSet, 1Gi) ← ClusterIP
|
Authentik PostgreSQL (StatefulSet, 1Gi) ← ClusterIP
|
||||||
Authentik Redis (Deployment) ← ClusterIP
|
Authentik Redis (Deployment) ← ClusterIP
|
||||||
|
|
||||||
|
cameleer-demo namespace:
|
||||||
|
(deployed Camel applications — managed by cameleer-deploy-demo)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Access (from your network)
|
### Access (from your network)
|
||||||
@@ -453,6 +461,7 @@ cameleer namespace:
|
|||||||
| Web UI | `http://192.168.50.86:30090` |
|
| Web UI | `http://192.168.50.86:30090` |
|
||||||
| Server API | `http://192.168.50.86:30081/api/v1/health` |
|
| Server API | `http://192.168.50.86:30081/api/v1/health` |
|
||||||
| Swagger UI | `http://192.168.50.86:30081/api/v1/swagger-ui.html` |
|
| Swagger UI | `http://192.168.50.86:30081/api/v1/swagger-ui.html` |
|
||||||
|
| Deploy Demo | `http://192.168.50.86:30092` |
|
||||||
| Authentik | `http://192.168.50.86:30950` |
|
| Authentik | `http://192.168.50.86:30950` |
|
||||||
|
|
||||||
### CI/CD Pipeline
|
### CI/CD Pipeline
|
||||||
|
|||||||
14
ui/README.md
14
ui/README.md
@@ -1,6 +1,6 @@
|
|||||||
# Cameleer3 UI
|
# Cameleer3 UI
|
||||||
|
|
||||||
React SPA built with [@cameleer/design-system](https://gitea.siegeln.net/cameleer/design-system), TanStack Query, and Zustand.
|
React SPA built with [@cameleer/design-system](https://gitea.siegeln.net/cameleer/design-system) v0.1.26, TanStack Query, and Zustand.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ npm run dev
|
|||||||
By default the dev server proxies `/api/*` to `http://localhost:8081`. To proxy to a remote server instead:
|
By default the dev server proxies `/api/*` to `http://localhost:8081`. To proxy to a remote server instead:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
VITE_API_TARGET=http://192.168.50.86:30090 npm run dev
|
VITE_API_TARGET=http://192.168.50.86:30081 npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
No CORS issues — Vite's proxy makes API calls server-side.
|
No CORS issues — Vite's proxy makes API calls server-side.
|
||||||
@@ -28,5 +28,13 @@ npm run build
|
|||||||
Regenerate TypeScript types from a running backend:
|
Regenerate TypeScript types from a running backend:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run generate-api:live
|
npm run generate-api # Requires backend running on :8081
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Key Features
|
||||||
|
|
||||||
|
- **Composable sidebar** with accordion behavior (Applications / Starred / Admin sections)
|
||||||
|
- **Context-aware cmd-k search**: shows apps/routes/exchanges on operational pages, users/groups/roles on admin pages
|
||||||
|
- **LIVE mode toggle**: when ON, queries poll at intervals (5s-30s); when OFF, sidebar clicks trigger manual refresh
|
||||||
|
- **Route control bar** with state-aware buttons (start/stop/suspend/resume) and confirmation dialogs
|
||||||
|
- **Event-type icons** in agent timeline with severity-based coloring
|
||||||
|
|||||||
Reference in New Issue
Block a user