Self-hosted SSH + SFTP + RDP in a browser — MobaXterm replacement
Go to file
Vantz Stockwell 1bf225ae27 fix(rdp): send client capability instructions before CONNECT handshake
ROOT CAUSE: guacd showed "User resolution is 0x0 at 0 DPI" and
immediately killed every RDP connection.

The Guacamole protocol requires five client capability instructions
(size, audio, video, image, timezone) BETWEEN receiving 'args' and
sending 'connect'. Our handshake skipped all five and jumped straight
to CONNECT. guacd never received the display dimensions, defaulted to
0x0, and terminated the connection.

Now sends the complete handshake:
  select → (receive args) → size → audio → video → image → timezone → connect

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 06:32:36 -04:00
backend fix(rdp): send client capability instructions before CONNECT handshake 2026-03-14 06:32:36 -04:00
docs/superpowers fix: plan — async host key verification via ssh2 verify callback 2026-03-12 17:02:20 -04:00
frontend fix(rdp): TCP stream buffering + error surfacing for guacd pipeline 2026-03-14 06:17:32 -04:00
images feat: convert Settings to right sidebar panel, remove light mode 2026-03-13 10:25:24 -04:00
.env.example feat: project scaffold — Docker, NestJS, Nuxt 3, Prisma config 2026-03-12 17:05:37 -04:00
.gitignore fix: inline modals in index.vue, proper DTO for profile update 2026-03-13 09:09:05 -04:00
docker-compose.yml fix(rdp): correct guacd debug entrypoint override 2026-03-14 05:58:13 -04:00
Dockerfile fix: correct dist path (dist/src/main.js), static path, explicit schema for migrate 2026-03-13 08:23:52 -04:00
README.md feat: project scaffold — Docker, NestJS, Nuxt 3, Prisma config 2026-03-12 17:05:37 -04:00
Remote-Spec.md docs: Wraith spec + implementation plan 2026-03-12 16:59:34 -04:00

Wraith

Self-hosted MobaXterm replacement — SSH + SFTP + RDP in a browser.

Stack

  • Backend: NestJS 10, Prisma 6, PostgreSQL 16, ssh2, guacd
  • Frontend: Nuxt 3 (SPA), PrimeVue 4, Tailwind CSS, xterm.js 5

Quick Start

cp .env.example .env
# Edit .env with real secrets

docker compose up -d

Default credentials: admin@wraith.local / wraith

Development

# Backend
cd backend && npm install && npm run dev

# Frontend
cd frontend && npm install && npm run dev