Lab Map for Kathará
A VSCode extension that renders an interactive network topology map for Kathará labs directly in the editor.
It reads lab.conf and *.startup files and builds a live graph showing machines, LAN segments, IP addresses, MAC addresses, MTU settings, static routes, and DNS roles — all without leaving VSCode.
Features
Interactive topology graph
- Machines and LAN nodes rendered with Cytoscape.js
- Node colors follow the Catppuccin palette and reflect DNS role at a glance
- Pan, zoom, and drag nodes to explore the topology
| Element |
Shows |
| Machine node |
DNS role badge · interfaces (eth / IP / MAC / MTU) · routing table · DNS zones · recursion subnets |
| LAN node |
Calculated subnet · connected machines |
| Physical link |
Interface name · IP · MAC · LAN |
| Static route |
Source · destination · prefix |
Edge types
| Style |
Meaning |
| Gray solid |
Physical link (normal MTU) |
| Amber dashed |
Physical link with non-default MTU (≠ 1500) |
| Pink dashed arrow |
Static route overlay |
DNS role detection
Parses named.conf, named.conf.options, and zone database files inside each machine's etc/bind/ directory to automatically assign roles:
| Color |
Role |
| Yellow |
Root SOA |
| Peach |
TLD SOA |
| Cyan |
SOA (authoritative) |
| Purple border |
Resolver |
| Green border |
Web server |
| Blue |
Client / Router |
DNS Graph panel
Click DNS Graph in the toolbar to open a dedicated side panel showing the DNS delegation hierarchy as an interactive top-down graph (dagre layout):
- SOA nodes are rendered with a filled background in their role color
- Resolver and web server nodes have a colored border and glow
- Hover any node to see a tooltip with role, zone name, SOA NS record, IP addresses, and recursion subnets
- Drag the left edge of the panel to resize it freely
DNS Hierarchy panel
Click DNS Hierarchy in the toolbar to open a text-based tree view of the same hierarchy, showing ├─ / └─ connectors, zone names, NS/SOA records, and recursion subnets per node.
- Drag the left edge of the panel to resize it freely
Node search
Press Ctrl+F to open the search bar. Type a machine or LAN name to highlight matches, fade everything else, and auto-pan to the result.
Auto-refresh
The map updates automatically whenever you save a lab.conf, *.startup, or etc/bind/** file.
Multi-lab workspace
If you have multiple Kathará labs open as workspace folders, the map loads the lab from the folder of your last active editor file. Simply open any file from the target lab and click the status bar button.
Usage
- Open a folder containing a Kathará lab (must have a
lab.conf at the root or in a subfolder)
- Click
$(circuit-board) Kathara Map in the status bar, or run Kathara: Show Network Map from the Command Palette (Ctrl+Shift+P)
- The map opens in a side panel
Supported Kathará features
| Feature |
Parsed from |
| Machine declarations |
lab.conf |
| LAN assignments |
lab.conf (machine[N]="LAN") |
| IP addresses (CIDR) |
*.startup (ip addr add) |
| MAC addresses |
*.startup (ip link set ... address) |
| MTU |
*.startup (ip link set ... mtu) |
| Default gateway |
*.startup (ip route add default via) |
| Static routes |
*.startup (ip route add <dst> via <gw>) |
| DNS zones (BIND9) |
<machine>/etc/bind/named.conf + zone db files |
| Recursion ACL |
<machine>/etc/bind/named.conf.options |
Requirements
- VSCode 1.85 or later
- A Kathará lab folder with a
lab.conf file
No Python, no Docker, no Kathará installation required — the extension only reads files.
Extension settings
This extension does not add any settings to VSCode.
Known limitations
- Routing daemon configurations (OSPF, BGP, RIP via Quagga/FRR) are not yet parsed
iptables / NAT rules are not shown
- Only BIND9 DNS configurations are supported
License
MIT
Disclaimer
This extension is an independent, community-built tool and is not affiliated with, endorsed by, or officially associated with the Kathará project or its maintainers. Kathará is developed by the KatharaFramework team. All trademarks and project names belong to their respective owners.