Skip to content

zxhwfe/vnt-control

Repository files navigation

VNT Control

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.

Features

  • 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

Screenshots

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 --info output
  • Devicesvnt-cli --list output showing all peers on the virtual LAN

Installation

  1. Download vnt_control.zip from the releases page
  2. In Decky Loader's settings, use the Install from ZIP option to install the plugin
  3. Restart Decky Loader after installation

Build from source

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 Deck

Note: The bin/vnt-cli binary is pre-downloaded for x86_64 Linux. If you need a different architecture, download from vnt releases and replace bin/vnt-cli.

Usage

  1. Open the Quick Access Menu (••• button) on your Steam Deck
  2. Select VNT Control
  3. 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:port format. Leave empty to use the default public server
  4. Tap Connect
  5. Use Refresh Status to view your virtual IP and connected peers

Backend API

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

Project Structure

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

License

BSD-3-Clause

Credits

  • 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

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors