config-weave
Single-binary configuration management: describe the state in a WCL playbook, apply it to converge a machine, or check that it already matches.
config-weave
The single static binary you copy onto a target and run — no agent, no runtime, no package installs.
Copy the binary + a playbook folder onto a Linux or Windows host. Run it.
No agent, no interpreter, no dependency hell.
Playbook
A directory of plays of steps — the unit config-weave checks or applies.
Plays run steps; each step invokes a resource with typed properties.
Gatherers collect host facts into variables before anything runs.
Convergence contract
check never mutates; after a successful apply a re-check must return AlreadyConfigured.
check — report-only dry run, never mutates.
apply — converge, idempotently: only out-of-state steps change.
Variables
Playbook vars, gatherer results and CLI overrides — scope, lazy evaluation, and the shadowing pitfall.
Gatherer results, declared vars, CLI overrides — real expressions, lazy evaluation.
DAG scheduling
How requires edges and concurrency classes drive step dispatch; requires is ordering, not a success demand.
requires sequences dependent steps into a DAG.
condition skips steps that don't apply to this host.
Concurrency classes let independent steps run in parallel — safely.
Package
A bundle of resources, gatherers and tests under pkgs/<name>/.
Drop a folder under pkgs/ — discovered on the next run.
package.wcl registers gatherers and resources, namespaced: core.file_present.
Resource
A declared unit of desired state, implemented by a wscript check()/apply() script.
A wscript script with check() / apply() entry points.
The engine re-checks after apply — convergence is proven, not assumed.
wscript
The statically typed, Rust-flavored scripting language resources, gatherers and verify scripts are written in.
Statically typed, Rust-flavored — Result/Option, pattern matching, no borrow checker.
Host API
The wscript module surface config-weave registers for scripts — registered everywhere, foreign-platform functions error off their platform.
fs, shell, template, service, registry, http, … — one surface, both platforms.
config-weave wscripti emits the authoritative weave.wscripti.
Testlab
config-weave test — runs package tests in disposable docker containers or vmlab VMs.
test blocks in package.wcl; disposable instances per test.
Three-run protocol
check, apply, apply — run 2 proves in-process convergence, run 3 proves cross-process idempotence.
1 · check — must report not configured
2 · apply — must converge
3 · apply again, fresh process — must change nothing
Disposable instances
The default testlab backend — disposable Linux containers from an image.
docker — fast Linux containers for the everyday loop.
vmlab — real VMs when you need Windows or systemd.
Three commands
config-weave init my-playbook
config-weave apply my-playbook baseline
config-weave check my-playbook baseline