Docs / dev
Dev environments
A development-environment host is Rig when it emits entities with POD components keyed by schema ids it supports (honors). Provider SDKs, interactive login UX, cache stores, and CLI chrome are fulfillment - the Contract still names the portable fields those fulfillments read.
Portable meaning lives on rig.dev.machine and rig.dev.op. TypeScript workflow graphs, Dockerfiles, and install scripts stay in the host (or as x.<vendor>.* until a second speaker needs the same meaning in the catalog).
Not these
| Nearby id | Why it is different |
|---|---|
rig.audio.bus / rig.mod.trigger |
House mute and gated show fires - not a developer machine |
| UI docks / tabs / “workspaces” | Layout chrome - ui.md; fulfillment, not POD |
| Rig host | Live program that loads documents (terms) - not a cloud VM |
Map
| Idea | Rig field / schema |
|---|---|
| Environment recipe | Entity + rig.meta.named + rig.dev.machine |
| Target class | kind - local / vm / ci / container |
| Which fulfillment | provider - hyper-v, kvm, freestyle, docker, local, ... |
| Stack / guest label | base - string hint, not an image digest |
| Auth required | requiresAuth - kebab ids; never tokens |
| Prepared state pointer | snapshotRef - opaque id / URI; blob stays host-side |
| Size hints | memoryBytes, diskBytes, cpus |
| Named ops | rig.dev.op (ssh, open-editor, start, ...) |
| Cache fingerprints | Host only - do not invent rig.dev.cache |
| Credentials / login UI | Host only - fulfill requiresAuth |
Fulfillments
| Fulfillment | Role |
|---|---|
| RigDev | Applies rig.dev.* recipes - hyper-v and kvm (libvirt / virt-manager) via rigdev plan / rigdev apply |
| Freestyle Rigkit | TypeScript workflow / VM providers - another speaker of the same domain when mapped |
Contract examples: examples/dev-machine.json, examples/dev-hyperv.json, examples/dev-kvm.json. Run with RigDev (do not add provider tools to this Contract repo):
git clone https://github.com/rigkid/RigDev
cd RigDev
node cli.js plan path/to/dev-hyperv.json
node cli.js plan path/to/dev-kvm.json
node cli.js apply path/to/dev-kvm.json --iso /path/to/ubuntu.iso
Sketch
{
"entities": [
{
"id": "agent-smoke",
"components": {
"rig.meta.named": { "name": "Agent smoke", "stableId": "agent-smoke" },
"rig.dev.machine": {
"kind": "vm",
"provider": "freestyle",
"base": "node-22",
"requiresAuth": ["github"],
"memoryBytes": 4294967296,
"cpus": 2
}
}
},
{
"id": "op-ssh",
"components": {
"rig.meta.named": { "name": "SSH", "stableId": "op-ssh" },
"rig.dev.op": { "machine": "agent-smoke", "order": 0, "opId": "ssh" }
}
}
]
}
A host that speaks these schemas and ignores the rest of the catalog is fully Rig for this domain - ship what you support.