|
|
5 giorni fa | |
|---|---|---|
| agent | 2 settimane fa | |
| deploy/coturn | 5 giorni fa | |
| docs | 2 settimane fa | |
| server | 5 giorni fa | |
| .dockerignore | 1 settimana fa | |
| .env.example | 1 settimana fa | |
| .gitignore | 1 settimana fa | |
| .npmignore.note | 2 settimane fa | |
| ARCHITECTURE.md | 1 settimana fa | |
| CLAUDE.md | 1 settimana fa | |
| DEPLOY.md | 1 settimana fa | |
| Dockerfile | 1 settimana fa | |
| INSTALL.md | 2 settimane fa | |
| README.md | 2 settimane fa | |
| SETUP.bat | 2 settimane fa | |
| Start-Agent.bat | 2 settimane fa | |
| Start-Server.bat | 2 settimane fa | |
| deploy.sh | 1 settimana fa | |
| docker-compose.yml | 1 settimana fa | |
| redeploy.bat | 1 settimana fa | |
| redeploy.sh | 1 settimana fa |
A self-hostable remote support platform for IT teams: technicians log in to a web
console, see their team’s machines, and start a screen-share + remote-control
session to any online machine after the end user grants consent. Built to the
spec in PRD-remote-access-platform.md.
This alpha implements the PRD’s P0 requirements: authenticated console, MFA, RBAC, machine enrollment, per-session consent, WebRTC screen streaming + remote input, and an immutable audit log.
remote-access-app/
├── server/ Backend: HTTP API + WebSocket signaling + SQLite
│ ├── server.js Auth, MFA, machines, audit API + signaling broker
│ ├── auth.js scrypt passwords, TOTP MFA, tokens (no external auth deps)
│ ├── db.js Schema via Node's built-in node:sqlite
│ ├── public/ Web console (index.html) + remote viewer (viewer.html)
│ └── test/e2e.js 26-check end-to-end test of the whole backend flow
└── agent/ Native host agent (Electron)
├── main.js Consent window, screen source, OS input injection
├── input/inject.js Mouse/keyboard injection via nut-js (Win32 SendInput)
└── renderer/ Agent UI + WebRTC screen capture
cd server
npm install # only dependency is `ws`
npm start # serves http://localhost:8090
Open http://localhost:8090, click Register team, then set up MFA
(add the shown secret to Google Authenticator / Authy / 1Password and enter a code).
Log in, and enroll a machine — you’ll get an AGENT_ENROLL_TOKEN.
cd agent
npm install # installs Electron + nut-js (input injection)
set SERVER_URL=http://<server-ip>:8090 # Windows
set AGENT_ENROLL_TOKEN=<token from console>
npm start
The agent window comes online; the machine shows green in the console. Click Connect in the console — the agent shows a consent prompt. On Allow, the technician sees the live screen and can control it. A red banner stays on the host screen for the whole session, and every step is written to the audit log.
Set a machine to unattended at enrollment to skip the consent prompt (for servers / headless machines), per the PRD’s unattended-access policy.
cd server && npm test # 26/26 checks pass
cd agent && npm run test:input # 5/5 input-mapping checks pass
The e2e test drives the real backend: register → enable MFA → login (password + TOTP) → enroll machine → agent connects → technician requests session → consent → SDP/ICE relay → session end → audit verification → consent-denial path.
nut-js (Win32 SendInput on Windows,
CGEvent on macOS). Without it installed, inject.js degrades to a safe
logging no-op so the agent still runs. Verify on a real desktop.desktopCapturer / getDisplayMedia.crypto — no bcrypt/jsonwebtoken/speakeasy dependencies.node:sqlite (built into Node 22.5+), so the backend has a
single runtime dependency (ws).