2026-03-11 10:06:17 +01:00
|
|
|
server:
|
|
|
|
|
port: 8081
|
feat(01-01): add ClickHouse dependencies, Docker Compose, schema, and app config
- Add clickhouse-jdbc, springdoc-openapi, actuator, testcontainers deps
- Add slf4j-api to core module
- Create Docker Compose with ClickHouse service on ports 8123/9000
- Create ClickHouse DDL: route_executions, route_diagrams, agent_metrics
- Configure application.yml with datasource, ingestion buffer, springdoc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:47:20 +01:00
|
|
|
|
|
|
|
|
spring:
|
2026-04-08 18:22:39 +02:00
|
|
|
servlet:
|
|
|
|
|
multipart:
|
|
|
|
|
max-file-size: 200MB
|
|
|
|
|
max-request-size: 200MB
|
feat(01-01): add ClickHouse dependencies, Docker Compose, schema, and app config
- Add clickhouse-jdbc, springdoc-openapi, actuator, testcontainers deps
- Add slf4j-api to core module
- Create Docker Compose with ClickHouse service on ports 8123/9000
- Create ClickHouse DDL: route_executions, route_diagrams, agent_metrics
- Configure application.yml with datasource, ingestion buffer, springdoc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:47:20 +01:00
|
|
|
datasource:
|
2026-04-14 23:51:13 +02:00
|
|
|
url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/cameleer3?currentSchema=tenant_${cameleer.server.tenant.id}&ApplicationName=tenant_${cameleer.server.tenant.id}}
|
2026-04-04 23:24:22 +02:00
|
|
|
username: ${SPRING_DATASOURCE_USERNAME:cameleer}
|
|
|
|
|
password: ${SPRING_DATASOURCE_PASSWORD:cameleer_dev}
|
2026-03-16 18:15:33 +01:00
|
|
|
driver-class-name: org.postgresql.Driver
|
|
|
|
|
flyway:
|
|
|
|
|
enabled: true
|
|
|
|
|
locations: classpath:db/migration
|
2026-04-04 21:46:57 +02:00
|
|
|
create-schemas: true
|
feat(03-01): add agent registration controller, config, lifecycle monitor
- AgentRegistryConfig: heartbeat, stale, dead, ping, command expiry settings
- AgentRegistryBeanConfig: wires AgentRegistryService as Spring bean
- AgentLifecycleMonitor: @Scheduled lifecycle check + command expiry sweep
- AgentRegistrationController: POST /register, POST /{id}/heartbeat, GET /agents
- Updated Cameleer3ServerApplication with AgentRegistryConfig
- Updated application.yml with agent-registry section and async timeout
- 7 integration tests: register, re-register, heartbeat, list, filter, invalid status
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 18:40:57 +01:00
|
|
|
mvc:
|
|
|
|
|
async:
|
|
|
|
|
request-timeout: -1
|
feat(01-01): add ClickHouse dependencies, Docker Compose, schema, and app config
- Add clickhouse-jdbc, springdoc-openapi, actuator, testcontainers deps
- Add slf4j-api to core module
- Create Docker Compose with ClickHouse service on ports 8123/9000
- Create ClickHouse DDL: route_executions, route_diagrams, agent_metrics
- Configure application.yml with datasource, ingestion buffer, springdoc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:47:20 +01:00
|
|
|
jackson:
|
|
|
|
|
serialization:
|
|
|
|
|
write-dates-as-timestamps: false
|
|
|
|
|
deserialization:
|
|
|
|
|
fail-on-unknown-properties: false
|
|
|
|
|
|
2026-03-16 18:15:33 +01:00
|
|
|
cameleer:
|
Migrate config to cameleer.server.* naming convention
Move all configuration properties under the cameleer.server.* namespace
with all-lowercase dot-separated names and mechanical env var mapping
(dots→underscores, uppercase). This aligns with the agent's convention
(cameleer.agent.*) and establishes a predictable pattern across all
components.
Changes:
- Move 6 config prefixes under cameleer.server.*: agent-registry,
ingestion, security, license, clickhouse, and cameleer.tenant/runtime/indexer
- Rename all kebab-case properties to concatenated lowercase
(e.g., bootstrap-token → bootstraptoken, jar-storage-path → jarstoragepath)
- Update all env vars to CAMELEER_SERVER_* mechanical mapping
- Fix container-cpu-request/container-cpu-shares mismatch bug
- Remove displayName from AgentRegistrationRequest (redundant with instanceId)
- Update agent container env vars to CAMELEER_AGENT_* convention
- Update K8s manifests and CI workflow for new env var names
- Update CLAUDE.md, HOWTO.md, SERVER-CAPABILITIES.md documentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:10:51 +02:00
|
|
|
server:
|
|
|
|
|
tenant:
|
|
|
|
|
id: ${CAMELEER_SERVER_TENANT_ID:default}
|
|
|
|
|
agentregistry:
|
|
|
|
|
heartbeatintervalms: 30000
|
|
|
|
|
stalethresholdms: 90000
|
|
|
|
|
deadthresholdms: 300000
|
|
|
|
|
pingintervalms: 15000
|
|
|
|
|
commandexpiryms: 60000
|
|
|
|
|
lifecyclecheckintervalms: 10000
|
|
|
|
|
ingestion:
|
|
|
|
|
buffercapacity: 50000
|
|
|
|
|
batchsize: 5000
|
|
|
|
|
flushintervalms: 5000
|
|
|
|
|
bodysizelimit: ${CAMELEER_SERVER_INGESTION_BODYSIZELIMIT:16384}
|
|
|
|
|
runtime:
|
|
|
|
|
enabled: ${CAMELEER_SERVER_RUNTIME_ENABLED:true}
|
|
|
|
|
jarstoragepath: ${CAMELEER_SERVER_RUNTIME_JARSTORAGEPATH:/data/jars}
|
|
|
|
|
baseimage: ${CAMELEER_SERVER_RUNTIME_BASEIMAGE:cameleer-runtime-base:latest}
|
|
|
|
|
dockernetwork: ${CAMELEER_SERVER_RUNTIME_DOCKERNETWORK:cameleer}
|
|
|
|
|
agenthealthport: 9464
|
|
|
|
|
healthchecktimeout: 60
|
2026-04-11 21:33:07 +02:00
|
|
|
container:
|
|
|
|
|
memorylimit: ${CAMELEER_SERVER_RUNTIME_CONTAINER_MEMORYLIMIT:512m}
|
|
|
|
|
cpushares: ${CAMELEER_SERVER_RUNTIME_CONTAINER_CPUSHARES:512}
|
Migrate config to cameleer.server.* naming convention
Move all configuration properties under the cameleer.server.* namespace
with all-lowercase dot-separated names and mechanical env var mapping
(dots→underscores, uppercase). This aligns with the agent's convention
(cameleer.agent.*) and establishes a predictable pattern across all
components.
Changes:
- Move 6 config prefixes under cameleer.server.*: agent-registry,
ingestion, security, license, clickhouse, and cameleer.tenant/runtime/indexer
- Rename all kebab-case properties to concatenated lowercase
(e.g., bootstrap-token → bootstraptoken, jar-storage-path → jarstoragepath)
- Update all env vars to CAMELEER_SERVER_* mechanical mapping
- Fix container-cpu-request/container-cpu-shares mismatch bug
- Remove displayName from AgentRegistrationRequest (redundant with instanceId)
- Update agent container env vars to CAMELEER_AGENT_* convention
- Update K8s manifests and CI workflow for new env var names
- Update CLAUDE.md, HOWTO.md, SERVER-CAPABILITIES.md documentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:10:51 +02:00
|
|
|
routingmode: ${CAMELEER_SERVER_RUNTIME_ROUTINGMODE:path}
|
|
|
|
|
routingdomain: ${CAMELEER_SERVER_RUNTIME_ROUTINGDOMAIN:localhost}
|
|
|
|
|
serverurl: ${CAMELEER_SERVER_RUNTIME_SERVERURL:}
|
|
|
|
|
jardockervolume: ${CAMELEER_SERVER_RUNTIME_JARDOCKERVOLUME:}
|
|
|
|
|
indexer:
|
|
|
|
|
debouncems: ${CAMELEER_SERVER_INDEXER_DEBOUNCEMS:2000}
|
|
|
|
|
queuesize: ${CAMELEER_SERVER_INDEXER_QUEUESIZE:10000}
|
2026-04-12 16:19:59 +02:00
|
|
|
catalog:
|
|
|
|
|
discoveryttldays: ${CAMELEER_SERVER_CATALOG_DISCOVERYTTLDAYS:7}
|
Migrate config to cameleer.server.* naming convention
Move all configuration properties under the cameleer.server.* namespace
with all-lowercase dot-separated names and mechanical env var mapping
(dots→underscores, uppercase). This aligns with the agent's convention
(cameleer.agent.*) and establishes a predictable pattern across all
components.
Changes:
- Move 6 config prefixes under cameleer.server.*: agent-registry,
ingestion, security, license, clickhouse, and cameleer.tenant/runtime/indexer
- Rename all kebab-case properties to concatenated lowercase
(e.g., bootstrap-token → bootstraptoken, jar-storage-path → jarstoragepath)
- Update all env vars to CAMELEER_SERVER_* mechanical mapping
- Fix container-cpu-request/container-cpu-shares mismatch bug
- Remove displayName from AgentRegistrationRequest (redundant with instanceId)
- Update agent container env vars to CAMELEER_AGENT_* convention
- Update K8s manifests and CI workflow for new env var names
- Update CLAUDE.md, HOWTO.md, SERVER-CAPABILITIES.md documentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:10:51 +02:00
|
|
|
license:
|
|
|
|
|
token: ${CAMELEER_SERVER_LICENSE_TOKEN:}
|
|
|
|
|
file: ${CAMELEER_SERVER_LICENSE_FILE:}
|
|
|
|
|
publickey: ${CAMELEER_SERVER_LICENSE_PUBLICKEY:}
|
|
|
|
|
security:
|
|
|
|
|
accesstokenexpiryms: 3600000
|
|
|
|
|
refreshtokenexpiryms: 604800000
|
|
|
|
|
bootstraptoken: ${CAMELEER_SERVER_SECURITY_BOOTSTRAPTOKEN:}
|
|
|
|
|
bootstraptokenprevious: ${CAMELEER_SERVER_SECURITY_BOOTSTRAPTOKENPREVIOUS:}
|
|
|
|
|
uiuser: ${CAMELEER_SERVER_SECURITY_UIUSER:admin}
|
|
|
|
|
uipassword: ${CAMELEER_SERVER_SECURITY_UIPASSWORD:admin}
|
|
|
|
|
uiorigin: ${CAMELEER_SERVER_SECURITY_UIORIGIN:http://localhost:5173}
|
|
|
|
|
jwtsecret: ${CAMELEER_SERVER_SECURITY_JWTSECRET:}
|
|
|
|
|
corsallowedorigins: ${CAMELEER_SERVER_SECURITY_CORSALLOWEDORIGINS:}
|
2026-04-11 23:09:28 +02:00
|
|
|
infrastructureendpoints: ${CAMELEER_SERVER_SECURITY_INFRASTRUCTUREENDPOINTS:true}
|
2026-04-11 21:30:33 +02:00
|
|
|
oidc:
|
|
|
|
|
issueruri: ${CAMELEER_SERVER_SECURITY_OIDC_ISSUERURI:}
|
|
|
|
|
jwkseturi: ${CAMELEER_SERVER_SECURITY_OIDC_JWKSETURI:}
|
|
|
|
|
audience: ${CAMELEER_SERVER_SECURITY_OIDC_AUDIENCE:}
|
|
|
|
|
tlsskipverify: ${CAMELEER_SERVER_SECURITY_OIDC_TLSSKIPVERIFY:false}
|
Migrate config to cameleer.server.* naming convention
Move all configuration properties under the cameleer.server.* namespace
with all-lowercase dot-separated names and mechanical env var mapping
(dots→underscores, uppercase). This aligns with the agent's convention
(cameleer.agent.*) and establishes a predictable pattern across all
components.
Changes:
- Move 6 config prefixes under cameleer.server.*: agent-registry,
ingestion, security, license, clickhouse, and cameleer.tenant/runtime/indexer
- Rename all kebab-case properties to concatenated lowercase
(e.g., bootstrap-token → bootstraptoken, jar-storage-path → jarstoragepath)
- Update all env vars to CAMELEER_SERVER_* mechanical mapping
- Fix container-cpu-request/container-cpu-shares mismatch bug
- Remove displayName from AgentRegistrationRequest (redundant with instanceId)
- Update agent container env vars to CAMELEER_AGENT_* convention
- Update K8s manifests and CI workflow for new env var names
- Update CLAUDE.md, HOWTO.md, SERVER-CAPABILITIES.md documentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 18:10:51 +02:00
|
|
|
clickhouse:
|
|
|
|
|
url: ${CAMELEER_SERVER_CLICKHOUSE_URL:jdbc:clickhouse://localhost:8123/cameleer}
|
|
|
|
|
username: ${CAMELEER_SERVER_CLICKHOUSE_USERNAME:default}
|
|
|
|
|
password: ${CAMELEER_SERVER_CLICKHOUSE_PASSWORD:}
|
2026-03-11 20:08:30 +01:00
|
|
|
|
feat(01-01): add ClickHouse dependencies, Docker Compose, schema, and app config
- Add clickhouse-jdbc, springdoc-openapi, actuator, testcontainers deps
- Add slf4j-api to core module
- Create Docker Compose with ClickHouse service on ports 8123/9000
- Create ClickHouse DDL: route_executions, route_diagrams, agent_metrics
- Configure application.yml with datasource, ingestion buffer, springdoc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:47:20 +01:00
|
|
|
springdoc:
|
|
|
|
|
api-docs:
|
|
|
|
|
path: /api/v1/api-docs
|
|
|
|
|
swagger-ui:
|
|
|
|
|
path: /api/v1/swagger-ui
|
|
|
|
|
|
2026-04-03 14:48:30 +02:00
|
|
|
logging:
|
|
|
|
|
level:
|
|
|
|
|
com.clickhouse: INFO
|
|
|
|
|
org.apache.hc.client5: WARN
|
|
|
|
|
|
feat(01-01): add ClickHouse dependencies, Docker Compose, schema, and app config
- Add clickhouse-jdbc, springdoc-openapi, actuator, testcontainers deps
- Add slf4j-api to core module
- Create Docker Compose with ClickHouse service on ports 8123/9000
- Create ClickHouse DDL: route_executions, route_diagrams, agent_metrics
- Configure application.yml with datasource, ingestion buffer, springdoc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:47:20 +01:00
|
|
|
management:
|
|
|
|
|
endpoints:
|
|
|
|
|
web:
|
|
|
|
|
base-path: /api/v1
|
|
|
|
|
exposure:
|
feat: add Micrometer Prometheus metrics to server
Adds micrometer-registry-prometheus and exposes /api/v1/prometheus
endpoint (unauthenticated for scraping). ServerMetrics component
provides business metrics beyond default JVM/HTTP:
Gauges: agents by state, SSE connections, buffer depths (execution,
processor, log, metrics), accumulator pending exchanges.
Counters: ingestion drops (buffer_full, no_agent, no_identity),
agent transitions (went_stale, went_dead, recovered), deployment
outcomes (running, failed, degraded), auth failures (invalid_token,
revoked, oidc_rejected).
Timers: ClickHouse flush duration by type, deployment duration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 18:23:27 +02:00
|
|
|
include: health,prometheus
|
feat(01-01): add ClickHouse dependencies, Docker Compose, schema, and app config
- Add clickhouse-jdbc, springdoc-openapi, actuator, testcontainers deps
- Add slf4j-api to core module
- Create Docker Compose with ClickHouse service on ports 8123/9000
- Create ClickHouse DDL: route_executions, route_diagrams, agent_metrics
- Configure application.yml with datasource, ingestion buffer, springdoc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:47:20 +01:00
|
|
|
endpoint:
|
|
|
|
|
health:
|
|
|
|
|
show-details: always
|