A Decky Loader plugin for managing vnt-cli virtual networking on the Steam Deck.
Disclaimer: This project is not actively maintained. It has only been tested on CachyOS. Functionality on SteamOS or other distributions is not guaranteed. Use at your own risk.
- One-tap connect — Enter a token, device name, and server address, then connect to your virtual LAN
- Device list — View all online peers and their virtual IPs in real time
- Self info — Check your own virtual IP, connection status, and NAT type
- Background daemon — vnt-cli runs as a background process, surviving QAM open/close
- Bundled binary — vnt-cli v1.2.16 (x86_64 Linux, statically linked) included — no extra installation needed
The plugin adds a "VNT Control" entry to the Quick Access Menu with three sections:
- Connection — Input fields for token, device name, and server address, plus Connect / Disconnect buttons
- Status — Connection indicator (green dot when online) and
vnt-cli --infooutput - Devices —
vnt-cli --listoutput showing all peers on the virtual LAN
- Download
vnt_control.zipfrom the releases page - In Decky Loader's settings, use the Install from ZIP option to install the plugin
- Restart Decky Loader after installation
Requirements: Node.js 16.14+, npm.
git clone https://github.com/zxhwfe/vnt-control.git
cd vnt-control
npm install
npm run build
# Then copy the entire project directory to ~/homebrew/plugins/vnt_control on your Steam DeckNote: The
bin/vnt-clibinary is pre-downloaded for x86_64 Linux. If you need a different architecture, download from vnt releases and replacebin/vnt-cli.
- Open the Quick Access Menu (••• button) on your Steam Deck
- Select VNT Control
- Fill in the fields:
- Token (required) — Shared secret that identifies your virtual LAN. Use a unique value (e.g. a UUID)
- Device Name (optional) — A display name for this device
- Server Address (optional) — Custom relay server in
host:portformat. Leave empty to use the default public server
- Tap Connect
- Use Refresh Status to view your virtual IP and connected peers
| Method | Description |
|---|---|
up(token, device_name, server_address, virtual_ip, dns_ip) |
Start vnt-cli as a background process |
down() |
Stop vnt-cli and terminate the background process |
is_running() |
Check whether vnt-cli is currently running |
list_devices() |
Run vnt-cli --list and return the output |
self_info() |
Run vnt-cli --info and return the output |
vnt_control/
├── bin/
│ └── vnt-cli # Bundled x86_64 Linux binary
├── dist/
│ └── index.js # Frontend bundle
├── src/
│ └── index.tsx # Frontend source (React + @decky/ui)
├── main.py # Python backend (subprocess management)
├── plugin.json # Decky plugin manifest
├── package.json # npm metadata
└── rollup.config.js # Build config
BSD-3-Clause
- VNT — The excellent virtual LAN tool by @vnt-dev. This plugin is a thin GUI wrapper around vnt-cli; all the real networking magic comes from VNT.
- Decky Loader — Plugin loader for the Steam Deck
- decky-plugin-template — Plugin scaffold