A fast, structured networking CLI for HTTP, WebSocket, TCP, UDP, MQTT, SSE, DNS, Ping, and WHOIS.
Docs: network-output.com
cargo install network-outputbrew install network-output/tap/network-outputnpx @network-output/noFor a permanent install:
npm install -g @network-output/noscoop bucket add network-output https://github.com/network-output/scoop-bucket
scoop install noDownload prebuilt binaries from GitHub Releases.
cargo install --path .no http GET https://httpbin.org/get
no http POST https://api.example.com/data -b '{"key":"value"}' -H "Content-Type:application/json"
no http GET https://api.example.com --bearer $TOKEN
no http GET https://api.example.com --basic user:pass
no http GET https://example.com/file.tar.gz -o file.tar.gz
no http POST https://api.example.com/upload --stdinno ws listen ws://localhost:8080
no ws send ws://localhost:8080 -m "hello"no tcp connect localhost:9090 -m "hello"
no tcp connect [::1]:9090 -m "hello" # IPv6
no tcp connect localhost:9090 --stdin
no tcp listen :9090
no tcp listen [::]:9090 # IPv6 listenno mqtt sub localhost:1883 -t "sensor/temp"
no mqtt sub [::1]:1883 -t "sensor/temp" # IPv6
no mqtt pub localhost:1883 -t "sensor/temp" -m '{"value":22.5}'no udp send 127.0.0.1:9090 -m "hello"
no udp send [::1]:9090 -m "hello" # IPv6
no udp send 127.0.0.1:9090 -m "ping" --wait 3s
no udp listen :9090
no udp listen [::]:9090 # IPv6 listenno sse https://example.com/events
no sse https://example.com/events --bearer $TOKEN
no sse https://example.com/events -H "X-Custom:value"no dns example.com
no dns example.com AAAA
no dns google.com MX
no dns 8.8.8.8 # auto-detects reverse (PTR) lookup
no dns example.com --server 1.1.1.1
no dns example.com --server 2001:4860:4860::8888 # IPv6 DNS serverno ping 127.0.0.1
no ping ::1 # IPv6
no ping example.com -n 2
no ping 127.0.0.1 --interval 500ms
no --jq '.data.time_ms' ping 127.0.0.1 -n 3no whois example.com
no whois 8.8.8.8
no whois example.com --server whois.verisign-grs.com
no --jq '.data.response' whois example.comFilter JSON from stdin using jq expressions:
echo '{"a":1,"b":2}' | no jq '.a'
no http GET https://httpbin.org/get | no jq '.data.body'The --jq global flag applies a jq filter to any command's output:
no --jq '.data.status' http GET https://httpbin.org/get
no --jq '.data.payload' mqtt sub localhost:1883 -t "sensor/temp"| Flag | Description |
|---|---|
--json |
Force JSON output |
--pretty |
Force pretty output |
--timeout <DURATION> |
Request timeout (e.g. 5s, 300ms, 1m) |
--no-color |
Disable colors |
-v, --verbose |
Verbose output |
-n, --count <N> |
Stop after N data messages (streaming protocols) |
--jq <EXPR> |
Filter output with a jq expression |
By default, output is pretty-printed when connected to a terminal and newline-delimited JSON when piped. Use --json or --pretty to override.
JSON output follows a consistent envelope:
{"type":"response","protocol":"http","timestamp":"2024-01-01T00:00:00.000Z","data":{"status":200,"headers":{},"body":{}}}| Field | Description |
|---|---|
type |
response, message, connection, or error |
protocol |
http, ws, tcp, udp, mqtt, sse, dns, ping, or whois |
timestamp |
ISO 8601 timestamp with millisecond precision (UTC) |
data |
Protocol-specific payload |
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Connection / IO error |
2 |
Protocol error |
3 |
Timeout |
4 |
Invalid input |
| Variable | Description |
|---|---|
NO_AUTH_TOKEN |
Fallback bearer token for authenticated requests |
NO_BASIC_AUTH |
Fallback basic auth credentials as user:pass |
Full documentation is available at network-output.com, covering all protocols, output format, global flags, exit codes, environment variables, and URL normalization rules.
API documentation can be generated with:
cargo doc --no-deps --openjust check # fmt + clippy + test
just build # debug build
just release # release buildSee AGENTS.md for development conventions.
AI skills that teach agents how to use no for networking tasks. Compatible with any agent that supports the Agent Skills open standard: Claude Code, Codex CLI, Cursor, Gemini CLI, and others.
| Skill | Description |
|---|---|
http-requests |
HTTP API testing (GET, POST, PUT, DELETE, auth, headers, body, downloads) |
websocket-debugging |
WebSocket connection debugging (listen, send, lifecycle monitoring) |
network-diagnostics |
DNS lookups, ICMP ping, WHOIS queries |
mqtt-messaging |
MQTT publish/subscribe messaging |
tcp-udp-testing |
Raw TCP connect/listen, UDP send/listen |
sse-monitoring |
Server-Sent Events stream monitoring |
output-filtering |
jq filtering (--jq flag and standalone no jq) |
From GitHub:
claude --plugin network-output/no-skillsBuilt into no:
no skills installThis writes the plugin to ~/.claude/plugins/no/.
Local (from source):
claude --plugin-dir ./claude-pluginSee claude-plugin/README.md for full details.