ssh-mcp-pro 1.2.3 → 1.4.2

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.
Files changed (212) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/MIGRATION.md +2 -2
  3. package/README.md +34 -13
  4. package/SECURITY_DECISIONS.md +19 -0
  5. package/dist/agent-bin.js +5 -2
  6. package/dist/agent-bin.js.map +1 -1
  7. package/dist/cli.d.ts +1 -0
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +38 -47
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config-security-env.d.ts +4 -0
  12. package/dist/config-security-env.d.ts.map +1 -0
  13. package/dist/config-security-env.js +64 -0
  14. package/dist/config-security-env.js.map +1 -0
  15. package/dist/config-types.d.ts +82 -0
  16. package/dist/config-types.d.ts.map +1 -0
  17. package/dist/config-types.js +2 -0
  18. package/dist/config-types.js.map +1 -0
  19. package/dist/config.d.ts +3 -82
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +4 -67
  22. package/dist/config.js.map +1 -1
  23. package/dist/connector-profile.d.ts +1 -1
  24. package/dist/connector-profile.d.ts.map +1 -1
  25. package/dist/detect.d.ts.map +1 -1
  26. package/dist/detect.js +226 -192
  27. package/dist/detect.js.map +1 -1
  28. package/dist/ensure-package-service.d.ts +9 -0
  29. package/dist/ensure-package-service.d.ts.map +1 -0
  30. package/dist/ensure-package-service.js +146 -0
  31. package/dist/ensure-package-service.js.map +1 -0
  32. package/dist/ensure-pkg.js +4 -4
  33. package/dist/ensure-pkg.js.map +1 -1
  34. package/dist/ensure.d.ts.map +1 -1
  35. package/dist/ensure.js +15 -144
  36. package/dist/ensure.js.map +1 -1
  37. package/dist/fs-sftp.js +1 -1
  38. package/dist/fs-sftp.js.map +1 -1
  39. package/dist/fs-stat.d.ts +10 -0
  40. package/dist/fs-stat.d.ts.map +1 -0
  41. package/dist/fs-stat.js +62 -0
  42. package/dist/fs-stat.js.map +1 -0
  43. package/dist/fs-tools.d.ts.map +1 -1
  44. package/dist/fs-tools.js +6 -58
  45. package/dist/fs-tools.js.map +1 -1
  46. package/dist/http-security.d.ts.map +1 -1
  47. package/dist/http-security.js +6 -6
  48. package/dist/http-security.js.map +1 -1
  49. package/dist/http-server-runtime.d.ts.map +1 -1
  50. package/dist/http-server-runtime.js +41 -7
  51. package/dist/http-server-runtime.js.map +1 -1
  52. package/dist/index.js +7 -24
  53. package/dist/index.js.map +1 -1
  54. package/dist/mcp-http-web.d.ts +8 -0
  55. package/dist/mcp-http-web.d.ts.map +1 -0
  56. package/dist/mcp-http-web.js +35 -0
  57. package/dist/mcp-http-web.js.map +1 -0
  58. package/dist/mcp.d.ts +6 -2
  59. package/dist/mcp.d.ts.map +1 -1
  60. package/dist/mcp.js +22 -14
  61. package/dist/mcp.js.map +1 -1
  62. package/dist/policy.d.ts +8 -0
  63. package/dist/policy.d.ts.map +1 -1
  64. package/dist/policy.js +147 -105
  65. package/dist/policy.js.map +1 -1
  66. package/dist/process.d.ts.map +1 -1
  67. package/dist/process.js +11 -7
  68. package/dist/process.js.map +1 -1
  69. package/dist/remote/agent-activity-log.d.ts +26 -0
  70. package/dist/remote/agent-activity-log.d.ts.map +1 -0
  71. package/dist/remote/agent-activity-log.js +211 -0
  72. package/dist/remote/agent-activity-log.js.map +1 -0
  73. package/dist/remote/agent-cli.d.ts.map +1 -1
  74. package/dist/remote/agent-cli.js +153 -33
  75. package/dist/remote/agent-cli.js.map +1 -1
  76. package/dist/remote/agent-executor.d.ts.map +1 -1
  77. package/dist/remote/agent-executor.js +22 -10
  78. package/dist/remote/agent-executor.js.map +1 -1
  79. package/dist/remote/agent-handler.d.ts +2 -0
  80. package/dist/remote/agent-handler.d.ts.map +1 -1
  81. package/dist/remote/agent-handler.js +4 -0
  82. package/dist/remote/agent-handler.js.map +1 -1
  83. package/dist/remote/config.d.ts.map +1 -1
  84. package/dist/remote/config.js +12 -1
  85. package/dist/remote/config.js.map +1 -1
  86. package/dist/remote/control-plane.d.ts +12 -0
  87. package/dist/remote/control-plane.d.ts.map +1 -1
  88. package/dist/remote/control-plane.js +164 -56
  89. package/dist/remote/control-plane.js.map +1 -1
  90. package/dist/remote/crypto.d.ts +9 -4
  91. package/dist/remote/crypto.d.ts.map +1 -1
  92. package/dist/remote/crypto.js +41 -9
  93. package/dist/remote/crypto.js.map +1 -1
  94. package/dist/remote/http-util.d.ts.map +1 -1
  95. package/dist/remote/http-util.js +14 -7
  96. package/dist/remote/http-util.js.map +1 -1
  97. package/dist/remote/mcp-tools.d.ts +7 -0
  98. package/dist/remote/mcp-tools.d.ts.map +1 -1
  99. package/dist/remote/mcp-tools.js +28 -0
  100. package/dist/remote/mcp-tools.js.map +1 -1
  101. package/dist/remote/oauth-handler.d.ts +30 -3
  102. package/dist/remote/oauth-handler.d.ts.map +1 -1
  103. package/dist/remote/oauth-handler.js +232 -18
  104. package/dist/remote/oauth-handler.js.map +1 -1
  105. package/dist/remote/policy.js +2 -2
  106. package/dist/remote/policy.js.map +1 -1
  107. package/dist/remote/schemas.d.ts +9 -9
  108. package/dist/remote/schemas.js +6 -6
  109. package/dist/remote/schemas.js.map +1 -1
  110. package/dist/remote/store.d.ts +38 -1
  111. package/dist/remote/store.d.ts.map +1 -1
  112. package/dist/remote/store.js +149 -11
  113. package/dist/remote/store.js.map +1 -1
  114. package/dist/remote/types.d.ts +14 -0
  115. package/dist/remote/types.d.ts.map +1 -1
  116. package/dist/remote/types.js.map +1 -1
  117. package/dist/remote/web-dashboard-client-config.d.ts +77 -0
  118. package/dist/remote/web-dashboard-client-config.d.ts.map +1 -0
  119. package/dist/remote/web-dashboard-client-config.js +81 -0
  120. package/dist/remote/web-dashboard-client-config.js.map +1 -0
  121. package/dist/remote/web-dashboard-html.d.ts +2 -0
  122. package/dist/remote/web-dashboard-html.d.ts.map +1 -0
  123. package/dist/remote/web-dashboard-html.js +451 -0
  124. package/dist/remote/web-dashboard-html.js.map +1 -0
  125. package/dist/remote/web-dashboard-oauth-users.d.ts +4 -0
  126. package/dist/remote/web-dashboard-oauth-users.d.ts.map +1 -0
  127. package/dist/remote/web-dashboard-oauth-users.js +78 -0
  128. package/dist/remote/web-dashboard-oauth-users.js.map +1 -0
  129. package/dist/remote/web-dashboard-static.d.ts +4 -0
  130. package/dist/remote/web-dashboard-static.d.ts.map +1 -0
  131. package/dist/remote/web-dashboard-static.js +19 -0
  132. package/dist/remote/web-dashboard-static.js.map +1 -0
  133. package/dist/remote/web-dashboard-styles.d.ts +2 -0
  134. package/dist/remote/web-dashboard-styles.d.ts.map +1 -0
  135. package/dist/remote/web-dashboard-styles.js +206 -0
  136. package/dist/remote/web-dashboard-styles.js.map +1 -0
  137. package/dist/remote/web-dashboard.d.ts +62 -0
  138. package/dist/remote/web-dashboard.d.ts.map +1 -0
  139. package/dist/remote/web-dashboard.js +467 -0
  140. package/dist/remote/web-dashboard.js.map +1 -0
  141. package/dist/retry.d.ts.map +1 -1
  142. package/dist/retry.js +6 -3
  143. package/dist/retry.js.map +1 -1
  144. package/dist/safety.d.ts.map +1 -1
  145. package/dist/safety.js +56 -6
  146. package/dist/safety.js.map +1 -1
  147. package/dist/session-auth.js +7 -7
  148. package/dist/session-auth.js.map +1 -1
  149. package/dist/session.d.ts +1 -0
  150. package/dist/session.d.ts.map +1 -1
  151. package/dist/session.js +44 -40
  152. package/dist/session.js.map +1 -1
  153. package/dist/shell.d.ts.map +1 -1
  154. package/dist/shell.js +5 -4
  155. package/dist/shell.js.map +1 -1
  156. package/dist/ssh-config.d.ts +2 -2
  157. package/dist/ssh-config.d.ts.map +1 -1
  158. package/dist/ssh-config.js +24 -20
  159. package/dist/ssh-config.js.map +1 -1
  160. package/dist/telemetry.d.ts.map +1 -1
  161. package/dist/telemetry.js +9 -2
  162. package/dist/telemetry.js.map +1 -1
  163. package/dist/tools/connector.provider.d.ts +1 -1
  164. package/dist/tools/connector.provider.d.ts.map +1 -1
  165. package/dist/tools/ensure.provider.d.ts +1 -1
  166. package/dist/tools/ensure.provider.d.ts.map +1 -1
  167. package/dist/tools/fs.provider.d.ts +1 -1
  168. package/dist/tools/fs.provider.d.ts.map +1 -1
  169. package/dist/tools/metadata.d.ts +1 -1
  170. package/dist/tools/metadata.d.ts.map +1 -1
  171. package/dist/tools/output-schemas.d.ts +27 -135
  172. package/dist/tools/output-schemas.d.ts.map +1 -1
  173. package/dist/tools/process.provider.d.ts +1 -1
  174. package/dist/tools/process.provider.d.ts.map +1 -1
  175. package/dist/tools/registry.d.ts +1 -1
  176. package/dist/tools/registry.d.ts.map +1 -1
  177. package/dist/tools/registry.js +16 -13
  178. package/dist/tools/registry.js.map +1 -1
  179. package/dist/tools/session.provider.d.ts +1 -1
  180. package/dist/tools/session.provider.d.ts.map +1 -1
  181. package/dist/tools/system.provider.d.ts +1 -1
  182. package/dist/tools/system.provider.d.ts.map +1 -1
  183. package/dist/tools/transfer.provider.d.ts +1 -1
  184. package/dist/tools/transfer.provider.d.ts.map +1 -1
  185. package/dist/tools/tunnel.provider.d.ts +1 -1
  186. package/dist/tools/tunnel.provider.d.ts.map +1 -1
  187. package/dist/tools/types.d.ts +1 -1
  188. package/dist/tools/types.d.ts.map +1 -1
  189. package/dist/transfer.js +2 -2
  190. package/dist/transfer.js.map +1 -1
  191. package/dist/types.js +1 -1
  192. package/dist/types.js.map +1 -1
  193. package/docs/adding-a-device.md +39 -17
  194. package/docs/agent-activity-monitor.md +34 -0
  195. package/docs/coolify.md +29 -0
  196. package/docs/development/dependency-management.md +1 -1
  197. package/docs/development/local-setup.md +1 -1
  198. package/docs/development/mcp-protocol-2026.md +33 -0
  199. package/docs/docker.md +4 -4
  200. package/docs/doppler-guide.md +34 -0
  201. package/docs/openssf-evidence.md +11 -7
  202. package/docs/openssf-gap-analysis.md +7 -8
  203. package/docs/reference/cli.md +17 -6
  204. package/docs/reference/compatibility.md +1 -1
  205. package/docs/security/dependency-audit-exceptions.md +3 -7
  206. package/docs/security/hosted-data-inventory.md +81 -0
  207. package/docs/sonarcloud-analysis.md +9 -0
  208. package/docs/tutorials/getting-started.md +1 -1
  209. package/mcp.json +1 -1
  210. package/package.json +26 -21
  211. package/registry/ssh-mcp-pro/mcp.json +1 -1
  212. package/server.json +3 -3
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -28,32 +28,53 @@ token and a chosen capability profile.
28
28
  Start with the least privilege a device needs. You can raise the profile
29
29
  later (see [Changing a policy later](#changing-a-policy-later)).
30
30
 
31
- ## Step 1 — Create an enrollment token (on the control plane side)
31
+ ## Step 1 — Create an enrollment token
32
32
 
33
- Tokens are one-time and short-lived. Pick the profile here.
33
+ ### Option A: From the web dashboard (recommended)
34
34
 
35
- ### Option A: HTTP API
35
+ On a deployed control plane with HTTPS and OAuth configured:
36
+
37
+ 1. Open its HTTPS URL and choose **Sign in with GitHub** or **Sign in with Google**.
38
+ 2. Select **Add Device**, enter the device alias, and choose a capability profile.
39
+ Start with `read-only` unless you need additional permissions.
40
+ 3. Choose **Generate Install Command**. The dashboard creates a short-lived,
41
+ one-time token and displays **Linux**, **Windows**, and **npm** commands.
42
+ 4. Copy the command for the target device and run it there. The Linux and
43
+ Windows installer commands install the agent, enroll it, and configure
44
+ startup; the npm command only enrolls and starts the process in that shell.
45
+
46
+ Treat a generated command as a secret: it contains a one-time enrollment
47
+ token. Do not share it in tickets, logs, chat messages, or screenshots. If
48
+ the token expires, generate a new one in the dashboard.
49
+
50
+ ### Option B: From the HTTP API (automation)
51
+
52
+ For an OAuth access token carrying the `agents:admin` scope:
36
53
 
37
54
  ```bash
38
55
  curl -sS -X POST "https://your-control-plane.example.com/api/agents/enrollment-tokens" \
39
56
  -H "Authorization: Bearer <admin-access-token>" \
40
57
  -H "Content-Type: application/json" \
41
- -d '{"alias":"office-pc","requested_profile":"operations"}'
58
+ -d '{"alias":"office-pc","requested_profile":"read-only"}'
42
59
  ```
43
60
 
44
- The response includes a one-time `enrollment_token` and a ready-to-paste
45
- install command. The calling identity must have the `agents:admin` scope.
61
+ The response includes `enrollment_token` and `commands.npm` / `commands.run`.
62
+ The npm commands do not install a background service. To install and
63
+ register a persistent service, use the platform installer in Step 2 with
64
+ that one-time token.
46
65
 
47
- ### Option B: From ChatGPT
66
+ ### Option C: From an authenticated MCP client
48
67
 
49
- If your connector has the `agents:admin` scope, ask it to call the
50
- `create_enrollment_token` tool with the alias and requested profile. It
51
- returns the same token and install command.
68
+ If your authenticated connector has the `agents:admin` scope, call
69
+ `create_enrollment_token` with an alias and requested profile. Use the
70
+ returned token with the installer in Step 2 or the returned npm commands.
52
71
 
53
72
  ## Step 2 — Run the bootstrap on the new device
54
73
 
55
- The bootstrap installs the package, enrolls the machine, and registers a
56
- service so the agent reconnects on boot. It needs Node 22.22+ or 24+.
74
+ The Linux/Windows bootstrap installs the package, enrolls the machine, and
75
+ registers startup so the agent reconnects after restarts. It needs Node
76
+ 22.22+ or 24+. The dashboard-generated command is the shortest path; the
77
+ manual commands below are alternatives if you already have a one-time token.
57
78
 
58
79
  ### Linux / WSL
59
80
 
@@ -88,9 +109,10 @@ On the device:
88
109
  ssh-mcp-pro-agent status
89
110
  ```
90
111
 
91
- It prints the agent id, alias, server, and active profile. On the control
92
- plane side the agent shows up as `online` in the fleet list, and the audit
93
- log records `enrollment_token_created` and `agent_connected`.
112
+ It prints the agent id, alias, server, and active profile. This checks local
113
+ enrollment, **not** live connectivity. In the dashboard, open **Enrolled
114
+ Devices** and verify the device reports **Live Online**. The audit log
115
+ should contain `enrollment_token_created` and `agent_connected`.
94
116
 
95
117
  ## Changing a policy later
96
118
 
@@ -123,5 +145,5 @@ restart is required.
123
145
  Windows) and that the device can reach the control plane URL over HTTPS.
124
146
  - **Enrollment fails with an expired token**: tokens are single-use and
125
147
  short-lived. Create a fresh one and retry.
126
- - **WebSocket error on start**: the runtime is too old. Install Node 22.22+
127
- or 24+.
148
+ - **WebSocket error on start**: confirm Node 22.22+ or 24+, DNS/TLS
149
+ connectivity to the configured server, and that the agent has not been revoked.
@@ -0,0 +1,34 @@
1
+ # Outbound Agent Activity Monitor
2
+
3
+ The outbound agent streams timestamped events to its terminal and a **local, rotating diagnostic log**. This is useful when a Windows Scheduled Task displays a connection window, when a service restarts, or when an agent fails to authenticate. The agent does not need to expose a new HTTP API for this.
4
+
5
+ ## Live monitor
6
+
7
+ Open a separate PowerShell 7 (Windows) or terminal (Linux/macOS) under the **same operating-system account** as the installed agent:
8
+
9
+ ```shell
10
+ ssh-mcp-pro-agent logs --follow
11
+ ```
12
+
13
+ To display the most recent events without remaining attached:
14
+
15
+ ```shell
16
+ ssh-mcp-pro-agent logs --tail 80
17
+ ssh-mcp-pro-agent status
18
+ ```
19
+
20
+ During `ssh-mcp-pro-agent run`, the console also displays a compact connection panel and continuously appends activity. The **transport-open** event means the WebSocket opened, while **agent-ready** appears only after the control plane acknowledges the agent identity. Policy updates, request start/completion, rejected or expired requests, connection errors and disconnects have distinct INFO / OK / WARN / ERROR labels.
21
+
22
+ ## Log storage and privacy
23
+
24
+ - Windows: `%USERPROFILE%\.sshautomator\logs\agent-activity.jsonl` for the Scheduled Task's user.
25
+ - Linux/macOS: `~/.sshautomator/logs/agent-activity.jsonl` for the systemd or launchd user.
26
+ - Log files rotate at 512 KiB with two older archives (`.1` and `.2`), preventing indefinite growth. On Unix, the log directory and files are created with restrictive permissions.
27
+ - Records contain only timestamps, event types and safe diagnostic descriptions. **No command arguments, command output, SSH passwords, private keys, OAuth access tokens, enrollment tokens or raw server error messages** are recorded.
28
+ - The viewer reads only this local file. There is no log upload, remote log streaming endpoint or new background service. To troubleshoot a connection, inspect its recent events and the agent supervisor's own logs as needed.
29
+
30
+ ## Windows Scheduled Task
31
+
32
+ The Windows installer registers `ssh-mcp-pro-agent run` as a Scheduled Task for the current account. A Scheduled Task may not open a visible console window on every Windows configuration. Use **a second PowerShell window** with `ssh-mcp-pro-agent logs --follow` for reliable live visibility. If you do not see log files, verify which account owns the Scheduled Task and whether that account has launched a version of the agent that includes the activity monitor.
33
+
34
+ Dashboard host, OS, architecture and policy version are sent by the agent and exposed by the server under the JSON fields `host_metadata` and `policy_version`. The web UI consumes those fields directly rather than expecting camelCase properties.
@@ -0,0 +1,29 @@
1
+ # Coolify deployment
2
+
3
+ Deploy the repository with **Dockerfile** build pack and Dockerfile path `Dockerfile.coolify`.
4
+
5
+ - Domain: `https://ssh-mcp-pro.oaslananka.dev`
6
+ - Container port: `3000` (do not expose the port directly to the internet)
7
+ - Persistent volume: mount a named volume at `/app/data` (SQLite database and signing keys)
8
+ - One replica: SQLite is local and is not a shared multi-instance database
9
+ - Start command: baked into `Dockerfile.coolify` (`node dist/render-http.js`)
10
+
11
+ Configure secrets in Coolify (never commit them): `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET`, `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` and the project's other required credentials. Set:
12
+
13
+ ```dotenv
14
+ NODE_ENV=production
15
+ PUBLIC_BASE_URL=https://ssh-mcp-pro.oaslananka.dev
16
+ MCP_RESOURCE_URL=https://ssh-mcp-pro.oaslananka.dev/mcp
17
+ SSH_MCP_REMOTE_AGENT_CONTROL_PLANE=true
18
+ SSH_MCP_HTTP_HOST=0.0.0.0
19
+ SSH_MCP_HTTP_PORT=3000
20
+ DATABASE_URL=file:/app/data/sshautomator.db
21
+ CONTROL_PLANE_SIGNING_KEY_PATH=/app/data/control-plane-ed25519.json
22
+ JWT_SIGNING_KEY_PATH=/app/data/jwt-ed25519.json
23
+ GOOGLE_CALLBACK_URL=https://ssh-mcp-pro.oaslananka.dev/oauth/callback/google
24
+ GITHUB_CALLBACK_URL=https://ssh-mcp-pro.oaslananka.dev/oauth/callback/github
25
+ ```
26
+
27
+ Dashboard login callback URLs additionally use `/auth/callback/google` and `/auth/callback/github`; register both with the relevant OAuth providers. Keep authentication allowlists configured as appropriate. Do not enable anonymous access as a workaround.
28
+
29
+ Before deployment verify local OAuth login, dashboard and MCP flow. After deployment check health, login callbacks, device connectivity, and persistent state across a controlled restart. Do not run the SSH test fixture service in production.
@@ -4,7 +4,7 @@
4
4
 
5
5
  - **[renovate.json](../../renovate.json)** manages the `npm` ecosystem (production and
6
6
  dev dependencies). Patch/minor devDependency updates automerge; the MCP SDK
7
- (`@modelcontextprotocol/sdk`) is explicitly excluded from automerge given how central
7
+ (`@modelcontextprotocol/server`, `@modelcontextprotocol/core`, and related v2 packages) is explicitly excluded from automerge given how central
8
8
  it is; typescript-eslint packages are grouped.
9
9
  - **[.github/dependabot.yml](../../.github/dependabot.yml)** manages the
10
10
  `github-actions` ecosystem only, weekly, capped at 5 open PRs.
@@ -9,7 +9,7 @@ it adds the one-command shortcuts.
9
9
  ```bash
10
10
  git clone https://github.com/oaslananka/ssh-mcp-pro.git
11
11
  cd ssh-mcp-pro
12
- task install # or: corepack enable && corepack prepare pnpm@11.5.1 --activate && pnpm install --frozen-lockfile
12
+ task install # or: corepack enable && corepack prepare pnpm@11.28.10 --activate && pnpm install --frozen-lockfile
13
13
  task verify # lint + format:check + typecheck + test + build
14
14
  ```
15
15
 
@@ -0,0 +1,33 @@
1
+ # MCP protocol compatibility (2026-07-28)
2
+
3
+ This repository uses the official TypeScript v2 MCP SDK. The canonical SSH tool registry and policy checks are shared across the modern and legacy protocol eras; there is no second domain, gateway, or server deployment.
4
+
5
+ ## Supported paths
6
+
7
+ - **stdio**: `serveStdio` negotiates the 2026-07-28 era and preserves the 2025 `initialize` handshake for legacy clients.
8
+ - **Standard `/mcp` HTTP**: the SDK's `createMcpHandler` handles modern per-request traffic. The existing session registry and Node Streamable HTTP transport still handle legacy sessionful traffic, selected using the SDK's `isLegacyRequest` classifier.
9
+ - **Legacy SSE**: the optional `/sse` and `/messages` endpoints use the official `server-legacy` compatibility transport. SSE remains disabled by default; do not remove it without a documented client compatibility decision.
10
+ - **Remote-agent control plane**: when its MCP routing is enabled, the distinct authenticated endpoint now serves the 2026-07-28 protocol through the official `createMcpHandler` and preserves its earlier 2025 `initialize` contract for legacy clients. Every incoming request must pass JWT validation before either era is routed; the per-request modern handler is created only with that principal's capability-filtered tool descriptors. This endpoint never falls back to the standard SSH MCP tool registry or another user's agent inventory. Official SDK clients with `versionNegotiation: { mode: "auto" }` select modern, pinned 2026 clients succeed, and explicitly legacy clients continue to work. See `test/integration/remote-mcp-auth-boundary.integration.test.ts` for real HTTP acceptance.
11
+
12
+ ## Security and operation
13
+
14
+ The existing HTTP router enforces authentication, origin policy, request-size limits, and public-boundary controls before dispatching either protocol era. The remote authorization server also includes the RFC 9207 issuer parameter on authorization-code redirects and advertises issuer-identification support in OAuth metadata. The modern SDK supplies header/body consistency validation, protocol discovery, default private/no-cache hints, and 2026 transport behavior. Do not use user-provided MCP metadata to authorize SSH host access; the existing authenticated identity and host policy remain authoritative.
15
+
16
+ Tool output schemas, structured results and annotations are preserved. New Tasks, Skills, interactive elicitation, and custom cache TTLs are not enabled without a concrete use case; protocol support does not require them.
17
+
18
+ ## Acceptance
19
+
20
+ - `pnpm run check:quality`
21
+ - `pnpm run test:coverage`
22
+ - `pnpm run check:package`
23
+ - `pnpm exec vitest run --project integration test/integration/http-server-boundary.integration.test.ts`
24
+ - `pnpm exec vitest run --project unit test/unit/mcp-v2-transport.test.ts`
25
+ - `pnpm exec vitest run --project integration test/integration/remote-mcp-auth-boundary.integration.test.ts`
26
+
27
+ The standard HTTP boundary tests exercise modern SDK client discovery/tool calls, malformed modern header rejection, existing legacy session lifecycle, bearer/OAuth rejection and opt-in SSE routing. The stdio-era tests exercise both modern and legacy clients against the same tool contract. The remote-agent acceptance test separately covers JWT-scoped modern discovery and calls, a pinned 2026 client, explicit legacy initialization, forged version headers, unauthenticated rejection and cross-tenant tool isolation.
28
+
29
+ Official migration references:
30
+
31
+ - https://ts.sdk.modelcontextprotocol.io/v2/migration/upgrade-to-v2
32
+ - https://ts.sdk.modelcontextprotocol.io/v2/migration/support-2026-07-28
33
+ - https://modelcontextprotocol.io/specification/2026-07-28
package/docs/docker.md CHANGED
@@ -3,15 +3,15 @@
3
3
  Published release images are available from GitHub Container Registry:
4
4
 
5
5
  ```bash
6
- docker pull ghcr.io/oaslananka/ssh-mcp-pro:1.0.0
7
- docker run --rm ghcr.io/oaslananka/ssh-mcp-pro:1.0.0 --version
6
+ docker pull ghcr.io/oaslananka/ssh-mcp-pro:1.4.1
7
+ docker run --rm ghcr.io/oaslananka/ssh-mcp-pro:1.4.1 --version
8
8
  ```
9
9
 
10
10
  Each release publishes a multi-platform OCI image for `linux/amd64` and
11
11
  `linux/arm64`. The release workflow publishes two exact tags:
12
12
 
13
- - `ghcr.io/oaslananka/ssh-mcp-pro:<semver>` such as `1.0.0`
14
- - `ghcr.io/oaslananka/ssh-mcp-pro:<git-tag>` such as `v1.0.0`
13
+ - `ghcr.io/oaslananka/ssh-mcp-pro:<semver>` such as `1.4.1`
14
+ - `ghcr.io/oaslananka/ssh-mcp-pro:<git-tag>` such as `ssh-mcp-pro-v1.4.1`
15
15
 
16
16
  The project does not publish a mutable `latest` tag. Prefer digest-pinned
17
17
  references in production so container deployments match the npm package,
@@ -0,0 +1,34 @@
1
+ # Doppler secrets for hosted SSH MCP Pro
2
+
3
+ Hosted deployments use **Coolify's native Doppler secret-manager integration**. The app must not require a Doppler CLI process, an extra credential in the container, or a GitHub Actions `DOPPLER_TOKEN` merely to start.
4
+
5
+ ## Configure once
6
+
7
+ 1. In Coolify, open **Keys & Tokens → Integration Tokens** and configure a Doppler token with access only to the intended project/config. Prefer a service token scoped to one environment.
8
+ 2. Open the SSH MCP Pro application and select **Environment Variables → Secret manager**. Attach the existing Doppler integration token. If the token does not already fix a project and config, enter the correct project and config.
9
+ 3. Add the following runtime environment variable **references** in Coolify. The values are placeholders resolved by Coolify at deployment; the provider secrets themselves must not be copied into GitHub or the image.
10
+
11
+ ```dotenv
12
+ GITHUB_CLIENT_ID={{vault.GITHUB_CLIENT_ID}}
13
+ GITHUB_CLIENT_SECRET={{vault.GITHUB_CLIENT_SECRET}}
14
+ GOOGLE_CLIENT_ID={{vault.GOOGLE_CLIENT_ID}}
15
+ GOOGLE_CLIENT_SECRET={{vault.GOOGLE_CLIENT_SECRET}}
16
+ ```
17
+
18
+ 4. Keep non-secret settings such as `PUBLIC_BASE_URL`, `MCP_RESOURCE_URL`, callback URLs and port configuration as normal Coolify environment variables. For the SQLite single-instance deployment, use `DATABASE_URL=file:/app/data/sshautomator.db` and persist **/app/data** for the database and both signing-key files.
19
+ 5. Keep `AUTH_ALLOW_ALL_USERS=false` until real multi-user isolation and OAuth acceptance tests pass. Configure account allowlists intentionally, without embedding personal accounts in public documentation.
20
+
21
+ Coolify resolves `{{vault.KEY}}` references at startup or deployment and does not store the resolved provider values in its application configuration. A missing provider key should block deployment instead of falling back to an anonymous or insecure mode.
22
+
23
+ ## Operations
24
+
25
+ - Rotate or update values in Doppler, then restart the application for runtime-only secrets or redeploy when build-time values changed.
26
+ - Verify both GitHub and Google callback routes, OAuth issuer/audience/nonce validation, authorization decisions and device enrollment before public launch.
27
+ - Protect the persistent SQLite data and signing keys with an independently recoverable backup. Keep only the production replica and a verified rollback image.
28
+ - Never expose a Doppler service token, Google/GitHub client secret, access token, callback code, or full environment dump in logs or issue reports.
29
+
30
+ ## Local development
31
+
32
+ Local work can use the existing `doppler run -- pnpm run start:http` workflow, or a local non-committed `.env` file. The local bootstrap script is optional and does not modify the Coolify integration.
33
+
34
+ See [Coolify deployment](coolify.md) for build and data paths and [Coolify's secret-manager documentation](https://coolify.io/docs/integrations/security/using-secret-managers) for the current integration UI.
@@ -1,7 +1,7 @@
1
1
  # OpenSSF Best Practices — Evidence
2
2
 
3
3
  Self-assessment against the [OpenSSF Best Practices Passing criteria](https://www.bestpractices.dev/en/criteria/0),
4
- current as of 2026-07-03. This is a repo-side evidence log, not an official OpenSSF
4
+ originally assessed 2026-07-03; published release notes independently rechecked 2026-11-10. This is a repo-side evidence log, not an official OpenSSF
5
5
  artifact — the actual badge is issued by submitting these answers at
6
6
  [bestpractices.dev](https://www.bestpractices.dev/). See `.bestpractices.json` for the
7
7
  same answers in a structured tracking form used to prepare that submission.
@@ -19,7 +19,7 @@ vocabulary.
19
19
  | License is OSI-approved | Met | MIT |
20
20
  | Documentation: basic description of purpose | Met | README.md intro |
21
21
  | Documentation: how to obtain/provide feedback and contribute | Met | CONTRIBUTING.md, SUPPORT.md |
22
- | Interim versions/releases are identifiable | Met | Conventional Commits + release-please tagging (pending first tag — see gap analysis) |
22
+ | Interim versions/releases are identifiable | Met | Conventional Commits + release-please tagging (GitHub releases v1.4.0 and v1.4.1 verified 2026-11-10) |
23
23
 
24
24
  ## Change control
25
25
 
@@ -68,8 +68,12 @@ vocabulary.
68
68
 
69
69
  ## Bottom line
70
70
 
71
- As of 2026-07-03, the CodeQL blocker has been resolved. The remaining blocker is
72
- "cut a first release," already tracked in [ROADMAP.md](../ROADMAP.md), plus triaging
73
- the new Trivy container-image findings noted above. Nothing in this evidence log claims
74
- Silver or Gold; see [docs/openssf-gap-analysis.md](openssf-gap-analysis.md) for why
75
- those are out of reach right now.
71
+ As of 2026-11-10 the historical first-release blocker is resolved:
72
+ GitHub Releases v1.4.0 and v1.4.1 are published with notes. npm
73
+ `latest` remains v1.4.0 due to the intentionally separate manual registry
74
+ publication. Do not equate release notes with an npm publication or hosted deployment.
75
+
76
+ Historical 2026-07-03 image-scanning findings below are not a current scan.
77
+ Do not claim a current container CVE count without a new scan.
78
+ This internal self-assessment is still not submitted to Best Practices;
79
+ no Passing, Silver or Gold badge is claimed.
@@ -11,10 +11,10 @@ See [docs/openssf-evidence.md](openssf-evidence.md) for the full criterion table
11
11
  ~~Seven open CodeQL alerts (one High) with no fully-current documented disposition.~~
12
12
  **Resolved 2026-07-03** — see `SECURITY_DECISIONS.md`.
13
13
 
14
- The remaining concrete blocker: no release has been cut yet, so "release notes exist
15
- for each release" is unverified in practice even though the mechanism (release-please +
16
- CHANGELOG) is implemented. Tracked in [ROADMAP.md](../ROADMAP.md) and as a recommended
17
- issue in [docs/repo-maturity-report.md](repo-maturity-report.md).
14
+ **2026-11-10 update:** The first-release blocker is resolved: GitHub Releases
15
+ v1.4.0 and v1.4.1 contain release notes. npm `latest` remains
16
+ v1.4.0 under a separate manual publishing workflow. This does not imply
17
+ an official Best Practices submission or a completed hosted deployment.
18
18
 
19
19
  A new, unrelated item surfaced the same day: Trivy container-image scanning (added
20
20
  after this document was first written) found 50+ open findings against the built
@@ -57,7 +57,6 @@ preconditions are absent — and they are absent here:
57
57
  | High test coverage sustained over time | Coverage thresholds exist (85–90%) but "sustained over time" needs release/version history that doesn't exist yet (repo is 5 days old) |
58
58
  | Repeatable/reproducible release process | Implemented (SBOM, checksums, provenance) but never executed — zero releases published |
59
59
 
60
- **This is a gap list, not a target with a date.** None of these should be worked toward
61
- by editing files; they require either time (release/contribution history accruing
62
- naturally) or a maintainer decision (branch protection, recruiting a co-maintainer).
63
- Revisit this analysis after the "Silver" preconditions above are met.
60
+ **This is a dated internal self-assessment, not an official badge.**
61
+ Do not require a second human maintainer solely for a score. Re-evaluate
62
+ criteria using current evidence before making an external submission.
@@ -33,9 +33,20 @@ with extra arguments don't break the server.
33
33
 
34
34
  ## `ssh-mcp-pro-agent`
35
35
 
36
- Delegates directly to `src/remote/agent-cli.ts` via `argv` passthrough. See
37
- [docs/remote-mcp-hardening.md](../remote-mcp-hardening.md) and
38
- [docs/adding-a-device.md](../adding-a-device.md) for the documented agent workflows —
39
- this reference intentionally doesn't restate flags that aren't yet enumerated in one
40
- place in the source, to avoid documenting something that could drift silently from the
41
- implementation.
36
+ Source of truth: [src/remote/agent-cli.ts](../../src/remote/agent-cli.ts).
37
+
38
+ | Command | Effect |
39
+ | --- | --- |
40
+ | (no args), `help`, `--help`, `-h` | Print usage and exit successfully |
41
+ | `--version`, `-v` | Print the installed package version and exit |
42
+ | `enroll --server <url> --token <token> [--alias <alias>]` | Exchange a one-time enrollment token and save agent credentials |
43
+ | `run` | Connect the enrolled outbound agent to its control plane |
44
+ | `status` | Show local enrollment and current policy, not live connectivity |
45
+ | `logs [--tail 60] [--follow]` | Read agent activity logs; `--follow` streams updates |
46
+ | `install-service` | Print platform service setup guidance; does not install anything |
47
+ | `uninstall-service` | Print platform service removal guidance; does not remove anything |
48
+
49
+ Unknown commands fail with a nonzero exit code. For a persistent service, use the
50
+ [platform bootstrap installer](../adding-a-device.md#step-2--run-the-bootstrap-on-the-new-device).
51
+ The `install-service` and `uninstall-service` commands are advisory, not installers.
52
+ Treat enrollment tokens as secrets and never paste them into issues or logs.
@@ -13,7 +13,7 @@ LTS line). This is expected, not an oversight.
13
13
 
14
14
  ## Package manager
15
15
 
16
- pnpm `11.28.5`, enforced via `packageManager` in `package.json` and `engine-strict=true`.
16
+ pnpm `11.28.10`, enforced via `packageManager` in `package.json` and `engine-strict=true`.
17
17
  npm/yarn are not supported installation paths for *developing* this repo (consumers
18
18
  installing the published package via npm/npx are unaffected — see
19
19
  [README.md#installation](../../README.md#installation)).
@@ -4,12 +4,8 @@ Dependency audit exceptions are a last resort. They must be scoped to a specific
4
4
 
5
5
  The canonical workspace, Docker image, and release lockfile must remain free of known moderate-or-higher advisories. `pnpm run audit:packed` separately installs the generated npm tarball as an external consumer and rejects every advisory that is not listed in the exception file. It also rejects expired or stale exceptions.
6
6
 
7
- ## Active exception
7
+ ## Active exceptions
8
8
 
9
- | Advisory | Package path | Scope | Reachability assessment | Owner | Expires |
10
- | --- | --- | --- | --- | --- | --- |
11
- | `GHSA-frvp-7c67-39w9` | `ssh-mcp-pro > @modelcontextprotocol/sdk > @hono/node-server` | Published npm consumer graph | The affected `serve-static` implementation is not imported or invoked by ssh-mcp-pro. HTTP entrypoints use the project's own Node HTTP implementation. | `@oaslananka` | 2026-08-23 |
9
+ **None as of 2026-11-02.** The v2 MCP SDK package migration replaces the legacy v1 SDK graph. The published-consumer audit reports zero accepted time-bounded exceptions; the machine-readable list is empty.
12
10
 
13
- The latest `@modelcontextprotocol/sdk` release still constrains `@hono/node-server` to the vulnerable 1.x major. Local, CI, and container installs use the patched 2.x major through the root workspace override. npm consumers do not inherit dependency-package overrides, so the exception remains visible only for the independently installed tarball.
14
-
15
- Remove the exception immediately when the MCP SDK accepts `@hono/node-server >=2.0.5`, or before introducing any use of the Hono Node adapter or `serve-static`.
11
+ The historical `GHSA-frvp-7c67-39w9` exception for the old v1 SDK's transitive `@hono/node-server` chain is no longer active. The v2 Node adapter resolves the patched `@hono/node-server` 2.x dependency. Future exceptions require an explicit evidence-based review and a machine-readable expiry, not an informal ignore rule.
@@ -0,0 +1,81 @@
1
+ # Hosted remote-agent data inventory
2
+
3
+ **Engineering evidence only — not a privacy notice or terms of service.**
4
+ This document describes the repository's remote control-plane source
5
+ on 2026-11-04, **not necessarily the version deployed in production**.
6
+ It does not claim legal compliance or promise any retention period.
7
+
8
+ ## Data handled in the remote control plane
9
+
10
+ | Category | Recorded data | Implementation evidence |
11
+ | --- | --- | --- |
12
+ | Account identity | GitHub ID/login/name or Google ID/email/name when configured | SQLite `users` in [remote store](../../src/remote/store.ts) |
13
+ | Dashboard sessions | Random browser session token, a stored token hash, user ID and expiry | `dashboard_sessions` in [remote store](../../src/remote/store.ts) and [dashboard](../../src/remote/web-dashboard.ts) |
14
+ | OAuth clients/codes | Client identity, redirect URIs, scopes and hashed authorization codes with expiry and use status | `oauth_clients` and `oauth_authorization_codes` in [remote store](../../src/remote/store.ts) |
15
+ | Devices | Alias, public key, policy, status, host metadata and last seen | `agents` in [remote store](../../src/remote/store.ts) |
16
+ | Enrollment | Hashed one-time tokens with expiration and use status | `agent_enrollment_tokens` in [remote store](../../src/remote/store.ts) |
17
+ | Remote actions | Tool and capability, **arguments**, status, deadline, **result**, and error details | `actions` in [remote store](../../src/remote/store.ts) |
18
+ | Security events | Event type/severity/time, optional user/device/action IDs and metadata | `audit_events` in [remote store](../../src/remote/store.ts) |
19
+ | Local agent credentials | Agent private key, server URL, device ID and execution policy | Local file described in [agent CLI](../../src/remote/agent-cli.ts) |
20
+
21
+ Remote actions can return stdout, stderr, file output and host logs.
22
+ The [executor](../../src/remote/agent-executor.ts) bounds output sizes,
23
+ but bounded size is **not** automatic secret redaction. Arguments and
24
+ results can contain sensitive host information and are persisted as JSON
25
+ in the action table.
26
+
27
+ ## Expiration and erasure: observed behavior
28
+
29
+ - Dashboard cookies and session records are valid for 24 hours. Logout
30
+ deletes the current session, while periodic maintenance also deletes
31
+ session rows whose expiration time has passed.
32
+ - OAuth authorization codes and device enrollment tokens expire logically
33
+ and can be used only once. The existing minute maintenance tick also
34
+ removes physically expired code/token rows. Non-expired rows are retained
35
+ even if already used.
36
+ - The periodic cleanup also clears in-memory OAuth and connection state.
37
+ It does **not** impose automatic retention/deletion on users, OAuth
38
+ clients, devices, action history, audit events or infrastructure logs.
39
+ - Dashboard **Remove device** revokes/disconnects that device, then deletes
40
+ the device row, associated enrollment token records and its action rows.
41
+ **Audit events remain** for security review. **Revoke** by itself
42
+ changes device status and is not the same as Remove device.
43
+ - No account-level export/erasure workflow, audit-erasure workflow, or
44
+ global retention/deletion job for users, clients, actions and audit
45
+ events was found in the inspected remote routes and store.
46
+
47
+ Source: [dashboard](../../src/remote/web-dashboard.ts),
48
+ [store](../../src/remote/store.ts),
49
+ [OAuth handler](../../src/remote/oauth-handler.ts),
50
+ [control plane](../../src/remote/control-plane.ts).
51
+
52
+ ## Deployment and third-party boundaries
53
+
54
+ The documented [Coolify deployment](../coolify.md) uses one SQLite
55
+ replica and a persistent `/app/data` volume for the database and
56
+ signing keys. Redeploying the application does not itself remove the
57
+ volume. OAuth login involves GitHub or Google depending on configuration.
58
+ Infrastructure access logs, provider-side logs, external processing,
59
+ hosting jurisdiction and infrastructure-level backups **cannot be
60
+ inferred from the repository's database schema**.
61
+
62
+ ## Verify before drafting a user-facing privacy notice and terms
63
+
64
+ 1. Confirm operator identity, responsible contact and intended account scope.
65
+ 2. Verify actual hosting region, infrastructure/OAuth processors, logs and
66
+ their configured retention; do not purchase new services to do so.
67
+ 3. Decide accurate retention and deletion behavior for identities, sessions,
68
+ authorization records, command args/results and audit events. Explain
69
+ the surviving audit trail after Remove device.
70
+ 4. Define an actionable access/correction/deletion request process before
71
+ promising rights, methods or timelines.
72
+ 5. Verify agent/SSH-host data transfer, user responsibilities and any
73
+ external storage or telemetry not visible in these source files.
74
+ 6. Publish **separate**, reviewed HTTPS privacy and terms documents.
75
+ `SECURITY.md` concerns vulnerability reports; the MIT `LICENSE`
76
+ concerns source licensing. Neither is a substitute.
77
+
78
+ ChatGPT, Claude and Gemini application metadata must remain
79
+ `publishReady: false` until these and the other launch conditions
80
+ are genuinely complete. This inventory is engineering
81
+ evidence, **not** a published privacy policy.
@@ -0,0 +1,9 @@
1
+ # SonarQube Cloud analysis
2
+
3
+ This repository uses **SonarQube Cloud Automatic Analysis** for GitHub pull requests and the default branch. SonarScanner must not run in GitHub Actions while automatic analysis is enabled; the two methods conflict.
4
+
5
+ The GitHub CI workflow runs Node 24 and 26 test/coverage gates and uploads LCOV coverage artifacts. Vitest enforces local coverage thresholds independently of SonarQube Cloud. SonarQube Cloud automatic analysis **cannot import LCOV coverage**: its quality gate must not be interpreted as measuring this repository's test coverage. The project coverage minimum remains enforced in CI.
6
+
7
+ Do not add `SONAR_TOKEN`, another Doppler credential-fetch step, or `sonarqube-scan-action` to this workflow for automatic analysis. To migrate back to CI analysis, first explicitly switch off Automatic Analysis in SonarQube Cloud, then implement a single authenticated scanner pipeline and restore LCOV import.
8
+
9
+ Security and maintainability findings, especially new-code duplication, remain enforced by SonarQube Cloud's independent GitHub PR check. Do not weaken duplication thresholds or bypass repository rules to make CI green.
@@ -10,7 +10,7 @@ and [Reference](../reference/README.md) for the full option set.
10
10
 
11
11
  You need:
12
12
 
13
- - Node.js `>=22.22.2` (or `>=24.15.0` / `>=26.3.0`) and pnpm `>=11.0.9`.
13
+ - Node.js `>=22.22.2` (or `>=24.15.0` / `>=26.3.0`) and pnpm `^11.28.10`.
14
14
  - At least one host you can already reach with plain `ssh`, with its key already in
15
15
  your `~/.ssh/known_hosts` (this tutorial uses the default `strict` host-key policy —
16
16
  see [SECURITY_DECISIONS.md](../../SECURITY_DECISIONS.md) for why).
package/mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "ssh-mcp-pro",
3
3
  "display_name": "ssh-mcp-pro",
4
4
  "description": "Secure MCP SSH automation server with policy controls, resources, prompts, stdio, and HTTP.",
5
- "version": "1.2.3",
5
+ "version": "1.4.2",
6
6
  "author": "Osman Aslan",
7
7
  "license": "MIT",
8
8
  "runtime": "node",