
Racks, devices, ports, and cables, documented without the overhead of enterprise DCIM. If you can draw your network on a whiteboard in 10 minutes, you should be able to document it in RANT in 10 minutes.
If you've ever needed to document a network rack, you've probably hit the same wall:there was nothing in between a handful of single-purpose tools and a full enterprise DCIM platform.
RANT fills that gap. Built for homelabbers, small IT teams, and anyone who needs to know which cable goes where, without deploying an enterprise platform to find out.
The existing tools are excellent, but each leaves part of the problem unsolved:
Maps cable connections beautifully. Its "click to patch" approach directly inspired RANT. But it has no concept of racks or sites and stores everything in browser localStorage.
Renders gorgeous drag-and-drop rack elevations with real device images. But has no cable documentation at all, you still can't know what's plugged in where.
Does everything: IPAM, circuits, power, tenancy, REST + GraphQL APIs. But requires PostgreSQL, Redis, a task queue, and real maintenance. Serious infrastructure for a 12-device homelab.
RANT deliberately documents the physical infrastructure layer and nothing else.
U-position management with real-time collision detection. Define rack height, place devices by U-slot, and get instant warnings if you over-fill a bay.
Click-to-patch workflow for port-to-port connections. Front and back slot awareness, seamless cross-site patching, and full end-to-end cable trace with split-view.
Site → Rack → Device hierarchy with auto-generated Mermaid.js diagrams. Click a topology node to jump straight into that rack's patch view.
SQLite served over the network means your whole team shares one source of truth. No per-user files, no sync issues, no browser localStorage limits.
Session-based login with multi-user management out of the box. Or disable it entirely and trust an upstream reverse proxy (Traefik, Keycloak, Authelia).
Full REST API for automation and integration. Inventory your racks programmatically, export cable lists, or hook RANT into your existing toolchain.
Every tool here is excellent at what it does. RANT's value is in combining rack layout, cable documentation, and multi-site management at zero operational overhead.
| Feature | RANT | ECCM | Rackula | NetBox | RackTables |
|---|---|---|---|---|---|
| Rack layout | ✔ U-position + collision detection | ✗ No rack concept | ✔ Drag-and-drop | ✔ Full elevation views | ✔ Basic |
| Cable documentation | ✔ Port-to-port, front/back, cross-site | ✔ Excellent, its core strength | ✗ None | ✔ Full cable tracing | ✔ Physical ports |
| Multi-site topology | ✔ Site → Rack → Device, Mermaid diagrams | ✗ Single-page, no hierarchy | ✗ Single rack at a time | ✔ Full multi-tenancy | ✔ Locations |
| Shared database | ✔ SQLite (team access via server) | ✗ Browser localStorage only | ~ Optional backend | ✔ PostgreSQL | ✔ MySQL |
| Initial setup | ✔ Single container or nix-build | ✔ Open a file | ✔ Single container | ✗ Multi-service stack, Redis, workers | ~ LAMP provisioning |
| IPAM / VLANs | ✗ Deliberately out of scope | ✗ N/A | ✗ N/A | ✔ Full IPAM | ~ Basic |
| REST API | ✔ Full REST API | ✗ N/A | ✗ N/A | ✔ REST + GraphQL + webhooks | ~ Basic |
| Effort | RANT | ECCM | Rackula | NetBox | RackTables |
|---|---|---|---|---|---|
| Initial setup | 🟢 Single container or nix-build | 🟢 Open a file | 🟢 Single container | 🔴 Multi-service stack, migrations, workers | 🟡 LAMP provisioning + schema |
| Rack documentation | 🟢 Define and go | 🔴 N/A | 🟢 Drag-and-drop | 🟡 Device-types, roles, manufacturers first | 🟢 Straightforward |
| Cable documentation | 🟢 Click-to-patch | 🟢 Drag-and-drop | 🔴 N/A | 🔴 Cable types, terminations, rear ports | 🟡 Manual configuration |
| Multi-site | 🟢 Create sites, add racks | 🔴 N/A | 🔴 N/A | 🔴 Regions, site groups, locations, tenancy | 🟡 Location hierarchy |
| Dependencies | 🟢 Node.js, SQLite | 🟢 None (static HTML) | 🟢 Node.js | 🔴 Python, PostgreSQL, Redis | 🟡 PHP, MySQL, Apache |
🟢 Minimal🟡 Moderate🔴 Significant
Same codebase, three deployment targets. Pick whatever fits your environment.
docker build -t rant:latest .
docker run -d \
--name rant \
-p 3001:3001 \
-v rant_data:/app/data \
--restart unless-stopped \
rant:latestAccess at http://localhost:3001. First launch prompts you to create an admin user.
wrangler d1 create rant-db
cp wrangler.example.toml wrangler.toml
wrangler d1 migrations apply rant-db --remote
npm install && cd client && npm install
cd .. && npm run build:cf
wrangler pages deploy dist/publicPush to Git to auto-deploy. Connect D1 in the Cloudflare dashboard under Settings → Functions.
nix-build
./result/bin/rant
# Or install into your profile:
nix-env -if .
rantOn first build, copy the hash from the error message into default.nix, standard Nix behaviour.
RANT's data model borrows heavily from NetBox's proven hierarchy (Sites → Racks → Devices → Ports), and its "click to patch" interaction pattern comes directly from ECCM's zero-friction design. We owe both projects a significant debt.
The difference is scope. RANT documents the physical infrastructure layer and nothing else. These are explicit non-goals, they protect the project's simplicity:
Use NetBox for IP address and VLAN management. RANT is intentionally blind to the logical layer.
RANT documents what exists, not whether it's healthy. Use Prometheus, Zabbix, or LibreNMS for that.
No power, cooling, or physical capacity modelling. Those require a dedicated DCIM like openDCIM.
Ansible, Nornir, and Nautobot own configuration. RANT just documents what the cables connect to.
The frustration that led to building a lightweight tool for documenting physical network infrastructure, and why nothing else quite fit.
Read more →