Skip to content

Commit 1a0c16c

Browse files
committed
docs(spec): spec 089 remote-access-tunnel (feature-flagged MVP) + roadmap epic
Spec for one-button remote exposure of the local /mcp endpoint via an external tunnel binary (cloudflared quick tunnel first) so Claude custom connectors (all tiers incl. Free, synced to iOS/Android) can reach local MCP servers such as Obsidian MCP. Hard requirements: entire feature behind a config feature flag (default off, zero behavior change when off), tunnel never auto-starts, mandatory OAuth 2.1 + PKCE + DCR gate with audience-bound tokens and an unspoofable tunnel ingress boundary, per-server exposure allowlist covering the full MCP capability surface, remote-origin activity logging with redaction. Also: - docs/research/remote-access-tunnel-research-2026-07-29.html: deep-research report backing the spec (25/25 claims adversarially verified) - roadmap.yaml/ROADMAP.md: epic remote-access-tunnel, P2 (normal), depends_on tpa-db + ux-audit + analytics-dashboard per owner decision 2026-07-29; 4 child tasks (oauth-gate, orchestration, allowlist, UI) Cross-model review: Codex, 3 rounds (6 P1 + 9 P2 findings fixed) -> CLEAN. ## Testing - python3 scripts/gen-roadmap.py regenerates ROADMAP.md cleanly (25 epics) - spec-only change; no code paths touched
1 parent 6692231 commit 1a0c16c

5 files changed

Lines changed: 514 additions & 1 deletion

File tree

ROADMAP.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ graph LR
4242
analytics_dashboard["Analytics dashboard as default page"]
4343
scanner_simplification["Scanner simplification (deterministic d…"]
4444
tpa_db["tpa-db: versioned TPA signature databas…"]
45+
remote_access_tunnel["Remote access tunnel (feature-flagged M…"]
4546
telemetry_identity["Telemetry identity & data quality (mach…"]
4647
telemetry_v7_churn["Telemetry v7: honest funnel + churn ins…"]
4748
@@ -50,14 +51,17 @@ graph LR
5051
ux_audit --> analytics_dashboard
5152
scanner_v2 --> scanner_simplification
5253
scanner_simplification --> tpa_db
54+
tpa_db --> remote_access_tunnel
55+
ux_audit --> remote_access_tunnel
56+
analytics_dashboard --> remote_access_tunnel
5357
telemetry_identity --> telemetry_v7_churn
5458
5559
classDef done fill:#1f7a1f,stroke:#0d3d0d,color:#ffffff;
5660
classDef in_progress fill:#1f6feb,stroke:#0b3d91,color:#ffffff;
5761
classDef todo fill:#6e7781,stroke:#3d4248,color:#ffffff;
5862
class sandbox_isolation,scanner_v2,scanner_simplification done;
5963
class analytics_dashboard,telemetry_identity,telemetry_v7_churn in_progress;
60-
class ux_audit,action_log_transparency,tpa_db todo;
64+
class ux_audit,action_log_transparency,tpa_db,remote_access_tunnel todo;
6165
```
6266

6367
**Independent epics** (15) — no cross-epic prerequisites; each stands alone:
@@ -324,6 +328,37 @@ graph LR
324328

325329
</details>
326330

331+
<details>
332+
<summary>⚪ Remote access tunnel (feature-flagged MVP, spec 089) — Todo · P2</summary>
333+
334+
> One-button Web UI exposure of /mcp via external tunnel binary (cloudflared quick tunnel first) so Claude custom connectors (all tiers incl. Free, syncs to iOS/Android) can reach local MCP servers (e.g. Obsidian) — behind a feature flag, off by default, mandatory OAuth 2.1+PKCE+DCR gate, per-server exposure allowlist, remote-origin activity logging. Research: docs/research/remote-access-tunnel-research-2026-07-29.html (25/25 claims verified; niche unoccupied — Docker MCP Gateway lacks it). Sequenced after tpa-db (+ shipped scanner work 086-088), macOS tray redesign (ux-audit) and analytics-dashboard per owner decision 2026-07-29. No hosted relay/payments in MVP.
335+
336+
Spec: [089-remote-access-tunnel](./specs/089-remote-access-tunnel/)
337+
338+
```mermaid
339+
graph LR
340+
tunnel_oauth_gate["OAuth 2.1 authorization-server gate for tunne…"]
341+
tunnel_orchestration["cloudflared quick-tunnel orchestration (detec…"]
342+
tunnel_exposure_allowlist["Per-server exposure allowlist (default none;…"]
343+
tunnel_webui_tray["Web UI open/close button + URL/QR/instruction…"]
344+
345+
tunnel_oauth_gate --> tunnel_exposure_allowlist
346+
tunnel_orchestration --> tunnel_webui_tray
347+
tunnel_exposure_allowlist --> tunnel_webui_tray
348+
349+
classDef todo fill:#6e7781,stroke:#3d4248,color:#ffffff;
350+
class tunnel_oauth_gate,tunnel_orchestration,tunnel_exposure_allowlist,tunnel_webui_tray todo;
351+
```
352+
353+
| Task | Status | Refs |
354+
| --- | --- | --- |
355+
| OAuth 2.1 authorization-server gate for tunnel-origin traffic (PKCE, DCR, Anthropic callback allowlist, token lifecycle/revocation) | ⚪ Todo ||
356+
| cloudflared quick-tunnel orchestration (detect/launch/supervise/parse URL) + feature flag + never-auto-start | ⚪ Todo ||
357+
| Per-server exposure allowlist (default none; quarantined non-exposable; hot-reload) | ⚪ Todo ||
358+
| Web UI open/close button + URL/QR/instructions + warning banner; tray active-state indicator; remote-origin activity marker | ⚪ Todo ||
359+
360+
</details>
361+
327362
<details>
328363
<summary>⚪ Planning/docs truth automation — Todo · P2</summary>
329364

@@ -636,6 +671,7 @@ graph LR
636671
| Web UI + macOS app UX audit | Todo | P0 || | |
637672
| Action log / transparency — info at a glance | Todo | P1 || | |
638673
| tpa-db: versioned TPA signature database for the offline scanner | Todo | P1 || | |
674+
| Remote access tunnel (feature-flagged MVP, spec 089) | Todo | P2 || [089-remote-access-tunnel](./specs/089-remote-access-tunnel/) | |
639675
| Planning/docs truth automation | Todo | P2 || | |
640676
| Security gateway Tracks C/D (per-arg least-privilege + signature provenance) | Todo | P3 || [054-mcp-security-gateway](./specs/054-mcp-security-gateway/) | |
641677
| Discovery-quality eval harness (Spec 065 second half) | Todo | P3 || [065-evaluation-foundation](./specs/065-evaluation-foundation/) | |
@@ -754,3 +790,4 @@ Legend: `shipped` ≥95% checked · `in-flight` 1–94% · `drafted` 0% · `—`
754790
| [086-tpa-scanner-approval](./specs/086-tpa-scanner-approval/) |||
755791
| [087-tpa-daily-refresh](./specs/087-tpa-daily-refresh/) |||
756792
| [088-scanner-trust-ui](./specs/088-scanner-trust-ui/) | `shipped` | 29/29 (100%) |
793+
| [089-remote-access-tunnel](./specs/089-remote-access-tunnel/) |||

0 commit comments

Comments
 (0)