Interaction as Code¶
Console automation is how eve-iac does Interaction as Code for devices: attach to a node console, observe output, run commands, wait for prompts, and execute ordered expect/send sequences — through the same agent HTTPS API used by the VSIX, CLI, MCP, and SDKs.
Live link quality and suspend are the other Interaction as Code surface: they change the running fabric without rewriting Git YAML. See Live link quality / suspend.
eve-iac can automate a node before it has:
- an IP address
- management reachability
- SSH, NETCONF, or gNMI
- routing or a jump host
The agent reaches the node through the EVE-owned serial/console path, not through management protocols.
AI is optional. Console automation works from the CLI, SDKs, and pipelines without any MCP or IDE agent.
Two layers¶
| Term | What it covers |
|---|---|
| Infrastructure as Code (IaC) | Topology, nodes, networks, links, deployment, reconcile — desired state in Git |
| Interaction as Code | Attach, observe, exec, wait, run, history, live link quality / suspend, HTML5 capture, traffic matches, CI validation, human + AI console sharing |
Write Interaction as Code in full. IaC means Infrastructure as Code only.
Define the infrastructure. Define how to interact with it. Automate both.
Infrastructure as Code lives in topology.yml and configs/. Interaction as Code uses console sessions, live link apply (quality/suspend), HTML5 capture, and the traffic-match stream. How you drive those sessions depends on your persona (VSIX, CLI, or SDK) — not a separate site section. The operator schematic is Lab canvas.
Infrastructure as Code defines what the lab is. Interaction as Code defines what happens to it.
Architecture¶
EVE node console (Telnet)
↓
eve-iac-agent Hub (one Hub per active lab/node console)
├── VSIX / human terminal
├── CLI (attach, watch, exec, …)
├── MCP / AI (bounded exec, wait, run, history)
├── Python SDK
├── Go SDK
├── TypeScript SDK
└── OOB SSH (OpenSSH, Netmiko, Ansible)
- One Hub per
(lab, node)console while the Hub exists. - One EVE Telnet TCP connection per Hub.
- Multiple consumers may share the same Hub when they use the same explicit
session_idor join compatible leases.
The Hub retains a bounded byte ring of recent console output. When the last client leaves, the Hub is kept for 60 seconds idle retention, then torn down. History does not survive agent restart.
Where to go next¶
Shared model:
| Topic | Page |
|---|---|
| Sessions, modes, Hub | Console sessions |
| Exec, wait, run, history | Exec, wait, run |
| Security, limits | Console security |
By persona:
| You | Start here |
|---|---|
| Operator (VSIX) | Consoles, Console MCP |
| DevOps / CLI / CI | Console CLI, Day-0 console, OOB SSH, Inventory export |
| Developer (SDK / HTTP) | Console SDK, OOB SSH, Inventory from a SDK |
API reference: SDK operation index (Execution / Consoles).