What it does
1. What does NwTwin actually measure?
It builds a twin of your network and asks one question of it, over and over: can these two endpoints still reach each other? The Network Survivability Index is the share of endpoint pairs that stay connected across every failure it rehearses. A score of 90% is not a grade out of ten, it is 90% of the paths that matter surviving the failures you asked about.
2. Which pairs count as "the paths that matter"?
The ones carrying traffic between sites. Core (tandem) nodes are transit, so they are never measured as an endpoint, and two access nodes are not measured against each other. Get the node typing wrong and you can end up measuring nothing at all, which looks like a perfect score and is actually an empty measurement.
3. What does it recommend, beyond a number?
A score per node and per link, so the weakest element is named rather than inferred, and the changes that would move it: which link to add, which is doing nothing, and which to restore first when several are down at once. That last one is the question nobody has time to answer at 3am.
Modelling your network
4. What is a trail, and why does it matter?
A trail groups links that ride the same physical path. Two links between the same pair of cities look like redundancy on a diagram, but if they share a duct, one backhoe takes both. Name the trail on each link and NwTwin fails them together, which is the failure most designs never rehearse. That is the difference between a drawing and a twin.
5. Can I decide which failures matter most?
Yes, in Setup. The index is the mean of the scenarios a network runs, and a weight per scenario decides how much each one counts toward it. Leave them all at 1 for the plain average, raise the failure you actually lose sleep over, or set one to 0 to leave it out of the score entirely. It changes what the number means, so networks already scored keep their old figure until each is run again, and every run records the weights it was scored under.
6. Which failures does it simulate?
The base network as it stands, plus any one node down, plus any one link down, plus any two links down. Where a network defines trails, the trail equivalents replace the link scenarios: any one trail down, and a trail plus a link. Every scenario is exhaustive, not sampled, so the answer is the worst case rather than a likely one.
7. How do I get my network in?
Draw it in the browser, or import the topology as JSON. Nodes are typed core or access, links carry a capacity and an optional trail name. There is no discovery agent and nothing to install on your network: NwTwin never touches the real thing, which is rather the point of a twin.
AI, MCP and privacy
8. Do I need an AI key?
No. The scoring is local arithmetic and works with no key at all, forever. An AI provider adds written analysis on top of numbers the app already has, and the app is useful without it.
9. What gets sent to my AI provider, and when?
Self-hosted: your topology stays on the machine, and sends only to your own AI provider if you choose to define one. It goes at the moment you ask a question, it is your network and its simulation results, and it goes to your own account with your own key. There is no NwTwin server in the middle, because there is no NwTwin server.
10. Can I drive it from an AI assistant?
Yes. The app serves an MCP endpoint, so an assistant can list and read your networks, edit them, set failures, run a simulation, read the results and ask for an analysis. "Which link should we restore first?" is a question you can put to your own assistant, against your own topology.
Running it
11. What do I need to run it, and can I turn the MCP endpoint off?
Node.js 18 or newer, and nothing else. It starts on localhost:8946 and opens your
browser; the port spells TWIN on a phone keypad, which is the only clever thing about it. Two flags
narrow what it exposes: --no-http mounts no MCP endpoint, so nothing can reach the
tools over the network, and --no-ui drops the pages instead, leaving the port serving
MCP alone. A third, --stdio, serves MCP on stdin/stdout for a client that launches the
app itself, and implies --no-http, since MCP goes on the pipe or over HTTP but never
both. Combine --no-ui --stdio and it binds no port at all.
12. Where does my data live?
In files on your machine, next to the app: one JSON file per network, plus your settings. No database to run, no account to create, no cloud to sign into. Back it up by copying a folder, and delete it by deleting one.
13. What does it cost, and can I see the code?
The app is free and open source under the MIT license. Run it, change it, run it on your own network; just keep the notice. It is in private beta at the moment and not yet on the public npm registry, so access is by invitation while the first release settles.