No description
  • Rust 92.5%
  • TypeScript 7.3%
  • Dockerfile 0.1%
Find a file
Tux d9ad330e7e
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
Add noopener/noreferrer to all window.open calls for terminal tabs
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>
2026-04-20 16:26:03 +02:00
.claude first commit 2026-04-10 00:02:58 +02:00
.forgejo/workflows Add container image CI pipeline with Forgejo registry publishing 2026-04-19 04:38:21 +02:00
.vscode I-7: Spanning Tree Protocol (I-7a: CLI + config model + round-trip) 2026-04-11 00:41:22 +02:00
crates Add open-terminal-in-new-tab and allow concurrent device sessions 2026-04-20 16:23:23 +02:00
docker Add nftables and conntrack-tools to switch image, skip NAT on L2 2026-04-20 10:57:10 +02:00
frontend Add noopener/noreferrer to all window.open calls for terminal tabs 2026-04-20 16:26:03 +02:00
migrations B-8: Lab assessment engine — verification criteria, scoring, export/import 2026-04-18 18:19:07 +02:00
scripts B-1: Backend scaffold — API server, auth, projects, RBAC, CI 2026-04-17 22:54:24 +02:00
.dockerignore B-2 Slice 8: Dockerfiles + boot templates for router, switch, host 2026-04-18 01:43:46 +02:00
.gitattributes Git linguist-vendored 2026-04-12 22:14:21 +02:00
.gitignore Add dev environment setup: docker-compose for PostgreSQL, example config 2026-04-19 05:04:07 +02:00
.markdownlint.yaml Project base 2026-04-10 00:07:28 +02:00
.markdownlintignore B-2: Container lifecycle — shared types, Docker service, template/device APIs, health monitor 2026-04-18 01:22:59 +02:00
ARCHITECTURE.md I-20c: Device Management — SSH server/client via dropbear + SCP 2026-04-17 15:25:01 +02:00
Cargo.lock B-8: Lab assessment engine — verification criteria, scoring, export/import 2026-04-18 18:19:07 +02:00
Cargo.toml Set workspace default-members so cargo run selects the backend 2026-04-19 05:07:44 +02:00
CLAUDE.md Update documentation 2026-04-19 08:42:01 +02:00
DESIGN.md Update documentation 2026-04-19 08:42:01 +02:00
DEVELOPMENT.md Fix OVS init, impairment routing, device cleanup, and harden security 2026-04-19 21:23:35 +02:00
docker-compose.dev.yml Fix postgres image digest in docker-compose.dev.yml 2026-04-19 07:54:23 +02:00
LICENSE LICENSE 2026-04-10 01:42:02 +02:00
netforge.toml.example Add dev environment setup: docker-compose for PostgreSQL, example config 2026-04-19 05:04:07 +02:00
README.md Update documentation 2026-04-19 08:42:01 +02:00
VERIFICATION.md Wire platform traits to real Linux implementations and harden security 2026-04-20 10:28:33 +02:00

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 .nfassess files
  • 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.

License

GNU Affero General Public License v3.0 (AGPLv3)