- Rust 92.5%
- TypeScript 7.3%
- Dockerfile 0.1%
|
All checks were successful
CI / check (push) Successful in 53s
CI / test (push) Successful in 48s
Container Images / build-and-push (map[dockerfile:docker/host/Dockerfile name:netforge-host]) (push) Successful in 45s
Container Images / build-and-push (map[dockerfile:docker/router/Dockerfile name:netforge-router]) (push) Successful in 2m26s
Container Images / build-and-push (map[dockerfile:docker/switch/Dockerfile name:netforge-switch]) (push) Successful in 9s
Prevents window.opener access from opened tabs, mitigating potential phishing via opener navigation if the new tab were ever compromised. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| .forgejo/workflows | ||
| .vscode | ||
| crates | ||
| docker | ||
| frontend | ||
| migrations | ||
| scripts | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| .markdownlint.yaml | ||
| .markdownlintignore | ||
| ARCHITECTURE.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| DESIGN.md | ||
| DEVELOPMENT.md | ||
| docker-compose.dev.yml | ||
| LICENSE | ||
| netforge.toml.example | ||
| README.md | ||
| VERIFICATION.md | ||
NetForge
A web-based network simulation platform with a built-in Cisco IOS CLI simulator.
Build network topologies visually, configure devices through a realistic command-line interface, and watch real routing protocols converge — all in your browser, no proprietary images required.
What Is This?
NetForge lets you drag routers, switches, and hosts onto a canvas, cable them together, and open terminal sessions to each device. Every device is a real Docker container running real Linux networking: OSPF neighbors form actual adjacencies via FRRouting, VLANs are tagged by Open vSwitch, ACLs are enforced by nftables. The custom IOS CLI simulator (netforge-agent) translates familiar Cisco commands into these real subsystems.
Target users:
- Network engineers studying for CCNA/CCNP/CCIE certifications
- University networking courses seeking a Packet Tracer alternative
- Lab environments for testing configurations before production
- Anyone who wants to prototype network designs visually
Key Features
- Visual topology builder — drag-and-drop device placement, point-and-click cabling, real-time status indicators
- Cisco IOS CLI simulator — abbreviated commands, tab completion, context-sensitive
?help,show running-config,write memory, pipe filters (| include,| section) - Real protocol behavior — OSPF, BGP, EIGRP, RIP, STP, HSRP/VRRP via FRRouting and Open vSwitch, not software models
- Full L2/L3 stack — VLANs, trunking, ACLs, NAT/PAT, static routing, EtherChannel, MPLS/LDP, L3VPN
- In-browser terminals — xterm.js with per-device tabs, split-view, and send-to-all
- Multi-user collaboration — real-time topology sync, role-based access (Owner/Admin/Editor/Operator/Viewer), shared and independent terminal sessions
- Lab assessments — author exercises with automated verification, "Check My Work" grading, import/export as
.nfassessfiles - Packet capture — per-link tcpdump with live streaming, pcap download, and BPF filter support
- Lightweight — Alpine-based containers target 32 MB (host) to 128 MB (router) RAM; run 100+ devices on a single host
Architecture at a Glance
Browser (React + xterm.js)
|
| REST / WebSocket
v
NetForge Backend (Rust / Axum)
|
+-- Docker Engine ----> Per-device containers
+-- Open vSwitch -----> Virtual network fabric
+-- PostgreSQL -------> State persistence
|
v
Container (e.g. router)
+-- netforge-agent ---> IOS CLI simulator
+-- FRRouting --------> OSPF, BGP, EIGRP, ...
+-- nftables ---------> ACLs, NAT
Quick Start
See DEVELOPMENT.md for the full setup guide. The short version:
git clone git@git.fiedler.live:tux/netforge.git && cd netforge
docker compose -f docker-compose.dev.yml up -d
export DATABASE_URL="postgres://netforge:netforge_dev@localhost:5432/netforge"
sqlx migrate run --source migrations
sudo systemctl start openvswitch-switch
cp netforge.toml.example netforge.toml
docker build -t netforge-router:dev -f docker/router/Dockerfile .
docker build -t netforge-switch:dev -f docker/switch/Dockerfile .
docker build -t netforge-host:dev -f docker/host/Dockerfile .
cargo watch -x run &
cd frontend && pnpm install && pnpm dev &
# Open http://localhost:5173
Requirements: Linux (Ubuntu 22.04+), Rust, Node.js 20+, Docker Engine, Open vSwitch.
Documentation
| Document | Description |
|---|---|
| DEVELOPMENT.md | Development environment setup, building, testing, CI |
| DESIGN.md | Full project design document — vision, phasing, feature specs |
| ARCHITECTURE.md | Technical architecture — design decisions, tradeoffs, internals |
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | React, TypeScript, Vite, React Flow, xterm.js |
| Backend | Rust, Axum, Tokio, Bollard, SQLx |
| Networking | FRRouting, Open vSwitch, nftables, iproute2 |
| Database | PostgreSQL |
| Containers | Docker, Alpine Linux |
Project Status
NetForge is under active development. See DESIGN.md for the full roadmap and phasing.