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 +73 -0
- vssh-3.3.0/README.md +50 -0
- {vssh-3.2.3 → vssh-3.3.0}/pyproject.toml +1 -1
- vssh-3.3.0/vssh.egg-info/PKG-INFO +73 -0
- vssh-3.2.3/PKG-INFO +0 -240
- vssh-3.2.3/README.md +0 -217
- vssh-3.2.3/vssh.egg-info/PKG-INFO +0 -240
- {vssh-3.2.3 → vssh-3.3.0}/LICENSE +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/setup.cfg +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh.egg-info/SOURCES.txt +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh.egg-info/dependency_links.txt +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh.egg-info/entry_points.txt +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh.egg-info/top_level.txt +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh.py +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh_mcp_server.py +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh_p2p.py +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh_p2p_fast.py +0 -0
- {vssh-3.2.3 → vssh-3.3.0}/vssh_quic.py +0 -0
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
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|