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