RouteUI is a static, client-side network CAD tool for modeling Linux-style networking (routing, firewall, WireGuard) with visual intent and deterministic command generation.
git clone https://github.com/mikeNickaloff/RouteUI.git
cd RouteUI
python3 -m http.server 8080Open http://localhost:8080 in your browser.
- Visual node/edge network topology editing with drag-to-position
- Host configuration modal with tabs for config, interfaces, firewall rules, connections, containers, testing, and deployment output
- Per-interface networking (static/DHCP, IP/CIDR, gateway, bridge/WG/loopback/tunnel types)
- Machine-wide firewall rules (UFW-style) with inbound/outbound/routed directions
- Import firewall rules from
iptables -S/iptables -Land optionalip route - Import interfaces from pasted
ip -o link,ip -o -4 addr, andip routeoutputs - Network simulation/testing (TCP/UDP/ICMP) with open-port discovery and trace output
- WireGuard setup generation and routing output
- Visual route overlays with directional arrows and blocked markers
- Examples gallery plus JSON import/export
- LocalStorage persistence for quick iteration
- Click Examples and load a sample topology to explore the features.
- Use Add Node to create a host, then open Configuration via the Pencil Button on the upper right of any node.
- In Config Menu, set the node’s name/type/trust.
- In Interfaces, add interfaces and IP/CIDR values.
- In Firewall, set defaults for inbound/outbound/routed rules and add additional rules.
- Use Connections to define physical links between hosts (this is your Ethernet cable).
- Use Test to trace packet flow between interfaces. Only shows destinations that can be reached.
- Use Deployment to copy generated Firewall/Routing/WireGuard commands.
- Export/import JSON to share or save your diagram.
- Use Multi Select button on the top right of the diagram to trace packets between two or more devices visually.
- Use Import In the Add Node dialog to quickly import a system into RouteUI
- Use Import under various other sections in the Config Menu
- The diagram autosaves in
localStorage. - Importing JSON overwrites in-memory state and
localStorage.
- Written by Mike Nickaloff using ChatGPT Codex to create project piece by piece
- First spec entry: 2026-02-04 01:29:44
- Latest spec entry: 2026-02-13 18:47:51
- Active span: 9.72 days
- Total spec entries: 13
- Recent planning activity (last 24h): 14 entries
- Spec focus areas:
- project — 97 entries
- diagram — 26
- skills — 9
- node_import — 6
- Requirements (total): 92
- Approved — 74
- Superseded — 18
- Decisions + Constraints (total): 29
- Decisions — 19
- Constraints — 10
-
Total questions: 15
- Closed — 11
- Approved — 4
- Open — 0
-
Completion gate health:
- Open questions — 0
- Open req/decision/constraint rows — 0
- Total changes shipped: 54
- Completion rate: 54 / 54 (100%)
- Throughput (active span):
- 5.56 changes/day
- 14.2 spec entries/day
- Total definitions: 396
- Files covered: 25
- Average definitions per file: 15.84
- Total change–definition links: 414
- Average defs per change: 7.67
- Unique definitions edited: 264
- Coverage of all defs — 66.67%
- Tracked changes (with change_defs entries): 40 / 54 (74.07%)
- Files edited by tracked changes: 19
- Top 3 files account for: 65.46% of all touches
Top edited files:
app.js— 161index.html— 82modules/host-config.js— 28
Most frequently edited definition:
renderTopology(...)inmodules/render.js— 17 touches
- refs table rows: 0
(Reference-link graph not yet populated) - todo table rows: 0