Network engineer who builds. Thirty years in routing and switching — carrier IP edge, enterprise, data center fabrics — and most of that time writing the tooling I wished existed on the way through.
The work here is mostly one idea: a network already knows its own state. The gap is that the state lives in CLI output on a few hundred boxes, in a dozen dialects, and nothing downstream can consume it. These tools close that gap — get the state off the device, turn it into something queryable, and keep it as a source of truth you can diff against.
Everything below is lab-validated. Real network operating systems in a functional lab, re-run on every change, never mock data.
fibtrace · Python · MIT
Hop-by-hop forwarding chain validation from the device perspective. Not a traceroute — a
FIB trace. Visualize all the possible paths, and diff two traces side by side.
secure_cartography · Python
Network discovery and mapping via SSH-based device interrogation. Interrogates the
devices directly rather than trusting an inventory, and produces topology maps you can
hand to someone.
secure_cartography_js · JavaScript · MIT
SNMP discovery, topology mapping and visualization. Electron desktop app and Node CLI,
exporting to drawio and PNG.
netlapse · Python · GPLv3
Network state time-lapse. Periodic structured snapshots of device operational state with
versioned diffs — parse scoring per device and per template, a template lab for tuning
templates against live output, and semantic diff, so a change reads as what changed
rather than as a wall of text.
uglyfruit · Python · GPLv3
Tiered retrieval for AI-assisted network investigation — historical, structured-live, and
gated-live device state behind a human-approved escalation boundary. MCP-exposed, so an
agent can consume the same primitives an engineer would, without handing it unbounded
access to production gear.
what_a_NOS_could_be · HTML · MIT
A single-device operational dashboard showing everything an engineer needs — thermal
state, BGP peers, OSPF adjacencies, LLDP topology, route table composition, transceiver
inventory, interfaces. Built from show commands. No agents, no cloud, no license.
The tools above sit on a small set of primitives, all public:
- reachssh · Python · GPLv3 — Paramiko wrapper for SSH-based automation, including legacy crypto support for older devices that modern clients have dropped.
- tetherssh · Go · MIT — SSH terminal emulator with session management, built on Fyne 2 and gopyte.
- tfsmjs · JavaScript · Apache 2.0 — JavaScript port of the Python TextFSM library, for parsing semi-structured text in the browser and in Node.
Operational reality is SSH-first — not RESTCONF, not a vendor API — so parsing is treated as a first-class part of the platform rather than an afterthought. The structured artifact that comes out of parsing is where the contract lives. That's what makes these platforms instead of scripts.
Longer write-ups, architecture notes, and screenshots: scottpeterman.github.io

