Setting up traditional network emulators can be frustrating and time-consuming. InstantNodes solves this by containerizing GNS3 and exposing a React frontend. You supply your own Cisco IOS/IOL images, and the platform handles the rest.
- Automated Grading Engine: Configures devices in-browser. The Python backend (using Netmiko) connects via SSH, pulls running configurations, and evaluates them against a known-good solution file.
- In-Browser Terminal: A native
xterm.jsterminal connects to router consoles via WebSockets. No external SSH clients required. - Interactive Topologies: Dynamic, SVG-based network diagrams that clearly map out VLANs, trunks, and active interfaces.
- Local Execution: The entire stack runs in Docker Compose on your local machine.
InstantNodes runs as three coordinated Docker containers.
graph TD
User([User Browser]) -->|HTTP / WebSocket| Frontend[React & Next.js Frontend]
Frontend -->|REST API| Backend[FastAPI Backend]
Backend -->|gns3fy API| GNS3[GNS3 Server Container]
Backend -->|netmiko SSH| GNS3
GNS3 -->|Boots IOS/IOL| Routers((Emulated Devices))
Backend -.->|Reads / Writes| DB[(SQLite Database)]
Backend -.->|Reads| Labs[YAML Lab Definitions]
- Docker Desktop
- Cisco IOS/IOL
.binor.imagefiles
Note: Cisco images are not distributed with this project. You must supply your own images.
git clone https://github.com/DiptanshuDhawan/NetSimX.git
cd NetSimXPlace your images into the ./images directory at the repository root. This folder is mounted directly into the GNS3 server container.
Important: Rename your Layer 3 image to router.bin and your Layer 2 image to switch.bin.
NetSimX/
└── images/
├── router.bin
└── switch.bin
docker-compose up -d --buildThe initial run will build the frontend and backend containers. Once complete, the application will be available at http://localhost:3000.
docker-compose downLab progress and grading history are persisted in a local SQLite database stored in a Docker volume.
Labs are defined using YAML and reference configurations. No application code modifications are required to add new labs.
labs/
└── inter-vlan-routing/
├── lab.yaml # Topology layout, instructions, and metadata
└── solution.cfg # Reference configuration for the grading engine
Review the existing examples in the /labs directory to use as templates for creating new scenarios.
InstantNodes is currently in active beta. The core grading engine, Docker Compose stack, and frontend UI are fully functional. Current work is focused on expanding the built-in lab library to cover the full CCNA 200-301 blueprint.
Distributed under the MIT License. See LICENSE for details.

