Repository navigation
Releases
0.4.9 (2026-11-12)
Release Notes
Features
Find a host by exact name or IP, and search from host list
dn host list and dn host search take two more of the filters
GET /v2/hosts offers: --name keeps the host with exactly that name
(case-sensitive) and --ip the host with that overlay IPv4 or IPv6 address.
Add --network to either and at most one host comes back. --ip is checked
locally, so a value that isn't an IP address fails before any request.
dn host list also takes --search <QUERY>, so the search shows up beside
the other filters in dn host list --help. dn host search <QUERY> is the
same request with the query as a positional argument.
When --name or --ip finds nothing, the message names what was asked for
(No host is named "gw-1".) instead of the bare No hosts found..
In every command's --help, --json and --profile now sit under their own
"Global options" heading instead of sorted in among the command's own flags.
Install dn-cli 0.4.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.9/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.9Download dn-cli 0.4.9
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.8 (2026-11-05)
Release Notes
Features
Debug a host's tunnels with dn host debug
dn host debug runs dnclient's debug commands on an online host through the
API's host command operation: tunnel and cert show what a host knows about
a peer, lighthouse shows a lighthouse's host map as the host sees it,
create-tunnel starts a handshake, and stack prints a stack trace. Each takes
the host's id and, except stack, a Nebula IP. The API key needs the
hosts:debug permission.
Stream a host's logs with dn host debug logs
dn host debug logs <host id> streams the host's dnclient logs for
--duration (default 1m, at most 10m) at --level (default info), printing
each line as it arrives. Under --json it prints one JSON object per line
(NDJSON) rather than a single document. The host streams for the whole
duration even if dn is stopped early, and reloads its Nebula config when the
session starts and ends. The API key needs the hosts:debug permission.
Install dn-cli 0.4.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.8/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.8Download dn-cli 0.4.8
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.7 (2026-11-03)
Release Notes
Features
Wait for a host to check in with dn host wait
dn host wait <host id> polls a host until it has checked in with Defined
Networking, then shows it: the end of setting up a device with dn host create
and dnclient enroll. --timeout (default 10m) and --interval (default 5s)
take durations like 90s or 1h; --since now waits for a fresh check-in
when re-enrolling a host that was seen before. A wait that runs out of time
exits 1 with ERR_TIMEOUT under --json.
Fixes
- stop list walks that loop between cursors (#172)
Credentials from before profiles are no longer converted
dn used to convert an auth.json without a version (the single-reference
layout from before 0.2.10) into a default profile on every call, and move
config.json's api_url into it. Both conversions are gone. Such an
auth.json now reads as invalid, with a message to run dn auth login, which
replaces it; config.json is ignored. If you still have either file, log in
again, passing --api-url if you used a non-production API.
Install dn-cli 0.4.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.7/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.7Download dn-cli 0.4.7
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.6 (2026-11-02)
Release Notes
Features
Create, list, edit, and revoke join keys
A join key is a reusable enrollment token: any number of machines can enroll
with it, each joining as a new host on the key's network with its role, tags,
and address prefixes. dn join-key create makes one and prints the token
inside the dnclient enroll -code <token> line to run on each machine, the
only time the API shows it; the token is printed only when it looks like one
the API issues. Like host create, the network is auto-picked when the
account has exactly one, and on a dual-stack network the IPv4 prefix is sent
so enrolled hosts get an IPv4 address (--cidr and --no-ipv4 override).
--expires-at takes an RFC 3339 timestamp in any UTC offset and
--expires-in a duration such as 12h, 7d, 30d, or 1y; both are
checked before any request and sent as UTC.
dn join-key list and dn join-key get show keys without their tokens,
marking expired ones; dn join-key edit renames a key or changes its expiry
(--no-expiry removes it); dn join-key delete (alias revoke) stops a
key from enrolling anything more, after the usual confirmation. join-keys,
join-token, and join-tokens are aliases of join-key.
dn host create and dn host enroll-code now print dnclient enroll -code <code>:
dnclient takes the code only through its -code flag, so the bare form
those commands printed before fails with "-code flag must be set".
Install dn-cli 0.4.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.6/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.6Download dn-cli 0.4.6
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.5 (2026-10-31)
Release Notes
Features
Block, unblock, and re-enroll hosts
dn host block cuts a host off from the rest of the network without deleting
it, and dn host unblock lets it back in. --json prints the updated host;
the human view confirms the new state (block also prints the command that
undoes it) and fails if the response doesn't confirm it.
dn host enroll-code issues a new one-time enrollment code for a host that
already exists, for re-enrolling a reinstalled device. --code-lifetime sets
how long it lasts (60 seconds to 7 days, checked before the request is sent).
dn host enroll-code and dn host create now only print a
dnclient enroll <code> line when the code looks like one the API issues, so
a broken or hostile response can't put anything else into a command you paste
into a shell.
Fixes
- correct stale and version-mangled lines in the defined-networking skill (#161)
Install dn-cli 0.4.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.5/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.5Download dn-cli 0.4.5
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.4 (2026-10-29)
Release Notes
Features
- list and show routes (#156)
Fixes
- accept any platform value and shape-check the host id filters (#160)
Install dn-cli 0.4.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.4/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.4Download dn-cli 0.4.4
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.3 (2026-10-29)
Release Notes
Features
Create and edit roles and tags
dn role create and dn role edit manage a role's description and inbound
firewall rules; dn tag create and dn tag edit manage a tag's description,
firewall rules, route subscriptions, and place in the priority order
(--before / --after). Rules are given as
PROTO[/PORTS][,from=ROLE_ID][,tag=a:b]...[,desc=TEXT] on --rule,
--add-rule, and --remove-rule, and are checked locally before any request.
A role edit reads the role and writes the whole thing back with the changes
applied, since the API's role update replaces every field. A tag edit sends
only the fields that change through the API's partial update, so config
overrides are never touched. An edit that changes nothing makes no write.
Roles can't be renamed: the API has no field for it.
Install dn-cli 0.4.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.3/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.3Download dn-cli 0.4.3
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.2 (2026-10-29)
Release Notes
Features
Filter host list and host search server-side
dn host list and dn host search take the filters GET /v2/hosts offers:
--role, --network, --tag (repeatable), --lighthouse, --relay,
--blocked, --update-available, --platform, --never-seen, and
--oidc-user. The boolean flags accept =false to keep the opposite set, and
every flag ANDs with the others and with a search query. Ids and tags are
checked for shape before any request is made.
Install dn-cli 0.4.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.2/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.2Download dn-cli 0.4.2
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.1 (2026-10-13)
Release Notes
Fixes
- verify login credentials without requiring host permissions (#139)
Install dn-cli 0.4.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.1/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.1Download dn-cli 0.4.1
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
0.4.0 (2026-10-12)
Release Notes
Breaking Changes
dn auth status names the organization and key
auth status now asks the API who the key belongs to and shows the organization (with its plan) and the key's name, so a wrong-account key shows up before you run anything against it. --json output gains an owner object, and an owner_error envelope when the lookup fails. If the lookup fails (a rejected key, a failed op read, an unreachable API), auth status still reports the local setup, then exits 1. --offline restores the previous behavior: no API call and no 1Password prompt. Scripts that only need the local setup, or that run where the API or 1Password is unavailable, should pass it.
Features
- name the resource when deleting with --yes (#124)
- show the organization and key in auth status (#128)
delete --yes names what it deleted
dn host delete, dn role delete, and dn network delete with --yes now look the resource up first, so the result reads Deleted host "Build Server" (host-…) instead of the bare id. The lookup is best-effort: a key without the read scope still deletes, and the result names the id alone. --json output is unchanged and makes no lookup.
Fixes
Dependency updates no longer need a changeset
Renovate PRs carry the renovate label, which Knope Bot's changeset check skips; dependency updates ship with the next release without a changelog entry of their own.
Install dn-cli 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jasikpark/dn-cli/releases/download/v0.4.0/dn-cli-installer.sh | shInstall prebuilt binaries into your npm project
npm install @jasikpark/dn-cli@0.4.0Download dn-cli 0.4.0
| File | Platform | Checksum |
|---|---|---|
| dn-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| dn-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| dn-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| dn-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| dn-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |