@remcp/remcp 0.1.0 → 0.1.1
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/README.md +29 -12
- package/package.json +1 -2
- package/public/authorize.html +3 -3
- package/public/copy.js +49 -0
- package/public/docs.html +50 -14
- package/public/index.html +29 -5
- package/public/privacy.html +4 -6
- package/public/security.html +4 -6
- package/public/style.css +46 -18
- package/public/support.html +8 -6
- package/public/terms.html +4 -6
- package/src/agent.mjs +4 -3
- package/src/cli.mjs +104 -32
- package/src/config.mjs +1 -1
- package/src/mcp.mjs +11 -6
- package/src/server.mjs +6 -5
- package/src/tool-catalog.json +24 -64
- package/src/version.mjs +8 -0
package/README.md
CHANGED
|
@@ -16,23 +16,42 @@ ChatGPT / MCP client ── OAuth + HTTPS ──> ReMCP server
|
|
|
16
16
|
|
|
17
17
|
The central service stores account/device metadata, hashed reusable credentials and OAuth state. Actual filesystem and process access stays on the paired computer.
|
|
18
18
|
|
|
19
|
-
## Install
|
|
19
|
+
## Install and pair
|
|
20
20
|
|
|
21
|
-
Requires Node.js 22.5 or newer.
|
|
21
|
+
Requires Node.js 22.5 or newer. Generate a one-time pairing code after signing in at https://remcp.delio24.com, then run:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npx @remcp/remcp connect --server https://remcp.delio24.com --code YOUR_PAIRING_CODE --install
|
|
24
|
+
npx --yes @remcp/remcp@latest connect --server https://remcp.delio24.com --code YOUR_PAIRING_CODE --install
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
`--install` creates a persistent global `remcp` CLI and Linux user service. The initial `npx` execution is only the bootstrap step.
|
|
28
|
+
|
|
29
|
+
Verify:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
remcp --version
|
|
33
|
+
remcp status
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Update
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
remcp update
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This updates the global CLI to the latest published release, refreshes the compatible local runtime, and restarts the installed user service.
|
|
43
|
+
|
|
28
44
|
## CLI
|
|
29
45
|
|
|
30
46
|
```text
|
|
31
|
-
remcp
|
|
32
|
-
remcp
|
|
33
|
-
remcp
|
|
34
|
-
remcp
|
|
35
|
-
remcp
|
|
47
|
+
remcp start Run the device agent in the foreground
|
|
48
|
+
remcp status Check pairing, version and server health
|
|
49
|
+
remcp doctor Alias for status
|
|
50
|
+
remcp update Update ReMCP and restart the installed service
|
|
51
|
+
remcp install Install or repair the user service
|
|
52
|
+
remcp uninstall Remove the user service
|
|
53
|
+
remcp uninstall --purge Remove the service and global ReMCP packages
|
|
54
|
+
remcp --version Print the installed CLI version
|
|
36
55
|
```
|
|
37
56
|
|
|
38
57
|
## Self-host the server
|
|
@@ -78,6 +97,4 @@ npm audit --omit=dev
|
|
|
78
97
|
|
|
79
98
|
## License
|
|
80
99
|
|
|
81
|
-
ReMCP is MIT licensed.
|
|
82
|
-
|
|
83
|
-
ReMCP does not require or depend on the proprietary Remote Desktop Commander hosted relay service.
|
|
100
|
+
ReMCP is MIT licensed. Third-party notices for the local device runtime are preserved in `THIRD_PARTY_NOTICES.md`. ReMCP is self-hostable and does not depend on a proprietary hosted relay.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remcp/remcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Self-hosted remote MCP bridge for securely controlling your own computers from MCP clients.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
33
|
-
"@wonderwhy-er/desktop-commander": "^0.2.50",
|
|
34
33
|
"express": "^5.2.1",
|
|
35
34
|
"express-rate-limit": "^8.7.0",
|
|
36
35
|
"helmet": "^8.3.0",
|
package/public/authorize.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>Authorize · ReMCP</title>
|
|
9
9
|
<meta name="description" content="Authorize an MCP client to access computers paired to your ReMCP account.">
|
|
10
10
|
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/style.css?v=
|
|
11
|
+
<link rel="stylesheet" href="/style.css?v=remcp-012">
|
|
12
12
|
<meta property="og:site_name" content="ReMCP">
|
|
13
13
|
<meta property="og:image" content="https://remcp.delio24.com/assets/og-remcp.png">
|
|
14
14
|
<link rel="icon" href="/favicon.ico" sizes="any">
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
29
29
|
<span translate="no">ReMCP</span>
|
|
30
30
|
</a>
|
|
31
|
-
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
31
|
+
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
32
32
|
</header>
|
|
33
33
|
<main id="oauth-main" class="oauth-shell">
|
|
34
34
|
<section class="oauth-card">
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
</div>
|
|
63
63
|
<p id="status" class="muted" aria-live="polite"></p>
|
|
64
64
|
<p id="error" class="error" role="alert" aria-live="assertive"></p>
|
|
65
|
-
<p class="footer-mini"><a href="/
|
|
65
|
+
<p class="footer-mini"><a href="/docs">Docs</a> · <a href="/docs#install">Install</a> · <a href="/docs#update">Update</a> · <a href="/security">Security</a> · <a href="/privacy">Privacy</a> · <a href="/terms">Terms</a></p>
|
|
66
66
|
</section>
|
|
67
67
|
</main>
|
|
68
68
|
<script type="module" src="/oauth-app.js?v=36155fefb47e"></script>
|
package/public/copy.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
function legacyCopy(text) {
|
|
2
|
+
const input = document.createElement('textarea');
|
|
3
|
+
input.value = text;
|
|
4
|
+
input.setAttribute('readonly', '');
|
|
5
|
+
input.style.position = 'fixed';
|
|
6
|
+
input.style.inset = '0 auto auto -9999px';
|
|
7
|
+
document.body.append(input);
|
|
8
|
+
input.select();
|
|
9
|
+
input.setSelectionRange(0, input.value.length);
|
|
10
|
+
const copied = document.execCommand('copy');
|
|
11
|
+
input.remove();
|
|
12
|
+
if (!copied) throw new Error('Clipboard write failed');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async function copyText(text) {
|
|
16
|
+
if (window.isSecureContext && navigator.clipboard?.writeText) {
|
|
17
|
+
try {
|
|
18
|
+
await navigator.clipboard.writeText(text);
|
|
19
|
+
return;
|
|
20
|
+
} catch {
|
|
21
|
+
legacyCopy(text);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
legacyCopy(text);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
document.addEventListener('click', async event => {
|
|
29
|
+
const button = event.target.closest('[data-copy]');
|
|
30
|
+
if (!button) return;
|
|
31
|
+
const target = document.querySelector(button.dataset.copy);
|
|
32
|
+
if (!target) return;
|
|
33
|
+
|
|
34
|
+
const original = button.textContent;
|
|
35
|
+
const originalLabel = button.getAttribute('aria-label') || 'Copy command';
|
|
36
|
+
try {
|
|
37
|
+
await copyText(target.textContent.trim());
|
|
38
|
+
button.textContent = 'Copied';
|
|
39
|
+
button.setAttribute('aria-label', 'Copied to clipboard');
|
|
40
|
+
} catch {
|
|
41
|
+
button.textContent = 'Copy failed';
|
|
42
|
+
button.setAttribute('aria-label', 'Copy failed. Select the command manually.');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
window.setTimeout(() => {
|
|
46
|
+
button.textContent = original;
|
|
47
|
+
button.setAttribute('aria-label', originalLabel);
|
|
48
|
+
}, 1400);
|
|
49
|
+
});
|
package/public/docs.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>Docs · ReMCP</title>
|
|
9
9
|
<meta name="description" content="Connect a computer to ReMCP and configure the hosted MCP endpoint.">
|
|
10
10
|
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/style.css?v=
|
|
11
|
+
<link rel="stylesheet" href="/style.css?v=remcp-012">
|
|
12
12
|
<meta property="og:site_name" content="ReMCP">
|
|
13
13
|
<meta property="og:image" content="https://remcp.delio24.com/assets/og-remcp.png">
|
|
14
14
|
<link rel="icon" href="/favicon.ico" sizes="any">
|
|
@@ -28,20 +28,57 @@
|
|
|
28
28
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
29
29
|
<span translate="no">ReMCP</span>
|
|
30
30
|
</a>
|
|
31
|
-
<nav aria-label="Primary"><a href="/docs" aria-current="page">Docs</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
31
|
+
<nav aria-label="Primary"><a href="/docs" aria-current="page">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
32
32
|
</header>
|
|
33
33
|
<main id="main" class="doc-shell">
|
|
34
|
-
<aside class="doc-nav" aria-label="Documentation"><a href="/docs" aria-current="page">Setup</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></aside>
|
|
34
|
+
<aside class="doc-nav" aria-label="Documentation"><a href="/docs" aria-current="page">Setup</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></aside>
|
|
35
35
|
<article class="prose">
|
|
36
36
|
<p class="eyebrow">Documentation</p>
|
|
37
|
-
<h1>
|
|
38
|
-
<p>
|
|
39
|
-
|
|
40
|
-
<h2>
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
<
|
|
44
|
-
<
|
|
37
|
+
<h1>Install, pair and keep ReMCP updated.</h1>
|
|
38
|
+
<p>Use <code>npx</code> once to pair a computer. With <code>--install</code>, ReMCP creates a persistent global CLI and a user service, so normal operation no longer depends on the temporary npx cache.</p>
|
|
39
|
+
|
|
40
|
+
<h2 id="requirements">1. Requirements</h2>
|
|
41
|
+
<p>Install Node.js 22.5 or newer. The computer needs outbound HTTPS/WSS access to <code>remcp.delio24.com</code>; no inbound device port is required.</p>
|
|
42
|
+
|
|
43
|
+
<h2 id="pair">2. Get a pairing code</h2>
|
|
44
|
+
<p>Open <a href="/#connect">the ReMCP workspace</a>, sign in, and choose <strong>Generate Command</strong>. Pairing codes are short-lived and single-use.</p>
|
|
45
|
+
|
|
46
|
+
<h2 id="install">3. Install and pair</h2>
|
|
47
|
+
<div class="code-row"><pre><code id="docs-command-1">npx --yes @remcp/remcp@latest connect --server https://remcp.delio24.com --code YOUR_CODE --install</code></pre><button class="copy-button code-copy" type="button" data-copy="#docs-command-1" aria-label="Copy command" aria-live="polite">Copy</button></div>
|
|
48
|
+
<p>This stores a device-specific credential locally, installs the persistent <code>remcp</code> CLI, installs the compatible local device runtime, and starts the ReMCP user service.</p>
|
|
49
|
+
|
|
50
|
+
<h3>Verify the installation</h3>
|
|
51
|
+
<div class="code-row"><pre><code id="docs-command-2">remcp --version
|
|
52
|
+
remcp status</code></pre><button class="copy-button code-copy" type="button" data-copy="#docs-command-2" aria-label="Copy command" aria-live="polite">Copy</button></div>
|
|
53
|
+
<p><code>status</code> shows the installed CLI version, paired device id, server URL and server health.</p>
|
|
54
|
+
|
|
55
|
+
<h2 id="mcp">4. Add the MCP endpoint</h2>
|
|
56
|
+
<div class="code-row"><pre><code id="docs-command-3">https://remcp.delio24.com/mcp</code></pre><button class="copy-button code-copy" type="button" data-copy="#docs-command-3" aria-label="Copy MCP endpoint" aria-live="polite">Copy</button></div>
|
|
57
|
+
<p>Choose OAuth when your MCP client asks for authentication. ReMCP uses authorization code flow with PKCE and refresh tokens.</p>
|
|
58
|
+
|
|
59
|
+
<h2 id="update">Update ReMCP</h2>
|
|
60
|
+
<div class="code-row"><pre><code id="docs-command-4">remcp update</code></pre><button class="copy-button code-copy" type="button" data-copy="#docs-command-4" aria-label="Copy command" aria-live="polite">Copy</button></div>
|
|
61
|
+
<p>The update command installs the latest published ReMCP CLI, refreshes the compatible local runtime, and restarts the user service when it is installed. Verify afterwards with <code>remcp --version</code> or <code>remcp status</code>.</p>
|
|
62
|
+
|
|
63
|
+
<h2 id="service">Service commands</h2>
|
|
64
|
+
<div class="code-row"><pre><code id="docs-command-5">remcp status
|
|
65
|
+
remcp doctor
|
|
66
|
+
remcp install
|
|
67
|
+
remcp start</code></pre><button class="copy-button code-copy" type="button" data-copy="#docs-command-5" aria-label="Copy command" aria-live="polite">Copy</button></div>
|
|
68
|
+
<p><code>start</code> runs the agent in the foreground. <code>install</code> repairs or reinstalls the persistent user service for an already paired computer.</p>
|
|
69
|
+
|
|
70
|
+
<h2 id="uninstall">Uninstall</h2>
|
|
71
|
+
<div class="code-row"><pre><code id="docs-command-6">remcp uninstall</code></pre><button class="copy-button code-copy" type="button" data-copy="#docs-command-6" aria-label="Copy command" aria-live="polite">Copy</button></div>
|
|
72
|
+
<p>This stops and removes the background user service but keeps the CLI and local pairing configuration.</p>
|
|
73
|
+
<div class="code-row"><pre><code id="docs-command-7">remcp uninstall --purge</code></pre><button class="copy-button code-copy" type="button" data-copy="#docs-command-7" aria-label="Copy command" aria-live="polite">Copy</button></div>
|
|
74
|
+
<p><code>--purge</code> also removes the globally installed ReMCP packages. The local pairing configuration remains in <code>~/.config/remcp</code> so it is not silently destroyed.</p>
|
|
75
|
+
|
|
76
|
+
<h2 id="connection-model">Connection model</h2>
|
|
77
|
+
<p>The device agent creates an outbound secure WebSocket connection to the relay. You do not need to expose a listener on the computer.</p>
|
|
78
|
+
<div class="notice"><strong>Review mutating actions.</strong><p>Some tools can write files or run processes. Review the action requested by your MCP client before approving it.</p></div>
|
|
79
|
+
|
|
80
|
+
<h2 id="self-hosting">Self-hosting</h2>
|
|
81
|
+
<p>The central ReMCP service runs in Docker with persistent account, device and OAuth metadata. Device agents run natively so host access does not require a privileged container.</p>
|
|
45
82
|
</article>
|
|
46
83
|
</main>
|
|
47
84
|
<footer class="site-footer">
|
|
@@ -49,10 +86,9 @@
|
|
|
49
86
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
50
87
|
<span translate="no">ReMCP</span>
|
|
51
88
|
</div>
|
|
52
|
-
<nav aria-label="Footer">
|
|
53
|
-
<a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a>
|
|
54
|
-
</nav>
|
|
89
|
+
<nav aria-label="Footer"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></nav>
|
|
55
90
|
<p>Open-source remote MCP infrastructure.</p>
|
|
56
91
|
</footer>
|
|
92
|
+
<script type="module" src="/copy.js?v=remcp-012"></script>
|
|
57
93
|
</body>
|
|
58
94
|
</html>
|
package/public/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>ReMCP — Your computers over MCP</title>
|
|
9
9
|
<meta name="description" content="Securely pair your own computers and use their files, terminal and processes through authenticated MCP clients.">
|
|
10
10
|
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/style.css?v=
|
|
11
|
+
<link rel="stylesheet" href="/style.css?v=remcp-012">
|
|
12
12
|
<meta property="og:site_name" content="ReMCP">
|
|
13
13
|
<meta property="og:image" content="https://remcp.delio24.com/assets/og-remcp.png">
|
|
14
14
|
<link rel="icon" href="/favicon.ico" sizes="any">
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
29
29
|
<span translate="no">ReMCP</span>
|
|
30
30
|
</a>
|
|
31
|
-
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
31
|
+
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
32
32
|
</header>
|
|
33
33
|
<main id="main">
|
|
34
34
|
<section class="hero">
|
|
@@ -56,6 +56,32 @@
|
|
|
56
56
|
<div><span>03</span><h2>Explicit control</h2><p>Read, write and destructive tools declare their behavior so MCP clients can apply the right review flow.</p></div>
|
|
57
57
|
</section>
|
|
58
58
|
|
|
59
|
+
<section id="install" class="quickstart">
|
|
60
|
+
<div class="section-heading">
|
|
61
|
+
<p class="eyebrow">Quick start</p>
|
|
62
|
+
<h2>One command to pair. One command to update.</h2>
|
|
63
|
+
<p>Use npx only for the first pairing. <code>--install</code> creates a persistent <code>remcp</code> CLI and background user service.</p>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="quickstart-grid">
|
|
66
|
+
<article class="command-card">
|
|
67
|
+
<span>01</span><h3>Install & pair</h3>
|
|
68
|
+
<div class="command-row"><code id="install-command">npx --yes @remcp/remcp@latest connect --server https://remcp.delio24.com --code YOUR_CODE --install</code><button class="copy-button" type="button" data-copy="#install-command">Copy</button></div>
|
|
69
|
+
<p>Generate <code>YOUR_CODE</code> in the workspace below.</p>
|
|
70
|
+
</article>
|
|
71
|
+
<article class="command-card">
|
|
72
|
+
<span>02</span><h3>Check</h3>
|
|
73
|
+
<div class="command-row"><code id="status-command">remcp status</code><button class="copy-button" type="button" data-copy="#status-command">Copy</button></div>
|
|
74
|
+
<p>Confirm the local CLI version, pairing and server health.</p>
|
|
75
|
+
</article>
|
|
76
|
+
<article id="update" class="command-card">
|
|
77
|
+
<span>03</span><h3>Update</h3>
|
|
78
|
+
<div class="command-row"><code id="update-command">remcp update</code><button class="copy-button" type="button" data-copy="#update-command">Copy</button></div>
|
|
79
|
+
<p>Updates the CLI and restarts the installed user service.</p>
|
|
80
|
+
</article>
|
|
81
|
+
</div>
|
|
82
|
+
<a class="text-link" href="/docs">Full installation and CLI guide <span aria-hidden="true">→</span></a>
|
|
83
|
+
</section>
|
|
84
|
+
|
|
59
85
|
<section id="connect" class="workspace">
|
|
60
86
|
<div class="section-heading">
|
|
61
87
|
<p class="eyebrow">Workspace</p>
|
|
@@ -120,9 +146,7 @@
|
|
|
120
146
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
121
147
|
<span translate="no">ReMCP</span>
|
|
122
148
|
</div>
|
|
123
|
-
<nav aria-label="Footer">
|
|
124
|
-
<a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a>
|
|
125
|
-
</nav>
|
|
149
|
+
<nav aria-label="Footer"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></nav>
|
|
126
150
|
<p>Open-source remote MCP infrastructure.</p>
|
|
127
151
|
</footer>
|
|
128
152
|
<script type="module" src="/app.js?v=14a728f07dd1"></script>
|
package/public/privacy.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>Privacy Policy · ReMCP</title>
|
|
9
9
|
<meta name="description" content="How ReMCP processes account, device, OAuth and remote-computer data.">
|
|
10
10
|
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/style.css?v=
|
|
11
|
+
<link rel="stylesheet" href="/style.css?v=remcp-012">
|
|
12
12
|
<meta property="og:site_name" content="ReMCP">
|
|
13
13
|
<meta property="og:image" content="https://remcp.delio24.com/assets/og-remcp.png">
|
|
14
14
|
<link rel="icon" href="/favicon.ico" sizes="any">
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
29
29
|
<span translate="no">ReMCP</span>
|
|
30
30
|
</a>
|
|
31
|
-
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
31
|
+
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
32
32
|
</header>
|
|
33
33
|
<main id="main" class="doc-shell">
|
|
34
|
-
<aside class="doc-nav" aria-label="
|
|
34
|
+
<aside class="doc-nav" aria-label="Documentation"><a href="/docs">Setup</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy" aria-current="page">Privacy</a><a href="/terms">Terms</a></aside>
|
|
35
35
|
<article class="prose">
|
|
36
36
|
<p class="eyebrow">Privacy</p>
|
|
37
37
|
<h1>Privacy Policy</h1>
|
|
@@ -52,9 +52,7 @@
|
|
|
52
52
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
53
53
|
<span translate="no">ReMCP</span>
|
|
54
54
|
</div>
|
|
55
|
-
<nav aria-label="Footer">
|
|
56
|
-
<a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a>
|
|
57
|
-
</nav>
|
|
55
|
+
<nav aria-label="Footer"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></nav>
|
|
58
56
|
<p>Open-source remote MCP infrastructure.</p>
|
|
59
57
|
</footer>
|
|
60
58
|
</body>
|
package/public/security.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>Security · ReMCP</title>
|
|
9
9
|
<meta name="description" content="How ReMCP isolates accounts, devices, credentials and remote MCP tool access.">
|
|
10
10
|
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/style.css?v=
|
|
11
|
+
<link rel="stylesheet" href="/style.css?v=remcp-012">
|
|
12
12
|
<meta property="og:site_name" content="ReMCP">
|
|
13
13
|
<meta property="og:image" content="https://remcp.delio24.com/assets/og-remcp.png">
|
|
14
14
|
<link rel="icon" href="/favicon.ico" sizes="any">
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
29
29
|
<span translate="no">ReMCP</span>
|
|
30
30
|
</a>
|
|
31
|
-
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/security" aria-current="page">Security</a><a href="/support">Support</a></nav>
|
|
31
|
+
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security" aria-current="page">Security</a><a href="/support">Support</a></nav>
|
|
32
32
|
</header>
|
|
33
33
|
<main id="main" class="doc-shell">
|
|
34
|
-
<aside class="doc-nav" aria-label="Documentation"><a href="/docs">Setup</a><a href="/security" aria-current="page">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></aside>
|
|
34
|
+
<aside class="doc-nav" aria-label="Documentation"><a href="/docs">Setup</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security" aria-current="page">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></aside>
|
|
35
35
|
<article class="prose">
|
|
36
36
|
<p class="eyebrow">Security</p>
|
|
37
37
|
<h1>A narrow relay between the model and your machine.</h1>
|
|
@@ -50,9 +50,7 @@
|
|
|
50
50
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
51
51
|
<span translate="no">ReMCP</span>
|
|
52
52
|
</div>
|
|
53
|
-
<nav aria-label="Footer">
|
|
54
|
-
<a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a>
|
|
55
|
-
</nav>
|
|
53
|
+
<nav aria-label="Footer"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></nav>
|
|
56
54
|
<p>Open-source remote MCP infrastructure.</p>
|
|
57
55
|
</footer>
|
|
58
56
|
</body>
|
package/public/style.css
CHANGED
|
@@ -87,6 +87,19 @@ main { display: block; }
|
|
|
87
87
|
.principles h2 { margin: 28px 0 9px; font-size: 21px; line-height: 1.2; letter-spacing: -.025em; }
|
|
88
88
|
.principles p { max-width: 330px; margin: 0; color: var(--muted); font-size: 15px; }
|
|
89
89
|
|
|
90
|
+
|
|
91
|
+
.quickstart { max-width: var(--container); margin: 0 auto; padding: clamp(72px, 9vw, 104px) 20px; border-top: 1px solid var(--line); }
|
|
92
|
+
.quickstart .section-heading { margin-left: 0; margin-right: 0; }
|
|
93
|
+
.quickstart-grid { display: grid; grid-template-columns: 1.35fr .8fr .8fr; gap: 0; margin: 34px 0 26px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
|
|
94
|
+
.command-card { min-width: 0; padding: 28px 28px 30px 0; }
|
|
95
|
+
.command-card + .command-card { padding-left: 28px; border-left: 1px solid var(--line); }
|
|
96
|
+
.command-card > span { color: var(--muted); font-size: 12px; font-variant-numeric: tabular-nums; }
|
|
97
|
+
.command-card h3 { margin: 18px 0 8px; font-size: 20px; letter-spacing: -.025em; }
|
|
98
|
+
.command-card p { margin: 12px 0 0; color: var(--muted); font-size: 14px; }
|
|
99
|
+
.command-card .command-row { margin-top: 14px; }
|
|
100
|
+
.site-header nav { min-width: 0; overflow-x: auto; scrollbar-width: none; }
|
|
101
|
+
.site-header nav::-webkit-scrollbar { display: none; }
|
|
102
|
+
|
|
90
103
|
.workspace { padding: clamp(72px, 9vw, 112px) 20px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--surface); }
|
|
91
104
|
.workspace > * { max-width: var(--container); margin-left: auto; margin-right: auto; }
|
|
92
105
|
.section-heading { max-width: 720px; margin-bottom: 45px; }
|
|
@@ -107,7 +120,8 @@ input:focus-visible { border-color: var(--accent); }
|
|
|
107
120
|
.button-row { display: flex; gap: 9px; margin-top: 5px; }
|
|
108
121
|
.divider { display: flex; align-items: center; gap: 11px; margin: 7px 0; color: var(--muted); font-size: 12px; }
|
|
109
122
|
.divider::before, .divider::after { content: ""; flex: 1; height: 1px; background: var(--line); }
|
|
110
|
-
.error {
|
|
123
|
+
.error { margin: 2px 0 0; color: var(--danger); font-size: 13px; }
|
|
124
|
+
p:empty, .error:empty, #status:empty { display: none; }
|
|
111
125
|
.identity { display: flex; align-items: center; gap: 11px; }
|
|
112
126
|
.identity small { display: block; color: var(--muted); }
|
|
113
127
|
.status-dot { width: 9px; height: 9px; flex: 0 0 9px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 4px var(--ok-soft); }
|
|
@@ -141,24 +155,27 @@ input:focus-visible { border-color: var(--accent); }
|
|
|
141
155
|
.site-footer { max-width: var(--container); min-height: 86px; margin: 0 auto; padding: 22px 20px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 26px; border-top: 1px solid var(--line); font-size: 13px; }
|
|
142
156
|
.site-footer p { margin: 0; color: var(--muted); text-align: right; }
|
|
143
157
|
|
|
144
|
-
.doc-shell { width: min(100%, var(--container)); margin: 0 auto; padding:
|
|
158
|
+
.doc-shell { width: min(100%, var(--container)); margin: 0 auto; padding: 48px 20px 76px; display: grid; grid-template-columns: 176px minmax(0, 760px); gap: clamp(36px, 6vw, 72px); }
|
|
145
159
|
.doc-nav { position: sticky; top: 28px; align-self: start; display: flex; flex-direction: column; gap: 4px; }
|
|
146
160
|
.doc-nav a { padding: 8px 10px; border-radius: 7px; color: var(--muted); font-size: 14px; font-weight: 550; }
|
|
147
161
|
.doc-nav a:hover { background: var(--surface-subtle); color: var(--ink); }
|
|
148
162
|
.doc-nav a[aria-current="page"] { background: var(--surface-subtle); color: var(--ink); font-weight: 680; }
|
|
149
163
|
.prose { min-width: 0; }
|
|
150
|
-
.prose h1 { margin: 0 0
|
|
151
|
-
.prose h2 { scroll-margin-top:
|
|
152
|
-
.prose h3 { scroll-margin-top:
|
|
153
|
-
.prose p, .prose li { color: #505057; font-size:
|
|
154
|
-
.prose p { margin: 0 0
|
|
164
|
+
.prose h1 { margin: 0 0 18px; max-width: 700px; font-size: clamp(38px, 5vw, 54px); line-height: 1.04; letter-spacing: -.045em; }
|
|
165
|
+
.prose h2 { scroll-margin-top: 24px; margin: 36px 0 9px; font-size: 23px; line-height: 1.22; letter-spacing: -.03em; }
|
|
166
|
+
.prose h3 { scroll-margin-top: 24px; margin: 24px 0 7px; font-size: 17px; }
|
|
167
|
+
.prose p, .prose li { color: #505057; font-size: 15.5px; text-wrap: pretty; }
|
|
168
|
+
.prose p { margin: 0 0 12px; }
|
|
155
169
|
.prose a { color: #3538ae; text-decoration: underline; text-decoration-color: #a5a7e9; text-underline-offset: 3px; }
|
|
156
170
|
.prose a:hover { text-decoration-color: #3538ae; }
|
|
157
|
-
.prose pre { overflow: auto; margin:
|
|
171
|
+
.prose pre { min-width: 0; overflow: auto; margin: 0; padding: 13px 14px; background: transparent; color: #f4f4f2; }
|
|
172
|
+
.prose .code-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; margin: 12px 0 16px; overflow: hidden; border-radius: 10px; background: #1e1e21; }
|
|
173
|
+
.prose .code-row .code-copy { min-height: 34px; margin-right: 8px; padding: 7px 10px; border-color: #4b4b50; background: #2b2b2f; color: #f4f4f2; font-size: 12px; white-space: nowrap; }
|
|
174
|
+
.prose .code-row .code-copy:hover { border-color: #66666d; background: #38383d; }
|
|
158
175
|
.prose code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .9em; }
|
|
159
176
|
.prose :not(pre) > code { padding: 2px 5px; border-radius: 5px; background: var(--surface-subtle); color: #34343a; }
|
|
160
177
|
.prose hr { margin: 46px 0; border: 0; border-top: 1px solid var(--line); }
|
|
161
|
-
.prose .notice { margin:
|
|
178
|
+
.prose .notice { margin: 20px 0; padding: 13px 15px; border: 1px solid #d8d8f7; border-radius: 9px; background: var(--accent-soft); }
|
|
162
179
|
.prose .notice p { margin: 5px 0 0; }
|
|
163
180
|
|
|
164
181
|
.oauth-shell { min-height: calc(100svh - 68px); display: grid; place-items: center; padding: 56px 20px 80px; }
|
|
@@ -184,10 +201,13 @@ input:focus-visible, button:focus-visible, a:focus-visible { outline: 3px solid
|
|
|
184
201
|
.principles > div, .principles > div + div { min-height: auto; padding: 28px 0; border-left: 0; border-bottom: 1px solid var(--line); }
|
|
185
202
|
.principles > div:last-child { border-bottom: 0; }
|
|
186
203
|
.workspace-grid { grid-template-columns: 1fr; }
|
|
204
|
+
.quickstart-grid { grid-template-columns: 1fr; }
|
|
205
|
+
.command-card, .command-card + .command-card { padding: 24px 0; border-left: 0; border-bottom: 1px solid var(--line); }
|
|
206
|
+
.command-card:last-child { border-bottom: 0; }
|
|
187
207
|
.auth-pane { padding-right: 0; border-right: 0; border-bottom: 1px solid var(--line); }
|
|
188
208
|
.endpoint-pane { padding-left: 0; }
|
|
189
|
-
.doc-shell { grid-template-columns: 1fr; gap:
|
|
190
|
-
.doc-nav {
|
|
209
|
+
.doc-shell { grid-template-columns: 1fr; gap: 0; padding-top: 34px; }
|
|
210
|
+
.doc-nav { display: none; }
|
|
191
211
|
.site-footer { grid-template-columns: 1fr; }
|
|
192
212
|
.site-footer nav { flex-wrap: wrap; }
|
|
193
213
|
.site-footer p { text-align: left; }
|
|
@@ -196,7 +216,7 @@ input:focus-visible, button:focus-visible, a:focus-visible { outline: 3px solid
|
|
|
196
216
|
@media (max-width: 620px) {
|
|
197
217
|
.site-header { min-height: 62px; padding: 0 16px; }
|
|
198
218
|
.site-header { gap: 12px; }
|
|
199
|
-
.site-header nav { gap:
|
|
219
|
+
.site-header nav { max-width: calc(100vw - 116px); gap: 12px; }
|
|
200
220
|
.site-header nav a { font-size: 12.5px; }
|
|
201
221
|
.hero { padding: 58px 18px 64px; }
|
|
202
222
|
.hero h1 { font-size: clamp(46px, 14vw, 60px); }
|
|
@@ -205,21 +225,29 @@ input:focus-visible, button:focus-visible, a:focus-visible { outline: 3px solid
|
|
|
205
225
|
.node { align-items: flex-start; flex-direction: column; gap: 3px; }
|
|
206
226
|
.node.device-node { padding-right: 18px; }
|
|
207
227
|
.node .pulse { top: 15px; }
|
|
208
|
-
.workspace, .final-cta { padding
|
|
228
|
+
.workspace, .final-cta, .quickstart { padding: 50px 18px; }
|
|
229
|
+
.section-heading { margin-bottom: 30px; }
|
|
230
|
+
.section-heading h2, .final-cta h2 { font-size: 36px; }
|
|
231
|
+
.section-heading > p:last-child, .final-cta > p { margin-top: 12px; font-size: 16px; }
|
|
209
232
|
.button-row, .oauth-actions { flex-direction: column; }
|
|
210
233
|
.button-row .button, .oauth-actions .button { width: 100%; }
|
|
211
234
|
.pair-panel { grid-template-columns: 1fr; }
|
|
212
235
|
.pair-panel .button { justify-self: start; }
|
|
213
236
|
.panel-title { align-items: flex-start; flex-direction: column; }
|
|
214
|
-
.command-row, .pairing-output { grid-template-columns: 1fr; }
|
|
215
|
-
.copy-button { justify-self:
|
|
237
|
+
.command-row, .pairing-output { grid-template-columns: minmax(0, 1fr) auto; }
|
|
238
|
+
.copy-button { justify-self: stretch; }
|
|
216
239
|
.endpoint-facts div { align-items: flex-start; flex-direction: column; gap: 2px; }
|
|
217
240
|
.endpoint-facts dd { text-align: left; }
|
|
218
241
|
.site-footer { padding: 24px 18px; }
|
|
219
242
|
.site-footer nav { gap: 14px; }
|
|
220
|
-
.doc-shell { padding:
|
|
221
|
-
.
|
|
222
|
-
.
|
|
243
|
+
.doc-shell { gap: 18px; padding: 24px 16px 56px; }
|
|
244
|
+
.prose h1 { margin-bottom: 14px; font-size: clamp(34px, 10vw, 42px); }
|
|
245
|
+
.prose h2 { margin-top: 28px; font-size: 21px; }
|
|
246
|
+
.prose h3 { margin-top: 21px; }
|
|
247
|
+
.prose p, .prose li { font-size: 15px; }
|
|
248
|
+
.prose .code-row { margin: 10px 0 14px; }
|
|
249
|
+
.prose .code-row pre { padding: 12px 10px 12px 13px; }
|
|
250
|
+
.prose .code-row .code-copy { margin-right: 7px; }
|
|
223
251
|
.oauth-shell { min-height: calc(100svh - 62px); padding: 28px 14px 60px; place-items: start center; }
|
|
224
252
|
.oauth-card { padding: 22px 18px; }
|
|
225
253
|
.scope-list li { align-items: flex-start; flex-direction: column; gap: 4px; }
|
package/public/support.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>Support · ReMCP</title>
|
|
9
9
|
<meta name="description" content="Troubleshoot ReMCP sign-in, device pairing, agent connectivity and MCP authorization.">
|
|
10
10
|
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/style.css?v=
|
|
11
|
+
<link rel="stylesheet" href="/style.css?v=remcp-012">
|
|
12
12
|
<meta property="og:site_name" content="ReMCP">
|
|
13
13
|
<meta property="og:image" content="https://remcp.delio24.com/assets/og-remcp.png">
|
|
14
14
|
<link rel="icon" href="/favicon.ico" sizes="any">
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
29
29
|
<span translate="no">ReMCP</span>
|
|
30
30
|
</a>
|
|
31
|
-
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/security">Security</a><a href="/support" aria-current="page">Support</a></nav>
|
|
31
|
+
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support" aria-current="page">Support</a></nav>
|
|
32
32
|
</header>
|
|
33
33
|
<main id="main" class="doc-shell">
|
|
34
|
-
<aside class="doc-nav" aria-label="Documentation"><a href="/docs">Setup</a><a href="/security">Security</a><a href="/support" aria-current="page">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></aside>
|
|
34
|
+
<aside class="doc-nav" aria-label="Documentation"><a href="/docs">Setup</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support" aria-current="page">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></aside>
|
|
35
35
|
<article class="prose">
|
|
36
36
|
<p class="eyebrow">Support</p>
|
|
37
37
|
<h1>Troubleshoot ReMCP.</h1>
|
|
@@ -40,6 +40,9 @@
|
|
|
40
40
|
<h2>OAuth does not complete</h2><p>Return to the authorization screen, sign in to the intended ReMCP account, review the requested access, and choose <strong>Authorize ReMCP Access</strong>.</p>
|
|
41
41
|
<h2>MCP tool cannot run</h2><p>Confirm the target computer is online and use <code>list_devices</code> to obtain its current device id. Device tools require that id.</p>
|
|
42
42
|
<h2>Pairing code expired</h2><p>Generate a new pairing command from the workspace. Pairing codes are intentionally short-lived and single-use.</p>
|
|
43
|
+
<h2>Check the installed agent</h2><div class="code-row"><pre><code id="support-command-1">remcp --version
|
|
44
|
+
remcp status</code></pre><button class="copy-button code-copy" type="button" data-copy="#support-command-1" aria-label="Copy command" aria-live="polite">Copy</button></div><p>If <code>remcp</code> is not found, repeat the <a href="/docs#install">install command</a>. The first npx invocation is temporary; <code>--install</code> creates the persistent CLI.</p>
|
|
45
|
+
<h2>Update or repair</h2><div class="code-row"><pre><code id="support-command-2">remcp update</code></pre><button class="copy-button code-copy" type="button" data-copy="#support-command-2" aria-label="Copy command" aria-live="polite">Copy</button></div><p>This refreshes the published CLI and restarts the installed user service. For an already paired device whose service is missing, run <code>remcp install</code>.</p>
|
|
43
46
|
<h2>Need deployment help?</h2><p>For a self-hosted deployment, contact the operator who provisioned your ReMCP instance and include the affected layer: sign-in, pairing, agent connectivity, or MCP authorization.</p>
|
|
44
47
|
</article>
|
|
45
48
|
</main>
|
|
@@ -48,10 +51,9 @@
|
|
|
48
51
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
49
52
|
<span translate="no">ReMCP</span>
|
|
50
53
|
</div>
|
|
51
|
-
<nav aria-label="Footer">
|
|
52
|
-
<a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a>
|
|
53
|
-
</nav>
|
|
54
|
+
<nav aria-label="Footer"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></nav>
|
|
54
55
|
<p>Open-source remote MCP infrastructure.</p>
|
|
55
56
|
</footer>
|
|
57
|
+
<script type="module" src="/copy.js?v=remcp-012"></script>
|
|
56
58
|
</body>
|
|
57
59
|
</html>
|
package/public/terms.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<title>Terms of Service · ReMCP</title>
|
|
9
9
|
<meta name="description" content="Terms for using the hosted ReMCP service and its remote-computer capabilities.">
|
|
10
10
|
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
|
|
11
|
-
<link rel="stylesheet" href="/style.css?v=
|
|
11
|
+
<link rel="stylesheet" href="/style.css?v=remcp-012">
|
|
12
12
|
<meta property="og:site_name" content="ReMCP">
|
|
13
13
|
<meta property="og:image" content="https://remcp.delio24.com/assets/og-remcp.png">
|
|
14
14
|
<link rel="icon" href="/favicon.ico" sizes="any">
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
29
29
|
<span translate="no">ReMCP</span>
|
|
30
30
|
</a>
|
|
31
|
-
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
31
|
+
<nav aria-label="Primary"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a></nav>
|
|
32
32
|
</header>
|
|
33
33
|
<main id="main" class="doc-shell">
|
|
34
|
-
<aside class="doc-nav" aria-label="
|
|
34
|
+
<aside class="doc-nav" aria-label="Documentation"><a href="/docs">Setup</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms" aria-current="page">Terms</a></aside>
|
|
35
35
|
<article class="prose">
|
|
36
36
|
<p class="eyebrow">Legal</p>
|
|
37
37
|
<h1>Terms of Service</h1>
|
|
@@ -53,9 +53,7 @@
|
|
|
53
53
|
<img class="brand-mark" src="/android-chrome-192x192.png" width="30" height="30" alt="" aria-hidden="true">
|
|
54
54
|
<span translate="no">ReMCP</span>
|
|
55
55
|
</div>
|
|
56
|
-
<nav aria-label="Footer">
|
|
57
|
-
<a href="/docs">Docs</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a>
|
|
58
|
-
</nav>
|
|
56
|
+
<nav aria-label="Footer"><a href="/docs">Docs</a><a href="/docs#install">Install</a><a href="/docs#update">Update</a><a href="/security">Security</a><a href="/support">Support</a><a href="/privacy">Privacy</a><a href="/terms">Terms</a></nav>
|
|
59
57
|
<p>Open-source remote MCP infrastructure.</p>
|
|
60
58
|
</footer>
|
|
61
59
|
</body>
|