Facts, not objects
The cluster stores facts and relations — not mutable API objects. No Pods, no ReplicaSets, no Deployments. Just desired state, observed state, and the gap between them.
A declarative container management system built on facts, relations, desired state, and reconciliation — not objects and YAML.
USER
|
v
+---------------+
| DOMAIN LANG. | .cca files
+-------+-------+
|
v
+---------------+
| FACT STORE | etcd
+-------+-------+
|
+-------+--------+
| | |
v v v
sched network storage (controllers watch facts, derive actions)
| | |
+-------+--------+
|
v
+---------------+
| NODE AGENTS | one per machine, runs containers
+-------+-------+
|
v
MACHINESThe cluster stores facts (desired state, observed state, constraints), not objects. Controllers are rule engines that watch facts, compare desired vs actual, and derive actions. The reconciliation loop runs continuously:
facts → rules → new facts → actions → reality → observations → facts| Kubernetes | CCattler | |
|---|---|---|
| State model | API objects (Deployment, ReplicaSet, Pod...) | Facts and relations |
| Config format | YAML serializing internal objects | Domain language expressing intent |
| Extensibility | CRDs + custom controllers | Typed facts + schemas + rules |
| Networking | Label selectors | Identity-based policies |
| Multi-tenancy | Namespaces (one concept for everything) | Separate ownership, quotas, isolation |
| Autoscaling | HPA/VPA/KEDA (separate systems) | Unified scaling engine |
| Security | RBAC on API resources | RBAC + ABAC on fact prefixes |
service web {
image nginx:1.28
instances 3
expose 8080
health {
http /health
every 10s
}
resources {
cpu 500m
memory 512Mi
}
scale {
horizontal {
min 3
max 30
target cpu = 60%
}
}
placement {
architecture amd64
zone spread
}
}