Files
Juan DenisandClaude Opus 4.8 e6bf4915b4 refactor(remote-access): extract WireGuard-tunnels backend into extension
Plan 47 Phase 2. The tunnels blueprint + broker/publish/netutil services move
into builtin-extensions/serverkit-remote-access/backend/ (entry_point tunnels:
tunnels_bp, url_prefix unchanged). Core no longer registers /api/v1/tunnels or
imports the services; the Tunnel/ExposedService models stay core (G2).

New reusable core->extension seam get_installed_extension_attr(slug, module,
attr): the agent gateway reaches TunnelBrokerService.schedule_reconcile through
it, so tunnel self-heal still fires when the extension is installed and no-ops
cleanly otherwise. Backend re-acquisition on upgrade is covered by the Phase-2
migration.

Tests: test_tunnel_netutil.py + test_tunnel_reconcile.py re-homed into
test_remote_access_extraction.py (17), which installs the extension and runs the
helpers/reconcile against its modules.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 22:27:02 -04:00

40 lines
1.6 KiB
JSON

{
"name": "serverkit-remote-access",
"display_name": "Remote Access",
"version": "1.0.0",
"description": "WireGuard remote-access tunnels between paired agents to expose NAT'd home services through an edge server. Fleet-wide view as a tab in the Servers group; per-server management stays on the server detail page.",
"author": "ServerKit",
"license": "MIT",
"category": "integration",
"homepage": "https://github.com/jhd3197/ServerKit",
"permissions": ["network"],
"entry_point": "tunnels:tunnels_bp",
"url_prefix": "/api/v1/tunnels",
"icon": "<rect x=\"16\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"2\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"9\" y=\"2\" width=\"6\" height=\"6\" rx=\"1\"/><path d=\"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\"/><path d=\"M12 12V8\"/>",
"contributions": {
"tabs": [
{
"group": "servers",
"to": "/remote-access",
"label": "Remote Access",
"order": 5,
"icon": "<rect x=\"16\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"2\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"9\" y=\"2\" width=\"6\" height=\"6\" rx=\"1\"/><path d=\"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\"/><path d=\"M12 12V8\"/>"
}
],
"routes": [
{ "path": "remote-access", "component": "RemoteAccessPage", "group": "servers" }
],
"page_titles": {
"/remote-access": "Remote Access"
},
"command_palette": [
{
"label": "Remote Access",
"path": "/remote-access",
"category": "Pages",
"keywords": "wireguard tunnel vpn expose nat pairing"
}
]
}
}