vssh 3.2.3__tar.gz → 3.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
vssh-3.3.0/PKG-INFO ADDED
@@ -0,0 +1,73 @@
1
+ Metadata-Version: 2.4
2
+ Name: vssh
3
+ Version: 3.3.0
4
+ Summary: Secure SSH/SCP tool with Tailscale failover, P2P transport, and MCP server
5
+ Author-email: MeshPOP <hello@meshpop.dev>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/meshpop/vssh
8
+ Project-URL: Repository, https://github.com/meshpop/vssh
9
+ Keywords: ssh,scp,tailscale,p2p,vpn,mcp,remote
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: System Administrators
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: POSIX :: Linux
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Topic :: System :: Networking
19
+ Requires-Python: >=3.8
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Dynamic: license-file
23
+
24
+ # vssh
25
+
26
+ **Distributed SSH transport and file transfer daemon with zero external dependencies.**
27
+
28
+ Part of [MeshPOP](https://mpop.dev) — Layer 2 (Transport)
29
+
30
+ - Zero external dependencies — pure Python stdlib
31
+ - 50+ MB/s file transfer across WireGuard mesh
32
+ - MCP server for AI agent integration
33
+
34
+ ## Install
35
+
36
+ ```bash
37
+ pip install vssh
38
+ ```
39
+
40
+ ## Usage
41
+
42
+ ```bash
43
+ # Execute remote command
44
+ vssh exec v1 "uptime"
45
+
46
+ # Transfer file at 50+ MB/s
47
+ vssh put v1 ./deploy.tar.gz /opt/deploy.tar.gz
48
+
49
+ # Check connection status
50
+ vssh status
51
+ ```
52
+
53
+ ## MCP Setup
54
+
55
+ ```json
56
+ {
57
+ "mcpServers": {
58
+ "vssh": { "command": "vssh-mcp" }
59
+ }
60
+ }
61
+ ```
62
+
63
+ Gives AI agents: `vssh_exec`, `vssh_put`, `vssh_get`, `vssh_status`, `vssh_keys`, `vssh_speed_test`
64
+
65
+ ## Links
66
+
67
+ - Main project: [github.com/meshpop/mpop](https://github.com/meshpop/mpop)
68
+ - Website: [mpop.dev](https://mpop.dev)
69
+ - PyPI: [pypi.org/project/vssh](https://pypi.org/project/vssh/)
70
+
71
+ ## License
72
+
73
+ MIT
vssh-3.3.0/README.md ADDED
@@ -0,0 +1,50 @@
1
+ # vssh
2
+
3
+ **Distributed SSH transport and file transfer daemon with zero external dependencies.**
4
+
5
+ Part of [MeshPOP](https://mpop.dev) — Layer 2 (Transport)
6
+
7
+ - Zero external dependencies — pure Python stdlib
8
+ - 50+ MB/s file transfer across WireGuard mesh
9
+ - MCP server for AI agent integration
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ pip install vssh
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ # Execute remote command
21
+ vssh exec v1 "uptime"
22
+
23
+ # Transfer file at 50+ MB/s
24
+ vssh put v1 ./deploy.tar.gz /opt/deploy.tar.gz
25
+
26
+ # Check connection status
27
+ vssh status
28
+ ```
29
+
30
+ ## MCP Setup
31
+
32
+ ```json
33
+ {
34
+ "mcpServers": {
35
+ "vssh": { "command": "vssh-mcp" }
36
+ }
37
+ }
38
+ ```
39
+
40
+ Gives AI agents: `vssh_exec`, `vssh_put`, `vssh_get`, `vssh_status`, `vssh_keys`, `vssh_speed_test`
41
+
42
+ ## Links
43
+
44
+ - Main project: [github.com/meshpop/mpop](https://github.com/meshpop/mpop)
45
+ - Website: [mpop.dev](https://mpop.dev)
46
+ - PyPI: [pypi.org/project/vssh](https://pypi.org/project/vssh/)
47
+
48
+ ## License
49
+
50
+ MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vssh"
7
- version = "3.2.3"
7
+ version = "3.3.0"
8
8
  description = "Secure SSH/SCP tool with Tailscale failover, P2P transport, and MCP server"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -0,0 +1,73 @@
1
+ Metadata-Version: 2.4
2
+ Name: vssh
3
+ Version: 3.3.0
4
+ Summary: Secure SSH/SCP tool with Tailscale failover, P2P transport, and MCP server
5
+ Author-email: MeshPOP <hello@meshpop.dev>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/meshpop/vssh
8
+ Project-URL: Repository, https://github.com/meshpop/vssh
9
+ Keywords: ssh,scp,tailscale,p2p,vpn,mcp,remote
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: System Administrators
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: POSIX :: Linux
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Topic :: System :: Networking
19
+ Requires-Python: >=3.8
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Dynamic: license-file
23
+
24
+ # vssh
25
+
26
+ **Distributed SSH transport and file transfer daemon with zero external dependencies.**
27
+
28
+ Part of [MeshPOP](https://mpop.dev) — Layer 2 (Transport)
29
+
30
+ - Zero external dependencies — pure Python stdlib
31
+ - 50+ MB/s file transfer across WireGuard mesh
32
+ - MCP server for AI agent integration
33
+
34
+ ## Install
35
+
36
+ ```bash
37
+ pip install vssh
38
+ ```
39
+
40
+ ## Usage
41
+
42
+ ```bash
43
+ # Execute remote command
44
+ vssh exec v1 "uptime"
45
+
46
+ # Transfer file at 50+ MB/s
47
+ vssh put v1 ./deploy.tar.gz /opt/deploy.tar.gz
48
+
49
+ # Check connection status
50
+ vssh status
51
+ ```
52
+
53
+ ## MCP Setup
54
+
55
+ ```json
56
+ {
57
+ "mcpServers": {
58
+ "vssh": { "command": "vssh-mcp" }
59
+ }
60
+ }
61
+ ```
62
+
63
+ Gives AI agents: `vssh_exec`, `vssh_put`, `vssh_get`, `vssh_status`, `vssh_keys`, `vssh_speed_test`
64
+
65
+ ## Links
66
+
67
+ - Main project: [github.com/meshpop/mpop](https://github.com/meshpop/mpop)
68
+ - Website: [mpop.dev](https://mpop.dev)
69
+ - PyPI: [pypi.org/project/vssh](https://pypi.org/project/vssh/)
70
+
71
+ ## License
72
+
73
+ MIT
vssh-3.2.3/PKG-INFO DELETED
@@ -1,240 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: vssh
3
- Version: 3.2.3
4
- Summary: Secure SSH/SCP tool with Tailscale failover, P2P transport, and MCP server
5
- Author-email: MeshPOP <hello@meshpop.dev>
6
- License: MIT
7
- Project-URL: Homepage, https://github.com/meshpop/vssh
8
- Project-URL: Repository, https://github.com/meshpop/vssh
9
- Keywords: ssh,scp,tailscale,p2p,vpn,mcp,remote
10
- Classifier: Development Status :: 4 - Beta
11
- Classifier: Environment :: Console
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Intended Audience :: System Administrators
14
- Classifier: License :: OSI Approved :: MIT License
15
- Classifier: Operating System :: POSIX :: Linux
16
- Classifier: Operating System :: MacOS
17
- Classifier: Programming Language :: Python :: 3
18
- Classifier: Topic :: System :: Networking
19
- Requires-Python: >=3.8
20
- Description-Content-Type: text/markdown
21
- License-File: LICENSE
22
- Dynamic: license-file
23
-
24
- # vssh — Distributed Command & File Transport
25
-
26
- vssh is a distributed command and file transport daemon for server meshes.
27
- RPC, file transfer, command execution and terminal access — every node runs the same daemon and acts as both client and server.
28
-
29
- **v3.2.2** | Single file (~3500 lines) | No dependencies | 14-node peer mesh
30
-
31
- ## Installation
32
-
33
- ```bash
34
- # Install vssh
35
- curl -fsSL https://mpop.dev/vssh | bash
36
-
37
- # Check connection status
38
- vssh status
39
- ```
40
-
41
- Every node runs as both client and server. Primary transport: Wire mesh. Automatic fallback: Tailscale mesh.
42
-
43
- ## What vssh is
44
-
45
- **Cluster transport protocol**
46
- Unifies RPC, file transfer, command execution and terminal access in a single daemon.
47
-
48
- **Every node is a peer**
49
- The same daemon runs on every node. Each node acts as both client and server. No central coordinator.
50
-
51
- **Transport-agnostic**
52
- Runs over Wire VPN, Tailscale, or direct P2P connections. vssh does not depend on a specific VPN.
53
-
54
- **Name-based access**
55
- Connect to servers by name (`g1`, `v1`, `d1`) instead of IP addresses.
56
-
57
- ## Architecture
58
-
59
- ```
60
- AI / CLI
61
- |
62
- v
63
- mpop (control plane)
64
- |
65
- v
66
- vssh (command + data bus) <-- you are here
67
- |
68
- v
69
- network fabric
70
- +-- Wire mesh (10.99.x.x)
71
- +-- Tailscale mesh (100.x.x.x, automatic failover)
72
- +-- direct P2P (NAT hole-punch)
73
- ```
74
-
75
- ## Protocol
76
-
77
- Single TCP connection on port 48291. All commands follow `CMD:auth:args` format:
78
-
79
- | Command | Format | Purpose |
80
- |---------|--------|---------|
81
- | RPC | `RPC:auth:method:payload_len` | Remote procedure call |
82
- | PUT | `PUT:auth:path:size:md5` | Upload file |
83
- | GET | `GET:auth:path` | Download file |
84
- | SSH | `SSH:auth:command` | Execute command |
85
- | SESSION | `SESSION:auth` | Persistent connection |
86
- | TAR_UP | `TAR_UP:auth:path:size:md5:comp` | Directory transfer |
87
- | PUTZ | `PUTZ:auth:path:csize:osize:md5` | Compressed upload |
88
- | MPUT | `MPUT:auth:count` | Multi-file upload |
89
- | INFO | `INFO:auth` | Node info (JSON) |
90
-
91
- ## Key Commands
92
-
93
- | Command | Description |
94
- |---------|-------------|
95
- | `vssh status` | Connection status to all servers with latency |
96
- | `vssh exec SERVER "cmd"` | Execute a command on a remote server |
97
- | `vssh put SERVER local remote` | Upload file (MD5 skip, zlib compression) |
98
- | `vssh get SERVER remote local` | Download a file |
99
- | `vssh sync SRC DST path` | Sync files directly between servers (delta) |
100
- | `vssh tunnel SERVER LP RP` | Port forwarding tunnel |
101
- | `vssh speed-test SERVER` | Test transfer speed |
102
- | `vssh p2p-status` | Check NAT hole-punch capability |
103
- | `vssh keys` | Manage SSH keys and secrets |
104
-
105
- ### Full CLI reference
106
-
107
- #### Cluster status
108
-
109
- | Command | Description |
110
- |---------|-------------|
111
- | `vssh status` | Connection status to all servers with latency |
112
- | `vssh stats [days]` | Transfer statistics |
113
-
114
- #### Remote execution
115
-
116
- | Command | Description |
117
- |---------|-------------|
118
- | `vssh ssh <host> "cmd"` | Execute command on remote server (PTY) |
119
- | `vssh <host>` | Interactive terminal (shortcut for session) |
120
- | `vssh session <host>` | Persistent terminal session |
121
- | `vssh rpc <host> <method> [json]` | Remote procedure call (12 methods) |
122
- | `vssh rpc-list <host>` | List available RPC methods |
123
- | `vssh info <host>` | Node info as JSON |
124
-
125
- #### File transfer
126
-
127
- | Command | Description |
128
- |---------|-------------|
129
- | `vssh put <local> <host>:<remote>` | Upload (MD5 skip, zlib compression) |
130
- | `vssh get <host>:<remote> <local>` | Download (auto multi-conn for large files) |
131
- | `vssh sync <local_dir> <host>:<remote>` | Sync files directly between two servers (delta) |
132
- | `vssh mput <host>:/path file1 file2` | Multi-file upload (single connection) |
133
- | `vssh fast <local> <host>:<remote>` | Auto-select best transfer method |
134
- | `vssh p2p <local> <host>:<remote>` | P2P direct transfer (NAT hole-punch) |
135
- | `vssh rsync <local> <host>:<remote>` | Delta sync (only changed blocks) |
136
- | `vssh pipe <host>:<path>` | Pipe stdin to remote file / remote cmd to stdout |
137
-
138
- #### Server
139
-
140
- | Command | Description |
141
- |---------|-------------|
142
- | `vssh server` | Start daemon |
143
- | `vssh help` | Show usage |
144
-
145
- ## Usage Examples
146
-
147
- ```bash
148
- # Run a command on server g1
149
- vssh exec g1 "df -h"
150
-
151
- # Upload a script to v1
152
- vssh put v1 ./deploy.sh /opt/scripts/deploy.sh
153
-
154
- # Download logs from d1
155
- vssh get d1 /var/log/app.log ./app.log
156
-
157
- # Sync a directory between servers
158
- vssh sync g1 g2 /opt/app/
159
-
160
- # Query cluster state
161
- vssh info g1
162
-
163
- # RPC call
164
- vssh rpc g1 get_memory
165
- vssh rpc g2 docker_containers
166
- ```
167
-
168
- ## Performance
169
-
170
- Direct P2P transfers bypass traditional SSH bottlenecks.
171
-
172
- | Mode | Throughput | Notes |
173
- |------|-----------|-------|
174
- | VPN relay (standard) | ~3 MB/s | WireGuard overhead |
175
- | P2P single stream | ~25 MB/s | NAT hole-punch → direct TCP |
176
- | P2P 4 streams | ~53 MB/s | Production measured |
177
- | P2P 8 streams | ~80+ MB/s | Maximum throughput |
178
-
179
- No SSH overhead. Parallel chunked transfer with adaptive chunking.
180
-
181
- ## Network resilience
182
-
183
- vssh is transport-agnostic. If Wire VPN is unavailable, vssh automatically falls back to Tailscale.
184
-
185
- 1. **Wire VPN** (10.99.x.x) — primary, WireGuard mesh
186
- 2. **Tailscale** (100.x.x.x) — automatic fallback when Wire is down
187
- 3. **Direct P2P** — NAT hole-punch for high-throughput transfers
188
-
189
- Mapping stored in `~/.vssh/tailscale_map`. Failover cache avoids repeated timeouts.
190
-
191
- ## Security
192
-
193
- - **HMAC-SHA256** authentication (60s timestamp window)
194
- - **Wire VPN layer**: WireGuard ChaCha20-Poly1305 encryption
195
- - **P2P mode**: TLS 1.2/1.3 (ECDHE + ChaCha20/AES-GCM)
196
- - **No OpenSSH dependency**
197
-
198
- ## Cluster (14 nodes)
199
-
200
- | Server | Type | Platform |
201
- |--------|------|----------|
202
- | v1-v4 | VPS | Linux |
203
- | g1-g4 | GPU | Linux |
204
- | d1-d2 | Bare Metal | Linux |
205
- | m1 | workstation | macOS |
206
- | n1 | VPS | Linux |
207
- | s1-s2 | Synology NAS | DSM 7 |
208
-
209
- ## Ports
210
-
211
- | Port | Purpose |
212
- |------|---------|
213
- | 48291 | Main (TCP) |
214
- | 48295 | P2P signaling (TCP) |
215
- | 48296 | P2P relay (UDP) |
216
-
217
- ## MCP Integration
218
-
219
- Claude can operate servers through vssh using MCP tools.
220
-
221
- ```
222
- Claude → MCP → vssh → servers
223
- ```
224
-
225
- ```json
226
- {
227
- "mcpServers": {
228
- "vssh": {
229
- "command": "vssh",
230
- "args": ["mcp"]
231
- }
232
- }
233
- }
234
- ```
235
-
236
- **MCP Tools (9):** vssh_status, vssh_exec, vssh_put, vssh_get, vssh_sync, vssh_speed_test, vssh_p2p_status, vssh_tunnel, vssh_keys
237
-
238
- ## License
239
-
240
- MIT
vssh-3.2.3/README.md DELETED
@@ -1,217 +0,0 @@
1
- # vssh — Distributed Command & File Transport
2
-
3
- vssh is a distributed command and file transport daemon for server meshes.
4
- RPC, file transfer, command execution and terminal access — every node runs the same daemon and acts as both client and server.
5
-
6
- **v3.2.2** | Single file (~3500 lines) | No dependencies | 14-node peer mesh
7
-
8
- ## Installation
9
-
10
- ```bash
11
- # Install vssh
12
- curl -fsSL https://mpop.dev/vssh | bash
13
-
14
- # Check connection status
15
- vssh status
16
- ```
17
-
18
- Every node runs as both client and server. Primary transport: Wire mesh. Automatic fallback: Tailscale mesh.
19
-
20
- ## What vssh is
21
-
22
- **Cluster transport protocol**
23
- Unifies RPC, file transfer, command execution and terminal access in a single daemon.
24
-
25
- **Every node is a peer**
26
- The same daemon runs on every node. Each node acts as both client and server. No central coordinator.
27
-
28
- **Transport-agnostic**
29
- Runs over Wire VPN, Tailscale, or direct P2P connections. vssh does not depend on a specific VPN.
30
-
31
- **Name-based access**
32
- Connect to servers by name (`g1`, `v1`, `d1`) instead of IP addresses.
33
-
34
- ## Architecture
35
-
36
- ```
37
- AI / CLI
38
- |
39
- v
40
- mpop (control plane)
41
- |
42
- v
43
- vssh (command + data bus) <-- you are here
44
- |
45
- v
46
- network fabric
47
- +-- Wire mesh (10.99.x.x)
48
- +-- Tailscale mesh (100.x.x.x, automatic failover)
49
- +-- direct P2P (NAT hole-punch)
50
- ```
51
-
52
- ## Protocol
53
-
54
- Single TCP connection on port 48291. All commands follow `CMD:auth:args` format:
55
-
56
- | Command | Format | Purpose |
57
- |---------|--------|---------|
58
- | RPC | `RPC:auth:method:payload_len` | Remote procedure call |
59
- | PUT | `PUT:auth:path:size:md5` | Upload file |
60
- | GET | `GET:auth:path` | Download file |
61
- | SSH | `SSH:auth:command` | Execute command |
62
- | SESSION | `SESSION:auth` | Persistent connection |
63
- | TAR_UP | `TAR_UP:auth:path:size:md5:comp` | Directory transfer |
64
- | PUTZ | `PUTZ:auth:path:csize:osize:md5` | Compressed upload |
65
- | MPUT | `MPUT:auth:count` | Multi-file upload |
66
- | INFO | `INFO:auth` | Node info (JSON) |
67
-
68
- ## Key Commands
69
-
70
- | Command | Description |
71
- |---------|-------------|
72
- | `vssh status` | Connection status to all servers with latency |
73
- | `vssh exec SERVER "cmd"` | Execute a command on a remote server |
74
- | `vssh put SERVER local remote` | Upload file (MD5 skip, zlib compression) |
75
- | `vssh get SERVER remote local` | Download a file |
76
- | `vssh sync SRC DST path` | Sync files directly between servers (delta) |
77
- | `vssh tunnel SERVER LP RP` | Port forwarding tunnel |
78
- | `vssh speed-test SERVER` | Test transfer speed |
79
- | `vssh p2p-status` | Check NAT hole-punch capability |
80
- | `vssh keys` | Manage SSH keys and secrets |
81
-
82
- ### Full CLI reference
83
-
84
- #### Cluster status
85
-
86
- | Command | Description |
87
- |---------|-------------|
88
- | `vssh status` | Connection status to all servers with latency |
89
- | `vssh stats [days]` | Transfer statistics |
90
-
91
- #### Remote execution
92
-
93
- | Command | Description |
94
- |---------|-------------|
95
- | `vssh ssh <host> "cmd"` | Execute command on remote server (PTY) |
96
- | `vssh <host>` | Interactive terminal (shortcut for session) |
97
- | `vssh session <host>` | Persistent terminal session |
98
- | `vssh rpc <host> <method> [json]` | Remote procedure call (12 methods) |
99
- | `vssh rpc-list <host>` | List available RPC methods |
100
- | `vssh info <host>` | Node info as JSON |
101
-
102
- #### File transfer
103
-
104
- | Command | Description |
105
- |---------|-------------|
106
- | `vssh put <local> <host>:<remote>` | Upload (MD5 skip, zlib compression) |
107
- | `vssh get <host>:<remote> <local>` | Download (auto multi-conn for large files) |
108
- | `vssh sync <local_dir> <host>:<remote>` | Sync files directly between two servers (delta) |
109
- | `vssh mput <host>:/path file1 file2` | Multi-file upload (single connection) |
110
- | `vssh fast <local> <host>:<remote>` | Auto-select best transfer method |
111
- | `vssh p2p <local> <host>:<remote>` | P2P direct transfer (NAT hole-punch) |
112
- | `vssh rsync <local> <host>:<remote>` | Delta sync (only changed blocks) |
113
- | `vssh pipe <host>:<path>` | Pipe stdin to remote file / remote cmd to stdout |
114
-
115
- #### Server
116
-
117
- | Command | Description |
118
- |---------|-------------|
119
- | `vssh server` | Start daemon |
120
- | `vssh help` | Show usage |
121
-
122
- ## Usage Examples
123
-
124
- ```bash
125
- # Run a command on server g1
126
- vssh exec g1 "df -h"
127
-
128
- # Upload a script to v1
129
- vssh put v1 ./deploy.sh /opt/scripts/deploy.sh
130
-
131
- # Download logs from d1
132
- vssh get d1 /var/log/app.log ./app.log
133
-
134
- # Sync a directory between servers
135
- vssh sync g1 g2 /opt/app/
136
-
137
- # Query cluster state
138
- vssh info g1
139
-
140
- # RPC call
141
- vssh rpc g1 get_memory
142
- vssh rpc g2 docker_containers
143
- ```
144
-
145
- ## Performance
146
-
147
- Direct P2P transfers bypass traditional SSH bottlenecks.
148
-
149
- | Mode | Throughput | Notes |
150
- |------|-----------|-------|
151
- | VPN relay (standard) | ~3 MB/s | WireGuard overhead |
152
- | P2P single stream | ~25 MB/s | NAT hole-punch → direct TCP |
153
- | P2P 4 streams | ~53 MB/s | Production measured |
154
- | P2P 8 streams | ~80+ MB/s | Maximum throughput |
155
-
156
- No SSH overhead. Parallel chunked transfer with adaptive chunking.
157
-
158
- ## Network resilience
159
-
160
- vssh is transport-agnostic. If Wire VPN is unavailable, vssh automatically falls back to Tailscale.
161
-
162
- 1. **Wire VPN** (10.99.x.x) — primary, WireGuard mesh
163
- 2. **Tailscale** (100.x.x.x) — automatic fallback when Wire is down
164
- 3. **Direct P2P** — NAT hole-punch for high-throughput transfers
165
-
166
- Mapping stored in `~/.vssh/tailscale_map`. Failover cache avoids repeated timeouts.
167
-
168
- ## Security
169
-
170
- - **HMAC-SHA256** authentication (60s timestamp window)
171
- - **Wire VPN layer**: WireGuard ChaCha20-Poly1305 encryption
172
- - **P2P mode**: TLS 1.2/1.3 (ECDHE + ChaCha20/AES-GCM)
173
- - **No OpenSSH dependency**
174
-
175
- ## Cluster (14 nodes)
176
-
177
- | Server | Type | Platform |
178
- |--------|------|----------|
179
- | v1-v4 | VPS | Linux |
180
- | g1-g4 | GPU | Linux |
181
- | d1-d2 | Bare Metal | Linux |
182
- | m1 | workstation | macOS |
183
- | n1 | VPS | Linux |
184
- | s1-s2 | Synology NAS | DSM 7 |
185
-
186
- ## Ports
187
-
188
- | Port | Purpose |
189
- |------|---------|
190
- | 48291 | Main (TCP) |
191
- | 48295 | P2P signaling (TCP) |
192
- | 48296 | P2P relay (UDP) |
193
-
194
- ## MCP Integration
195
-
196
- Claude can operate servers through vssh using MCP tools.
197
-
198
- ```
199
- Claude → MCP → vssh → servers
200
- ```
201
-
202
- ```json
203
- {
204
- "mcpServers": {
205
- "vssh": {
206
- "command": "vssh",
207
- "args": ["mcp"]
208
- }
209
- }
210
- }
211
- ```
212
-
213
- **MCP Tools (9):** vssh_status, vssh_exec, vssh_put, vssh_get, vssh_sync, vssh_speed_test, vssh_p2p_status, vssh_tunnel, vssh_keys
214
-
215
- ## License
216
-
217
- MIT
@@ -1,240 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: vssh
3
- Version: 3.2.3
4
- Summary: Secure SSH/SCP tool with Tailscale failover, P2P transport, and MCP server
5
- Author-email: MeshPOP <hello@meshpop.dev>
6
- License: MIT
7
- Project-URL: Homepage, https://github.com/meshpop/vssh
8
- Project-URL: Repository, https://github.com/meshpop/vssh
9
- Keywords: ssh,scp,tailscale,p2p,vpn,mcp,remote
10
- Classifier: Development Status :: 4 - Beta
11
- Classifier: Environment :: Console
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Intended Audience :: System Administrators
14
- Classifier: License :: OSI Approved :: MIT License
15
- Classifier: Operating System :: POSIX :: Linux
16
- Classifier: Operating System :: MacOS
17
- Classifier: Programming Language :: Python :: 3
18
- Classifier: Topic :: System :: Networking
19
- Requires-Python: >=3.8
20
- Description-Content-Type: text/markdown
21
- License-File: LICENSE
22
- Dynamic: license-file
23
-
24
- # vssh — Distributed Command & File Transport
25
-
26
- vssh is a distributed command and file transport daemon for server meshes.
27
- RPC, file transfer, command execution and terminal access — every node runs the same daemon and acts as both client and server.
28
-
29
- **v3.2.2** | Single file (~3500 lines) | No dependencies | 14-node peer mesh
30
-
31
- ## Installation
32
-
33
- ```bash
34
- # Install vssh
35
- curl -fsSL https://mpop.dev/vssh | bash
36
-
37
- # Check connection status
38
- vssh status
39
- ```
40
-
41
- Every node runs as both client and server. Primary transport: Wire mesh. Automatic fallback: Tailscale mesh.
42
-
43
- ## What vssh is
44
-
45
- **Cluster transport protocol**
46
- Unifies RPC, file transfer, command execution and terminal access in a single daemon.
47
-
48
- **Every node is a peer**
49
- The same daemon runs on every node. Each node acts as both client and server. No central coordinator.
50
-
51
- **Transport-agnostic**
52
- Runs over Wire VPN, Tailscale, or direct P2P connections. vssh does not depend on a specific VPN.
53
-
54
- **Name-based access**
55
- Connect to servers by name (`g1`, `v1`, `d1`) instead of IP addresses.
56
-
57
- ## Architecture
58
-
59
- ```
60
- AI / CLI
61
- |
62
- v
63
- mpop (control plane)
64
- |
65
- v
66
- vssh (command + data bus) <-- you are here
67
- |
68
- v
69
- network fabric
70
- +-- Wire mesh (10.99.x.x)
71
- +-- Tailscale mesh (100.x.x.x, automatic failover)
72
- +-- direct P2P (NAT hole-punch)
73
- ```
74
-
75
- ## Protocol
76
-
77
- Single TCP connection on port 48291. All commands follow `CMD:auth:args` format:
78
-
79
- | Command | Format | Purpose |
80
- |---------|--------|---------|
81
- | RPC | `RPC:auth:method:payload_len` | Remote procedure call |
82
- | PUT | `PUT:auth:path:size:md5` | Upload file |
83
- | GET | `GET:auth:path` | Download file |
84
- | SSH | `SSH:auth:command` | Execute command |
85
- | SESSION | `SESSION:auth` | Persistent connection |
86
- | TAR_UP | `TAR_UP:auth:path:size:md5:comp` | Directory transfer |
87
- | PUTZ | `PUTZ:auth:path:csize:osize:md5` | Compressed upload |
88
- | MPUT | `MPUT:auth:count` | Multi-file upload |
89
- | INFO | `INFO:auth` | Node info (JSON) |
90
-
91
- ## Key Commands
92
-
93
- | Command | Description |
94
- |---------|-------------|
95
- | `vssh status` | Connection status to all servers with latency |
96
- | `vssh exec SERVER "cmd"` | Execute a command on a remote server |
97
- | `vssh put SERVER local remote` | Upload file (MD5 skip, zlib compression) |
98
- | `vssh get SERVER remote local` | Download a file |
99
- | `vssh sync SRC DST path` | Sync files directly between servers (delta) |
100
- | `vssh tunnel SERVER LP RP` | Port forwarding tunnel |
101
- | `vssh speed-test SERVER` | Test transfer speed |
102
- | `vssh p2p-status` | Check NAT hole-punch capability |
103
- | `vssh keys` | Manage SSH keys and secrets |
104
-
105
- ### Full CLI reference
106
-
107
- #### Cluster status
108
-
109
- | Command | Description |
110
- |---------|-------------|
111
- | `vssh status` | Connection status to all servers with latency |
112
- | `vssh stats [days]` | Transfer statistics |
113
-
114
- #### Remote execution
115
-
116
- | Command | Description |
117
- |---------|-------------|
118
- | `vssh ssh <host> "cmd"` | Execute command on remote server (PTY) |
119
- | `vssh <host>` | Interactive terminal (shortcut for session) |
120
- | `vssh session <host>` | Persistent terminal session |
121
- | `vssh rpc <host> <method> [json]` | Remote procedure call (12 methods) |
122
- | `vssh rpc-list <host>` | List available RPC methods |
123
- | `vssh info <host>` | Node info as JSON |
124
-
125
- #### File transfer
126
-
127
- | Command | Description |
128
- |---------|-------------|
129
- | `vssh put <local> <host>:<remote>` | Upload (MD5 skip, zlib compression) |
130
- | `vssh get <host>:<remote> <local>` | Download (auto multi-conn for large files) |
131
- | `vssh sync <local_dir> <host>:<remote>` | Sync files directly between two servers (delta) |
132
- | `vssh mput <host>:/path file1 file2` | Multi-file upload (single connection) |
133
- | `vssh fast <local> <host>:<remote>` | Auto-select best transfer method |
134
- | `vssh p2p <local> <host>:<remote>` | P2P direct transfer (NAT hole-punch) |
135
- | `vssh rsync <local> <host>:<remote>` | Delta sync (only changed blocks) |
136
- | `vssh pipe <host>:<path>` | Pipe stdin to remote file / remote cmd to stdout |
137
-
138
- #### Server
139
-
140
- | Command | Description |
141
- |---------|-------------|
142
- | `vssh server` | Start daemon |
143
- | `vssh help` | Show usage |
144
-
145
- ## Usage Examples
146
-
147
- ```bash
148
- # Run a command on server g1
149
- vssh exec g1 "df -h"
150
-
151
- # Upload a script to v1
152
- vssh put v1 ./deploy.sh /opt/scripts/deploy.sh
153
-
154
- # Download logs from d1
155
- vssh get d1 /var/log/app.log ./app.log
156
-
157
- # Sync a directory between servers
158
- vssh sync g1 g2 /opt/app/
159
-
160
- # Query cluster state
161
- vssh info g1
162
-
163
- # RPC call
164
- vssh rpc g1 get_memory
165
- vssh rpc g2 docker_containers
166
- ```
167
-
168
- ## Performance
169
-
170
- Direct P2P transfers bypass traditional SSH bottlenecks.
171
-
172
- | Mode | Throughput | Notes |
173
- |------|-----------|-------|
174
- | VPN relay (standard) | ~3 MB/s | WireGuard overhead |
175
- | P2P single stream | ~25 MB/s | NAT hole-punch → direct TCP |
176
- | P2P 4 streams | ~53 MB/s | Production measured |
177
- | P2P 8 streams | ~80+ MB/s | Maximum throughput |
178
-
179
- No SSH overhead. Parallel chunked transfer with adaptive chunking.
180
-
181
- ## Network resilience
182
-
183
- vssh is transport-agnostic. If Wire VPN is unavailable, vssh automatically falls back to Tailscale.
184
-
185
- 1. **Wire VPN** (10.99.x.x) — primary, WireGuard mesh
186
- 2. **Tailscale** (100.x.x.x) — automatic fallback when Wire is down
187
- 3. **Direct P2P** — NAT hole-punch for high-throughput transfers
188
-
189
- Mapping stored in `~/.vssh/tailscale_map`. Failover cache avoids repeated timeouts.
190
-
191
- ## Security
192
-
193
- - **HMAC-SHA256** authentication (60s timestamp window)
194
- - **Wire VPN layer**: WireGuard ChaCha20-Poly1305 encryption
195
- - **P2P mode**: TLS 1.2/1.3 (ECDHE + ChaCha20/AES-GCM)
196
- - **No OpenSSH dependency**
197
-
198
- ## Cluster (14 nodes)
199
-
200
- | Server | Type | Platform |
201
- |--------|------|----------|
202
- | v1-v4 | VPS | Linux |
203
- | g1-g4 | GPU | Linux |
204
- | d1-d2 | Bare Metal | Linux |
205
- | m1 | workstation | macOS |
206
- | n1 | VPS | Linux |
207
- | s1-s2 | Synology NAS | DSM 7 |
208
-
209
- ## Ports
210
-
211
- | Port | Purpose |
212
- |------|---------|
213
- | 48291 | Main (TCP) |
214
- | 48295 | P2P signaling (TCP) |
215
- | 48296 | P2P relay (UDP) |
216
-
217
- ## MCP Integration
218
-
219
- Claude can operate servers through vssh using MCP tools.
220
-
221
- ```
222
- Claude → MCP → vssh → servers
223
- ```
224
-
225
- ```json
226
- {
227
- "mcpServers": {
228
- "vssh": {
229
- "command": "vssh",
230
- "args": ["mcp"]
231
- }
232
- }
233
- }
234
- ```
235
-
236
- **MCP Tools (9):** vssh_status, vssh_exec, vssh_put, vssh_get, vssh_sync, vssh_speed_test, vssh_p2p_status, vssh_tunnel, vssh_keys
237
-
238
- ## License
239
-
240
- MIT
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes