quicue.ca
Model infrastructure as a dependency graph. Get deployment plans, blast radius, executable commands, and documentation — all computed from one cue export.
The idea
You declare resources with types and dependencies:
dns: #Resource & {
"@type": {LXCContainer: true, DNSServer: true}
depends_on: {router: true}
host: "node-1"
container_id: 101
}
You declare providers that serve certain types:
proxmox: #ProviderDecl & {
types: {LXCContainer: true, VirtualMachine: true}
registry: proxmox_actions
}
quicue.ca does the rest at compile time:
- Binding:
dnshas typeLXCContainer, Proxmox servesLXCContainer— match. Every{host}and{container_id}placeholder resolves from the resource's fields. Missing field? Type error, not a runtime surprise. - Graph analysis: dependency layers, transitive closure, blast radius, single points of failure — all computed from
depends_onedges. - Deployment planning: ordered layers with gates, rollback sequences, startup/shutdown order.
- Export: JSON, Jupyter notebooks, Rundeck jobs, Bash scripts, MkDocs wiki, JSON-LD — all from one evaluation.
No runtime. No state file. No plugins. CUE validates everything simultaneously, and the output is plain JSON.
Prerequisites
- CUE v0.15.4 or later
Quick start
git clone https://github.com/quicue/quicue.ca.git
cd quicue.ca
# Validate schemas
cue vet ./vocab/ ./patterns/
# Run the datacenter example (30 resources, 29 providers, 654 bound actions)
cue eval ./examples/datacenter/ -e output.summary
# What breaks if the router goes down?
cue eval ./examples/datacenter/ -e output.impact.\"router-core\"
# Export the full execution plan
cue export ./examples/datacenter/ -e output --out json
What it computes
| Pattern | What it answers |
|---|---|
#InfraGraph |
Dependency layers, transitive closure, topology |
#BindCluster |
Which providers match which resources, resolved commands |
#ImpactQuery |
"What breaks if X goes down?" |
#BlastRadius |
Change impact with rollback order |
#SinglePointsOfFailure |
Resources with no redundancy |
#HealthStatus |
Simulated failure propagation |
#ExecutionPlan |
All of the above, unified into deployment layers with gates |
See the Pattern Catalog for the full list.
Providers (29)
| Category | Providers |
|---|---|
| Compute | proxmox, govc, powercli, kubevirt |
| Container/Orchestration | docker, incus, k3d, kubectl, argocd |
| CI/CD | dagger, gitlab |
| Networking | vyos, caddy, nginx |
| DNS | cloudflare, powerdns, technitium |
| Identity/Secrets | vault, keycloak |
| Database | postgresql |
| DCIM/IPAM | netbox |
| Provisioning | foreman |
| Automation | ansible, awx |
| Monitoring | zabbix |
| IaC | terraform, opentofu |
| Backup | restic, pbs |
Each provider is a CUE package under template/ with type matching and action definitions. See the Template Guide for how to write your own.
Example output
The datacenter example defines 30 resources across 7 dependency layers. Here's what quicue.ca produces from that — a deployment wiki, layer by layer, with resolved commands per resource.
See the generated datacenter deployment wiki →
License
Apache 2.0