# SSH Reverse Proxy

> Open reverse SSH tunnels (multiple ports) through a remote host.

| | |
|---|---|
| Version | 1.0.1 |
| Category | Networking |
| Depends on | ai-chat |

# SSH Reverse Proxy

Open reverse SSH tunnels (multiple ports) through a remote host.

**Type:** `backend` — see `.claude/skills/kazuo-create-plugin/references/plugin-examples.md`

**Requires:** `ai-chat` — checked when installing, not installed for you.

## What it does

- Keeps one or more reverse SSH tunnels open to a remote host, reconnecting when the link drops.
- Other plugins reach it through the bridge aliases startTunnel / stopTunnel / getTunnelStatus.

## Files

- `manifest.json` — metadata, `defaultSettings`, `defaultWidgetConfig`
- `widget.html` / `js/widget.js` / `css/widget.css` — the widget, including its own gear button and settings overlay (the host draws no per-widget gear icon)
- `settings.html` / `js/settings.js` / `css/settings.css` — the same fields again, for the Plugin Manager screen and the pop-out window
- `locales/en.json5` / `locales/vi.json5` — UI strings under `widget.*` and `settings.*`
- `main/index.ts` (compiled to `main/index.js`) — runs in the Electron main process: `activate` / `deactivate`
- `icon.png` — Store and Plugin Manager icon

## Default settings

- `host` — default: `""`
- `port` — default: `"22"`
- `username` — default: `"root"`
- `authMethod` — default: `"password"`
- `password` — default: `""`
- `privateKeyPath` — default: `""`
- `passphrase` — default: `""`
- `serverAliveInterval` — default: `60`
- `autoStart` — default: `false`
- `autoReconnect` — default: `true`
- `portForwards` — default: array, 1 entry by default

## Test

Open Kazuo AI → Plugin Manager — the plugin appears on its own (the host scans `plugins-library/`,
nothing to register) → Install → Enable.

After editing `main/index.ts`, recompile before testing: `npx tsc -p tsconfig.plugins.json`
(from the project root).
