@remcp/runtime 0.2.34 → 0.2.36

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.36 — 2026-09-18
4
+
5
+ - Documentation and runtime introspection now describe the current 44-tool local surface instead of
6
+ older 35/43-tool snapshots.
7
+ - `get_runtime_info` explicitly distinguishes its read-only report from the four preferences that
8
+ `set_config_value` may change. Access roots, blocked commands, the command guardrail, shell,
9
+ write limit, runtime name and unrestricted mode remain local to the computer.
10
+ - Package/review documentation now matches the published runtime dependencies and the current
11
+ trusted-publishing release flow.
12
+
3
13
  ## 0.2.34 — 2026-09-18
4
14
 
5
15
  - Lockstep security release with the ReMCP client. Runtime behavior is unchanged from 0.2.33.
package/README.md CHANGED
@@ -27,27 +27,32 @@ npx @remcp/runtime # MCP server over stdio
27
27
 
28
28
  ## Tools
29
29
 
30
- 35 tools, all implemented in this repository. Nothing is gated behind an approval step: a tool call
30
+ 44 tools, all implemented in this repository. Nothing is gated behind an approval step: a tool call
31
31
  executes.
32
32
 
33
33
  | Area | Tools |
34
34
  | --- | --- |
35
- | Read | `read_file`, `read_multiple_files`, `read_image`, `read_binary`, `list_directory` (glob filter), `get_file_info`, `hash_file`, `diff_files` |
36
- | Write | `write_file`, `write_binary`, `edit_block` (whitespace-tolerant fallback, optional `dry_run`), `replace_lines`, `replace_in_files` |
37
- | Organise | `create_directory`, `move_file`, `copy_file`, `move_to_trash`, `create_archive`, `extract_archive` |
35
+ | Read | `read_file`, `read_files`, `read_multiple_files`, `read_image`, `read_binary`, `list_directory`, `get_file_info`, `hash_file`, `diff_files` |
36
+ | Write / edit | `write_file`, `write_files`, `write_binary`, `apply_patch`, `set_permissions`, `edit_block`, `replace_lines`, `replace_in_files` |
37
+ | Organise | `create_directory`, `move_file`, `copy_file`, `copy_paths`, `move_paths`, `move_to_trash`, `create_archive`, `extract_archive` |
38
+ | Delete | `delete_path`, `delete_paths` |
38
39
  | Transfer | `read_binary` / `write_binary` stream any file as base64 chunks in both directions; `create_archive` / `extract_archive` move whole trees |
39
40
  | Screen | `take_screenshot` returns the desktop as an image on Linux, macOS, and Windows |
40
41
  | Search | `start_search`, `get_more_search_results`, `stop_search`, `list_searches` |
41
42
  | Processes | `start_process`, `read_process_output`, `wait_for_process_output`, `interact_with_process`, `force_terminate`, `list_sessions`, `list_processes`, `kill_process` |
42
- | Introspection | `get_system_info`, `get_runtime_info`, `get_runtime_stats` |
43
+ | Runtime | `get_system_info`, `get_runtime_info`, `get_runtime_stats`, `set_config_value` |
43
44
 
44
- The hosted ReMCP endpoint adds `list_devices` so a model can pick a machine. Everything else the
45
- agent may need — service management, package installs, git, docker, `sudo` — runs through
46
- `start_process`, which is an unrestricted shell for the account running the agent.
45
+ The hosted ReMCP endpoint adds eight account/relay tools `list_devices`, `ping_device`,
46
+ `who_am_i`, `create_pairing_command`, `get_recent_tool_calls`, `get_usage_statistics`,
47
+ `get_configuration`, and `rename_device` for a 52-tool public surface. Everything else the
48
+ agent may need, including service management, package installs, git and docker, runs through
49
+ `start_process` with the permissions of the account running the agent.
47
50
 
48
- There is deliberately no `set_config_value` (a model must not rewrite its own device limits; use the
49
- file) and no `write_pdf`/spreadsheet/DOCX tooling (that is what drags Puppeteer, `sharp`, and
50
- `exceljs` onto your computer use `start_process` with whatever tool you already have).
51
+ `set_config_value` is deliberately narrow: it can change only `telemetryEnabled`,
52
+ `maxReadLines`, `maxBufferedLines`, and `maxOutputBytes`. Access roots, blocked commands,
53
+ the command guardrail, shell, write limit, runtime name, and unrestricted mode stay with the person
54
+ at the computer. There is no `write_pdf`/spreadsheet/DOCX tooling; use `start_process` with the
55
+ document tools already installed on your machine.
51
56
 
52
57
  `--print-tools` prints the exact JSON contract (schemas and annotations) the runtime advertises, and
53
58
  `src/catalog.mjs` is the single source of truth for it.
@@ -187,13 +192,13 @@ This runtime is an independent implementation written for ReMCP. It is not a for
187
192
  code with, [DesktopCommanderMCP](https://github.com/wonderwhy-er/DesktopCommanderMCP) or any other
188
193
  MCP server.
189
194
 
190
- | | Desktop Commander 0.2.50 | ReMCP runtime 0.2.0 |
195
+ | | Desktop Commander 0.2.50 | ReMCP runtime |
191
196
  | --- | --- | --- |
192
- | Tools | 26, including config mutators and document tooling | 35, including binary transfer, archives, screenshots, and diffs |
197
+ | Tools | 26, including config mutators and document tooling | 44, including binary transfer, bulk file operations, archives, screenshots, search, process control, and narrowly scoped runtime preferences |
193
198
  | Runtime dependencies | 34 (Supabase, Puppeteer/md-to-pdf, `sharp`, `exceljs`, Tiptap, ripgrep download) | 2 direct (`@modelcontextprotocol/sdk`, `@jellybrick/dbus-next`) |
194
199
  | Install scripts | `postinstall` posts an install payload that ignores the telemetry setting | none |
195
200
  | Telemetry | opt-out, 51 event names, remote feature flags, A/B assignment, third-party processor | opt-out, whitelisted event schema, no endpoint, no flags |
196
- | Install size | 3.78 MB unpacked, 249 files | ~110 kB unpacked, 20 files |
201
+ | Package footprint | 3.78 MB unpacked, 249 files | small first-party runtime package; no bundled browser or document-rendering stack |
197
202
  | `read_file` | also fetches arbitrary URLs (SSRF surface) | local files only; `read_binary` transfers any file as base64 |
198
203
  | Command guardrails | always on, 32 substring-blocked commands, advisory; also refuses read-only mentions | `warn` by default (never blocks), `allow`/`block` opt-in, command-word matching |
199
204
  | Confinement | always on, checked against the lexical path | opt-in, checked against the resolved real path |
@@ -202,10 +207,11 @@ MCP server.
202
207
  | Termination | session kill only | whole process group, plus runtime supervision and restart |
203
208
 
204
209
  What ReMCP deliberately does not implement, and why: document rendering (`write_pdf`) and spreadsheet
205
- handling would put Puppeteer, `sharp`, and `exceljs` on your computer; `get_config`/`set_config_value`
206
- would let the model change its own limits; local usage history would write your arguments to disk;
207
- URL reads in `read_file` would add an SSRF surface. Everything else the upstream server can do has an
208
- equivalent here, and the tool count is higher.
210
+ handling would put Puppeteer, `sharp`, and `exceljs` on your computer; unrestricted configuration
211
+ mutation is intentionally absent `set_config_value` is limited to four non-security preferences,
212
+ while access roots and command security remain local; local usage history would write your arguments
213
+ to disk; URL reads in `read_file` would add an SSRF surface. Everything else the upstream server can
214
+ do has an equivalent here, and the tool count is higher.
209
215
 
210
216
  ## License
211
217
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remcp/runtime",
3
- "version": "0.2.34",
3
+ "version": "0.2.36",
4
4
  "description": "First-party ReMCP local device runtime: file, search, terminal and process tools over MCP for computers paired with ReMCP.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/catalog.mjs CHANGED
@@ -725,7 +725,7 @@ export const toolDefinitions = [
725
725
  {
726
726
  name: 'get_runtime_info',
727
727
  title: 'Get runtime info',
728
- description: 'Report this device runtime: version, configuration, allowed roots, command policy, output limits, and whether usage metrics are enabled. Read-only; configuration cannot be changed through MCP.',
728
+ description: 'Report this device runtime: version, allowed roots, command policy, output limits, settable preferences, and whether usage metrics are enabled. Read-only; use set_config_value only for telemetryEnabled, maxReadLines, maxBufferedLines, or maxOutputBytes. Access roots and command security stay local to the computer.',
729
729
  inputSchema: { type: 'object', properties: {}, additionalProperties: false },
730
730
  annotations: readOnly,
731
731
  handler: statsToolHandlers.get_runtime_info,
@@ -6,8 +6,9 @@ import { telemetryStatus } from '../telemetry.mjs';
6
6
  import { VERSION } from '../version.mjs';
7
7
  import { text } from '../util.mjs';
8
8
 
9
- // Read-only introspection. Unlike the upstream Desktop Commander there is deliberately
10
- // no set_config_value: a model must not be able to rewrite its own device limits.
9
+ // Read-only introspection. Mutating configuration is a separate, deliberately narrow tool:
10
+ // set_config_value can change only telemetry and context/output preferences; access roots,
11
+ // command security, the shell, write limit, name, and unrestricted mode remain local-only.
11
12
  export async function getRuntimeInfoTool() {
12
13
  const telemetry = telemetryStatus();
13
14
  return text(JSON.stringify({