tnmn-cli
v1.0.1
Published
TNMN Tunnel CLI — expose local services to the internet via secure WebSocket tunnels
Maintainers
Readme
tnmn-cli
TNMN Tunnel CLI — expose local services to the internet via secure WebSocket tunnels. Built on HashiCorp Yamux stream multiplexing over WebSocket.
Requirements
- Node.js ≥ 18
Installation
# Install globally
npm install -g tnmn-cli
# Or build from source
npm install
npm run buildQuick Start
# Authenticate
tnmn login
# Create an HTTP tunnel
tnmn http -l 3000
# Create a TCP tunnel (SSH, etc.)
tnmn tcp -l 22
# Create a UDP tunnel (DNS, etc.)
tnmn udp -l 53
# Create an RDP tunnel (Remote Desktop)
tnmn rdp -l 3389Commands
| Command | Description |
|---------|-------------|
| tnmn http -l <addr> | HTTP tunnel |
| tnmn tcp -l <addr> | TCP tunnel |
| tnmn udp -l <addr> | UDP tunnel |
| tnmn rdp -l <addr> | RDP tunnel |
| tnmn login | Authenticate interactively |
| tnmn register | Create a new account |
| tnmn status | Show tunnel metrics |
| tnmn logout | Remove stored token |
Global Flags
| Flag | Default | Description |
|------|---------|-------------|
| --server | connect.tnmn.click | TNMN server URL |
| --token | from config | Auth token |
| --insecure | false | Skip TLS verification (dev only) |
Configuration
On first run, tnmn stores config in:
- Windows:
%APPDATA%\tnmn\config.json - Unix:
~/.tnmn/config.json
You can also set the token via the TNMN_TOKEN environment variable.
Protocol Support
| Protocol | Use case |
|----------|----------|
| http | Web apps, REST APIs |
| tcp | SSH, game servers, databases |
| udp | DNS, VoIP, streaming |
| rdp | Windows Remote Desktop |
Architecture
CLI → REST API (auth) → WebSocket + Yamux → TNMN Server → Public URL
↓
Your local service- WebSocket carries the Yamux session
- Yamux multiplexes multiple streams over a single connection
- 4-byte big-endian prefix frames UDP packets (exact Go protocol convention)
Development
# Run tests
npm test
# Build distributable
npm run buildLicense
ISC
