E2EE

AMNI-CONNECT

E2EE REMOTE DESKTOP • PEER-TO-PEER • SELF-HOSTABLE

HOW IT WORKS ☕ SUPPORT

REMOTE CONTROL WITHOUT THE CLOUD

A modern alternative to Windows Remote Desktop — screen + input streamed directly between your devices over WebRTC. Signaling runs on a tiny Node server you host. No third-party relay sees your frames, no vendor stores your session, no account required.

🔒

END-TO-END ENCRYPTED

Video, audio, and input travel over DTLS-SRTP WebRTC channels. Keys are negotiated peer-to-peer — the signaling server never sees your frames or keystrokes.

🚀

RUST INPUT DAEMON

Native mouse + keyboard injection through a small Rust binary (enigo crate). Localhost TCP socket on port 7878 — no kernel driver, no elevated service.

🌐

SELF-HOSTABLE SIGNALING

Drop the Node.js signaling server on any VPS, home Pi, or your own LAN. Port 3389 by default. One JSON env file configures allowed origins.

📱

BROWSER VIEWER

Connect from any device with a browser — no app install on the viewing side. Phones, tablets, old laptops all work. Touch input is mapped to mouse events.

CUSTOM ROOM CODES

Pick your own 4+ character room ID or let the server generate a UUID slice. Rooms are ephemeral — destroyed the moment the host disconnects.

👁

ZERO RECORDING

Frames are transient. Nothing is written to disk, nothing is buffered beyond the WebRTC jitter window. Close the tab and the session is gone.

THREE-COMPONENT ARCHITECTURE

Amni-Connect splits into three isolated processes. Each can be restarted, replaced, or audited independently.

COMPONENTROLE
Electron HostScreen capture (desktopCapturer), WebRTC peer, UI chrome — runs on the machine being controlled
Rust Input DaemonTokio-driven TCP service on 127.0.0.1:7878 — receives JSON input events and calls enigo for mouse/keyboard synthesis
Signaling ServerExpress + Socket.IO on port 3389 — rooms, offers, answers, ICE candidates. Never sees media data.

SPECIFICATIONS

PARAMETERDETAILS
TypeEnd-to-End Encrypted Remote Desktop
StackElectron 33 (host) • Rust 2021 / tokio / enigo (input) • Node.js + Socket.IO (signaling)
PlatformsHost: Windows, macOS, Linux • Viewer: any modern browser
TransportWebRTC — DTLS-SRTP over UDP (TCP fallback)
SignalingSocket.IO on port 3389 • self-hostable • origin allowlist
Input ChannelLocalhost TCP • JSON-lines • 127.0.0.1:7878
MediaScreen capture via desktopCapturer • VP8/H.264 (browser-negotiated)
Rooms4+ char custom ID or UUID slice • ephemeral • destroyed on host disconnect
RecordingNone — no disk writes, no session logs
AccountNone — no signup, no password, no email
LicenseCC BY-NC 4.0 (source-available, non-commercial)

HOW IT WORKS

1. HOST

Launch Amni-Connect on the machine you want to control. The Electron app spawns the Rust input daemon and registers a room with your signaling server.

2. CONNECT

On any other device, open the viewer URL and enter the room code. Socket.IO exchanges the WebRTC offer/answer and ICE candidates in milliseconds.

3. STREAM

DTLS-SRTP handshake completes peer-to-peer. Screen frames flow viewer-ward; input events flow host-ward. The signaling server goes silent.

4. CONTROL

Mouse moves, clicks, and keystrokes from the viewer are JSON-serialized, sent over the WebRTC data channel, and replayed by the Rust daemon.

GET AMNI-CONNECT

Host your own signaling, control your own hardware. No SaaS, no relay fees, no rate limits.

Open source under CC BY-NC 4.0 • source available on GitHub • non-commercial use

VIEW ON GITHUB PRIVACY POLICY