Architecture
Kubernetes is the production deployment model for Siclaw:Prerequisites
- A Kubernetes cluster
- A MySQL database reachable from the cluster
- Published Siclaw images for
runtime,portal, andagentbox
Quick Start
Install from the chart in this repository:image.registry and image.tag by default.
Important Values
Current top-level values look like this:database.existingSecret.name if you do not want to pass the connection string on the command line.
Accessing the UI
The Portal Service is the front door. With default values it listens on port3003 inside the cluster and on NodePort 31003 on any node.
- Keep
portal.service.type: NodePortfor quick access viahttp://<any-node-ip>:31003 - Or point an Ingress at the Portal Service on service port
3003
WebSocket support is required for live investigation updates. Keep proxy read/send timeouts high enough for multi-minute investigations.
Authentication
On first launch, open the Portal UI and register the first user — that account becomes the admin. Registration is open only for the very first account; every subsequent registration requires admin authentication.Metrics
Runtime and Portal both expose Prometheus metrics at/metrics. The chart can create ServiceMonitor, PodMonitor, Grafana dashboard, and PrometheusRule resources under the metrics.* values block.
The Runtime endpoint also exposes bounded KB capability lifecycle series such as
siclaw_gateway_capability_starts_total,
siclaw_gateway_capability_start_duration_ms,
siclaw_gateway_capability_active_runs,
siclaw_gateway_capability_materialization_failures_total, and
siclaw_gateway_capability_relay_failures_total. They intentionally carry no
run, repository, user, or operation identifiers; use logs/traces for drill-down.
Common settings:
/metrics, add:
user_id label from token and cost metrics:
Operational Notes
- Kubernetes mode requires MySQL. SQLite is only for single-process local use.
- AgentBox pods are created on demand by the Runtime.
- Runtime ↔ AgentBox traffic is secured with mTLS automatically.
- KB compile/test boxes additionally receive a default-on ingress NetworkPolicy;
the chart’s Runtime pod is the only default caller on port 3000. Extend
agentbox.networkPolicy.ingressFromonly for an intentional extra caller. - A Runtime rolling restart preserves K8s AgentBox pods so the replacement can re-adopt live capability runs. Cluster-wide box deletion remains an explicit cleanup operation, not a process-shutdown side effect.
- If you deploy monitoring resources from the chart, do not also apply duplicate monitor manifests manually.