Describe a server.
Get a server.

NetGet puts an LLM behind 150+ network protocols.
What follows is not a video: it is NetGet, compiled to WebAssembly, running in this tab.

How it works

💻 you netget CLI · TUI 🤖 LLM agent Claude · MCP STDIO 🌐 the network telnet · dig · redis-cli netget ⚡ static response canned · zero latency :port TCP/UDP LISTENING 📜 script runtime JS / Python · deterministic ✨ LLM local or hosted · or you “SMTP on 2525” start_server(dns) request static script prompt

Real sockets, real wire formats. NetGet speaks the protocol, whichever one it is, and the handler writes only the content: a Telnet banner, an SMTP reply, a DNS answer, a Redis value. Below, the same three run in this tab: Telnet is a client machine, netget is the dashboard, LLM is the model: the one you pick: the browser's built-in model (Gemini Nano in Chrome) or a WebLLM model on your GPU, and you until it is ready.

Loading NetGet…
Telnet · a client on the virtual networknot connected
  1. NetGet opens a Telnet server on port 2323.
  2. The Telnet client connects to it.
  3. Everything the server says comes from the model: you, in the LLM panel below, until a model is ready.
  4. Type in the Telnet terminal.
request
netget · WASM demo in your tab
listening nothing yet
keys a new server or client · Tab switch column · ↑↓ walk rows · Enter act · F1 everything · the box at the bottom right talks to the model in plain English
prompt
Nothing leaves this tab. The Telnet server listens on a loopback that exists only inside the WebAssembly instance, and the client connects to it through the same call a real socket would make. The browser's built-in model (Gemini Nano in Chrome, Phi-4-mini in Edge) runs on your device; a WebLLM model is downloaded once from Hugging Face and then runs on your GPU. Nothing else is fetched.
Same code as the CLI. The dashboard, the Telnet server and the LLM prompting are the native NetGet crate compiled for wasm32. The only substitutions are underneath: the executor, the clock, the sockets, and where the model's answer comes from.
You can be the model. Until a model is ready, every request NetGet makes opens a form here, built from the actions it offers, and your answer is what the server puts on the wire. The full prompt is one click away.
LLM
Nothing to answer yet.

What you can build

🧪

HTTP mock API

"HTTP on 3000. GET /users returns fake JSON, POST /login always succeeds."

Test frontends without a backend.

🗄️

Dummy database

"MySQL server. Answer any SELECT with realistic data."

No schema, no seed scripts.

🍯

Honeypot

"SSH on 2222. Act like Ubuntu, accept any password, log everything."

Watch attackers talk to an LLM.

⚡

Instant infra

"DNS on 5353. Resolve *.local to 127.0.0.1."

DNS, NTP, DHCP. One sentence each.

Protocols

179 protocol features. Each is a Cargo feature; build with exactly what you need: --features tcp,http,dns.

transporttcp udp tftp quic tls socket_file named_pipe pty stdio
link & rawdatalink arp icmp igmp ndp rawip tuntap can lldp cdp stp eapol vrrp hsrp wol
webhttp http2 http3 websocket proxy http_proxy socks5 openapi rss coap
naming & timedns dot doh mdns llmnr netbios-ns ssdp dhcp dhcpv6 bootp ntp whois
remote accessssh ssh-agent telnet vnc rdp reverse-shell
mail, news & chatsmtp imap pop3 nntp irc xmpp
media & voicesip rtp rtsp hls webrtc stun turn
queuesmqtt amqp kafka nats stomp sqs zookeeper beanstalkd gearman nsq
databasesmysql postgresql mssql db2 snowflake redis memcached mongodb mongodb-server couchdb cassandra elasticsearch dynamo dynamodb etcd bolt
files & storageftp s3 nfs smb smb-client webdav ipp oci-registry
authoauth2 openid openidconnect saml saml-idp saml-sp ldap radius vault
rpc & agentsgrpc jsonrpc xmlrpc mcp modbus
clusterskubernetes kubernetes-server spark yarn dc docker
vpn & tunnelswireguard openvpn ipsec tor
routing & telecombgp ospf isis rip m3ua gtp
vcs & packagesgit mercurial svn npm pypi maven
p2pbitcoin torrent-tracker torrent-dht torrent-peer nostr
classic internetfinger gopher ident dict gemini
observabilitysnmp syslog prometheus zabbix otlp
usbusb usb-keyboard usb-mouse usb-serial usb-msc usb-fido2 usb-smartcard
bluetooth & nfcbluetooth-ble bluetooth-ble-client bluetooth-ble-beacon bluetooth-ble-battery bluetooth-ble-heart-rate bluetooth-ble-thermometer bluetooth-ble-environmental bluetooth-ble-weight-scale bluetooth-ble-cycling bluetooth-ble-running bluetooth-ble-proximity bluetooth-ble-keyboard bluetooth-ble-mouse bluetooth-ble-gamepad bluetooth-ble-presenter bluetooth-ble-remote bluetooth-ble-data-stream bluetooth-ble-file-transfer nfc nfc-client
llm backendsollama openai

Most protocols run as server and client. Maturity varies — see the README for status. This list is generated from Cargo.toml and a test keeps it current.

Install

MCP server for LLM agents (STDIO)

Add to claude_desktop_config.json or any MCP client config:

{
  "mcpServers": {
    "netget": {
      "command": "npx",
      "args": ["-y", "@smotana/netget", "--mcp"]
    }
  }
}

Claude Code: claude mcp add netget -- npx -y @smotana/netget --mcp

CLI

# install
npm install -g @smotana/netget            # or grab a binary from GitHub Releases

# run with local Ollama
ollama pull qwen3-coder:30b
netget

# or run against any OpenAI-compatible API
netget --openai-url https://api.openai.com --model gpt-4o --api-key $OPENAI_API_KEY

From source

git clone https://github.com/smotanacom/netget.git
cd netget

# build only the protocols you need
cargo build --release --no-default-features --features tcp,http,ssh,dns,mcp-stdio

./target/release/netget          # interactive TUI
./target/release/netget --mcp    # MCP STDIO server