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_id or 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).