Teylersf/freeremotedesk
Browser-first, self-hosted remote desktop. WebRTC P2P. Runs on your own free-tier Cloudflare + Vercel accounts. Zero monthly cost. Includes AI-agent setup guide. - Teylersf/freeremotedesk
2 stars · 0 forks · TypeScript Topics: react, rust, typescript, remote-control, pwa, webrtc, p2p, self-hosted, free, remote-desktop, screen-sharing, tauri, cloudflare-workers, vercel, durable-objects, vibe-coding, teamviewer-alternative, anydesk-alternative, rustdesk-alternative
README
FreeRemoteDesk Reach your home dev machine from any browser. Zero servers you run. Zero monthly cost. You own the whole stack. Setup — pick your path 🤖 Path A: Hand this repo to your AI agent (recommended for vibe coders) Open your AI coding tool (Claude Code, Cursor, Aider, Codex, Continue — anything with a terminal) and paste one line:
"Set up FreeRemoteDesk for me. Read AGENTS.md at https://github.com/Teylersf/freeremotedesk/blob/main/AGENTS.md and follow it exactly."
Your agent will:
Check you have node, pnpm, gh installed (install if missing) Prompt you to log into gh, wrangler, and vercel (three one-time browser sign-ins) Deploy the signaling Worker to your Cloudflare account Deploy the PWA to your Vercel account with the right env var Download the host installer for your OS Hand you the two URLs to paste into the agent's first-run wizard
Total user work: three CLI logins + one installer double-click + copy-paste two URLs. 🖱️ Path B: Two Deploy Buttons + one download (no AI needed)
Deploy signaling to your Cloudflare: Deploy PWA to your Vercel: Download the latest release, install, paste the two URLs into the wizard.
Full walkthrough: docs/DEPLOY.md. 🧑💻 Path C: Run the setup script yourself If you have the CLIs installed and don't want to click through UIs: git clone https://github.com/Teylersf/freeremotedesk cd freeremotedesk bash scripts/setup.sh # macOS/Linux
or
pwsh scripts/setup.ps1 # Windows The script does everything Path A does, minus the AI narration.Why
No middleman. Signaling on your Cloudflare, PWA on your Vercel. Nobody (including us) sits between your devices. No monthly bill. Free tiers cover a personal instance easily. You pay $0. No app store. The PWA installs from any browser onto phone/tablet/desktop. Direct P2P over WebRTC. Video and input flow between your two devices; signaling is <1 KB per session. Passkey-secured saved hosts (v0.2.0, coming next) — biometric reconnect without typing codes.
Repo layout
Path What
agent/ Tauri v2 + Rust host agent — WebView does WebRTC + getDisplayMedia, Rust does OS input injection via enigo
pwa/ React + Vite PWA — the browser viewer
signaling/ Cloudflare Workers Durable Object relay
scripts/setup.{sh,ps1} One-shot automated deploy
AGENTS.md Structured instructions for AI agents doing setup on your behalf
docs/ Architecture, deploy, protocol, security, development
Local development Three terminals from repo root: pnpm dev:signaling # Miniflare on :8787 pnpm dev:pwa # Vite on :5173 pnpm dev:agent # Tauri window Both wizards accept http://localhost:8787 as the signaling URL. Smoke test signaling: pnpm --filter @freeremotedesk/signaling smoke. Full setup: docs/DEVELOPMENT.md. Architecture (30-second version) The agent is a Tauri app whose WebView calls navigator.mediaDevices.getDisplayMedia() and standard browser WebRTC — no custom video codec, no native capture layer. The PWA client uses the same WebRTC APIs. Signaling is a Cloudflare Worker + one Durable Object per pairing code — it relays SDP/ICE, video is E2E encrypted by DTLS-SRTP and never touches signaling infrastructure. Input events return over a WebRTC DataChannel and get injected on the host via Rust enigo. Full design + rationale: ARCHITECTURE.md. Status v0.1.0 shipped — Phase 1 MVP + BYO-infra pivot + Phase 4 packaging complete. CI green on Windows/macOS/Linux. Installers on the releases page. v0.2.0 planned — WebAuthn/passkey saved hosts, biometric reconnect, session PIN as fallback. License Apache-2.0 (pending — will be locked in before v0.2.0).