Project structure¶
A lab is a Git directory with a marker. The agent never sees the laptop filesystem path.
Marker .eve-iac.yml¶
version: 1
mode: create # create | import | load (default create)
topology: topology.yml
eve:
lab: /IaC/my-lab.unl
| Mode | Source | Managed lab | Mutation |
|---|---|---|---|
| create | none | eve.lab (clients write /IaC/<slug>.unl) |
full |
| import | source.lab immutable |
working copy, default /IaC/<basename>.unl |
managed only |
| load | existing lab | that lab | lifecycle + console + inspect; no deploy/reconcile/destroy |
Never mutate source_lab. A client-supplied lab path does not establish ownership.
On the laptop, labs live under IaC/<name>/. IaC/ is a container, not a lab.
Payload sent to the agent¶
Packed fields typically include lab, yaml, files, manifest, state, source. dir and out are rejected. LOAD may send only manifest.
Python: pack_lab("./my-lab") builds that payload. The CLI uses the same helper.
Sidecars¶
| File | Commit? | Role |
|---|---|---|
.eve-iac-state.json |
no | IaC key → EVE numeric id |
.eve-iac-source.json |
no | IMPORT only |
Send them back on later mutating/console calls. They are not identity in YAML.
configs/¶
Startup-config files. configsets: in YAML is a library (default is id 1). Each node that has a file needs nodes.<key>.configset.