Labtris
Migration guide

Migrating from EVE-NG

If you have been running EVE-NG for years, most of what you know transfers. Same idea: real virtual machines on a Linux host, wired with kernel networking, driven from a browser.

This page maps the concepts one to one, lists the two or three places the designs actually differ, and links to the importer that turns a .unl file into a Labtris lab.

Last checked against EVE-NG Community Edition 6.2.0-4 (the final CE build) and PRO 7.2.0-4 in October 2026. Comparisons go stale; if something here is wrong now, please say so.

At a glance

What changes if you switch.

The differences worth knowing before reading anything else. The concept map further down answers the other question — where each thing you already use ended up.

Can you still get it?
EVE-NG
Community Edition reached end of life in June 2026. The last CE build shipped July 2024. PRO continues.
Labtris
Current release, MIT, private beta. No edition reaches end of life.
What does the free tier run?
EVE-NG
PRO freemium: 7 nodes, unlimited VPCS, admin account only. CE was unlimited but is no longer supported.
Labtris
Everything. 931 FRR nodes on one box is the largest we have measured — 245 switches and 686 hosts, 18.5 GB of RAM. There is no licensed ceiling to raise.
What does it cost?
EVE-NG
Paid licence beyond the freemium node count.
Labtris
MIT, every emulator feature, forever. The cloud-provider plugins are sold separately.
Can you read the source?
EVE-NG
The web tier is SourceGuardian-encoded PHP. When it misbehaves there is nothing to read.
Labtris
All of it. Python and Svelte, in the open.
How does the browser learn about changes?
EVE-NG
Polling — GET api/poll. A browser left on a lab makes requests all day.
Labtris
WebSocket push for canvas, console, capture and the assistant.
Can a link be slow in one direction?
EVE-NG
tc on the tap, symmetric. With no link object, per-direction latency is not really expressible.
Labtris
Yes — the link is a first-class object with its own qdisc each way, so A→B need not equal B→A.
Who changed this lab?
EVE-NG
No audit trail.
Labtris
Every mutation recorded with its actor, and whether a person or the assistant made it.
Is there an assistant?
EVE-NG
No.
Labtris
Built in — it reads the topology and can build and change labs, and what it does is logged as its own.

EVE-NG PRO 7.2.0-4 (September 2026) lists “improved large lab scalability up to 1024 nodes”, so raw node count is not where these two differ most — the licence, the source you receive and the audit trail are.

What EVE-NG got right

Keep using these ideas.

  • The core idea of running real vendor images under KVM on a Linux host with kernel-native bridges and taps.
  • Deterministic, reversible interface naming (vun/vnet + hex-packed IDs) — great debugging story from `ip link` alone.
  • Transient systemd units per node — cgroups, restart policy, reaping for free.
  • Well-populated appliance catalogue and a large public library of importable labs.
Where the friction came from

The reasons to look elsewhere.

  • Community Edition has reached end of life — June 2026, on EVE-NG's own download page, which is now past. The last CE build, 6.2.0-4, shipped in July 2024. Whatever else is true, it is not receiving fixes.
  • The web tier is SourceGuardian-encoded PHP, so when something misbehaves there is no way to read what it is doing.
  • It polls. `GET api/poll` instead of a push channel means a browser sitting on a lab generates steady request traffic all day.
  • Impairment is per-tap and symmetric; with no first-class link object, per-direction latency is not really expressible.
  • With CE gone, the free path is PRO's freemium mode — 7 nodes, VPCS aside, admin account only. Past seven nodes it is a paid licence, and which features sit behind it has moved over time.
Concept map

What you know, and what it’s called here.

Same primitives, mostly. A few things are actually different — those get their own row.

  • Lab file
    EVE
    `.unl` XML
    Labtris
    JSON — geometry split from topology so it diffs cleanly in git
  • Node template
    EVE
    YAML under `templates/intel/*.yml`
    Labtris
    JSONB row per template; every field editable from the palette
  • Interface names
    EVE
    `vun<lab-hex><node-hex><idx-hex>` — 15-char `IFNAMSIZ` ceiling
    Labtris
    Base36 hash + DB registry; no entity ceiling
  • Impairment
    EVE
    `tc` on the tap, symmetric only
    Labtris
    First-class link → two directional qdiscs; A→B ≠ B→A
  • Capture
    EVE
    Per-node Docker container + nftables NAT chains + watchdog
    Labtris
    Capture sidecar writing to a WebSocket pcap stream — no NAT hop
  • Console
    EVE
    HTML5 with a plugin history
    Labtris
    Guacamole (VNC/RDP) + xterm.js (serial), force-shared display, same-tab reconnect works
  • Web tier
    EVE
    PHP as root, MySQL default password
    Labtris
    FastAPI as an unprivileged user; every root operation goes through `labtris-netd` over a Unix socket
  • State channel
    EVE
    `GET api/poll`
    Labtris
    WebSocket for canvas, console, capture, assistant
  • Multi-host
    EVE
    cluster / satellite protocol
    Labtris
    Register a host, VXLAN builds the tunnel; standard tooling on both ends
  • Licence
    EVE
    Community + PRO (paid)
    Labtris
    MIT. Every emulator feature, forever. The cloud-API plugins are sold separately.
Bringing your lab across

Importing existing topologies.

Topologies. Import → drop your .unl file. Templates map onto the QEMU catalogue; vendor appliances that Labtris does not yet know about become labelled placeholders with warnings — the lab still opens, so you can substitute images yourself. Canvas positions are preserved.

Images. Copy the qcow2 files from /opt/unetlab/addons/qemu/<template>/ and upload them through the palette or with labtris-image add. Companion BIOS or CD-ROM files (NX-OSv OVMF-sata.fd + cdrom.iso, for example) attach per template.

Templates. RAM, CPUs, NIC model, disk bus, iface scheme — every knob the EVE YAML carried is a field on the template row, editable from the palette. Two schemes (paloalto → mgmt, eth1/1, eth1/2, …; nxos → Mgmt0, E1/1, E1/2, …) match the EVE conventions exactly so interface names in the guest do not change.

Try Labtris.

Private beta: ask for access, install with the token you get back. No telemetry, no lock-in; the code you receive is MIT.