A third FlowAgent joins the home lab, one that stops answering questions and starts comparing declared intent against live reality, then says exactly where the two disagree.
Home Lab Series · Part 3 of 6
1. Closed-Loop Config Backup2. First FlowAI Agents3. Continuous Compliance4. Coming soon5. Coming soon6. Coming soon
Two agents into this lab, I had one that could answer questions about the network and one that could poke at live devices when asked. Neither one was watching anything. If NetBox and a device quietly drifted apart, nothing would tell me until something else broke first. This round builds the piece that actually closes that gap, and I broke two switches on purpose to make sure it would notice.
Put simply: NetBox declares what a device should look like, Itential Gateway pulls what it’s actually running, and an Itential workflow compares the two, fact by fact, then reports where they disagree. Nothing external stitched together to make that happen. It’s built entirely from pieces already inside Itential Platform.
Network compliance lands in the same Agent Project as NetBox Source of Truth and Arista Device Ops, not a new system to stand up, just another row in a table. Its description, in the platform’s own words: “Checks whether real Arista EOS device configuration matches NetBox’s declared intent across the fleet.”
The fleet this agent watches is the same five devices established back in Part 2: access1 and dist1 and isp1 in supporting roles, plus ceos1 and ceos2 carrying the Core role in NetBox. The two end hosts NetBox also tracks as generic servers, useful for IP bookkeeping, sit outside this fleet entirely, they were never part of the network compliance check to begin with.
The agent’s entire toolset is one workflow, and its prompt is specific about what that workflow checks and what it must never do:
Agent Prompt
“You are a network compliance assistant. NetBox is the source of truth for this network’s intended configuration. Use the Netbox Compliance Check tool to compare each device’s real running configuration against what NetBox declares, hostname, primary/loopback IP address, and the Ethernet1 backbone interface IP, across all 5 devices in the fleet (ceos1, ceos2, dist1, access1, isp1). Report which devices are compliant and which have drifted, and be specific about which fact(s) didn’t match when you can tell from the tool’s output. Never guess or invent compliance results, always run the tool.”
A compliance agent that has never actually caught anything isn’t proof of much. So before running it, I logged into ceos1 and ceos2, the lab’s two core switches, and manually changed their configured hostnames so they no longer matched what NetBox had on record. Every other fact, on every other device, stayed untouched. Then I ran the check against the full fleet.
This is what task-to-task variable binding actually looks like once you open the workflow up. One task in the comparison, “Config contains NetBox primary IP?”, takes two inputs: the real running-config text Itential Gateway just pulled off the device, and the raw JSON NetBox returned for that same device from its own API. No custom code sits between them, Studio passes one task’s output straight into the next task’s input.
device: core1, the same hostname mismatch from Part 2). Operand 2 is NetBox’s own API response for ceos1. The evaluation flag came back false.That single task is one of several stacked into the same workflow, one comparison per fact, per device. When every comparison for a device comes back true, it’s compliant. When even one doesn’t, it’s drift.
The workflow’s raw output is blunt: a status per device, nothing more.
| Device | Status |
|---|---|
| ceos1 | drift |
| ceos2 | drift |
| dist1 | compliant |
| access1 | compliant |
| isp1 | compliant |
Exactly the two devices I’d touched, flagged. Nothing else. Zero false positives across the rest of the fleet.
What happened next is the part I actually wanted to see. Asked to summarize the run, the agent didn’t just repeat the table, it told me what it couldn’t tell me:
It would have been easy for the agent to fill that gap with a plausible-sounding guess, ceos1’s hostname is probably wrong, given what Part 2 already found. It didn’t. It named the limit of its own tool and offered to dig further instead of inventing an answer. That’s the same design instinct behind making Arista Device Ops read-only: an agent should be honest about what it doesn’t know, not confident about something it made up.
Every run against any of the three agents lands in the same place. This is the actual session list, sorted by start time, not a curated highlight reel: three different agents, seven runs, all completed, none failed.
System of Record
NetBoxNetBox Itential Adapter
Itential Platform
FlowAgentsAgent ProjectsStudio WorkflowsItential Gateway
Devices
Arista cEOS-lab (arm64)Containerlab
Agentic Ops
Claude Sonnet 5Itential MCP Server
Three agents in, and each one does something the last one couldn’t: answer a question, investigate a live device, now continuously verify that intent and reality still agree. What none of them do is tell you what to actually do about a problem once one shows up. That’s next: an agent that starts from a real trouble ticket, reasons through the symptom, and proposes a fix instead of just reporting that something’s wrong. It only ever proposes. Touching a device stays a permission this lab hasn’t earned yet, on purpose.
Want to follow along with me? Connect with me on LinkedIn.
See how Itential connects AI reasoning to governed execution across your entire infrastructure.