selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

reminal logo

Self-host reminal

v3.17.44

Stream any window or terminal to a browser, no open ports

ReleaseOpen SourceAGPL-3.0
curl -fsSL https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.sh | sh
Updated4 hours ago
LanguageGo
Setup difficultyEasy
Stars
321
reminal hero showing live window streaming from a Mac to a browser

What is reminal?

reminal lets you close your laptop and walk away while your machine keeps serving its actual applications live in any browser from anywhere. It streams windows and full desktops at up to 60 fps with mouse and keyboard control, provides a full terminal with QR code access, enables file transfer between machines with one-time codes, exposes local ports as public HTTPS URLs, and integrates with AI agent CLIs via an MCP server so agents can read and type into each other's sessions across machines. A Cloudflare Workers relay handles signaling and can be self-hosted; all traffic uses AES-256-GCM encryption. No open ports, no accounts, session secrets encrypted on disk. Runs on macOS (with closed-lid mode), Linux (X11), and Windows (ConPTY).

Should you self-host reminal?

reminal scores 50/100 on selfhost.directory (how scoring works) and ranks #17 of 22 in Remote Desktop. It has 321 GitHub stars.

It shipped 12 stable releases in the past year. The latest, v3.17.44, came out on 28 October 2026.

Setup is easy: most people get it running in one sitting. It is AGPL-3.0-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is Webhook.site (66/100, 6 786 stars). It scores higher overall, so compare the two before you pick. See reminal vs Webhook.site side by side.

Features

  • AI agent integration (MCP)Works with Claude Code, Codex, Cursor, Gemini, Qwen, OpenCode, Antigravity, Amp, pi
  • Closed-lid mode (macOS)macOS only
  • Cross-platformLinux needs X11/Xwayland; Windows ARM64 supported
  • End-to-end encryptionRelay routes only ciphertext; port forwards (expose) are not E2E
  • File TransferEnd-to-end encrypted, no cloud drive, no account
  • Fleet managementAttach, rename, spawn, or kill sessions on any machine
  • No open ports
  • NotificationsWorks in Chrome, Edge, Firefox, Safari; on iOS/iPadOS add to Home Screen first
  • Owner devices (PIN-free)Requires sudo/admin to enroll
  • Port ForwardingBuilt-in ngrok alternative; not end-to-end encrypted
  • Session persistenceShell stays alive, screen paints instantly on reconnect
  • Terminal sharing
  • VS Code/Cursor extension
  • Window and desktop mirroring60 fps H.264 on macOS; ~5-15 fps JPEG on Windows; X11 on Linux

reminal README

How to install reminal

Install reminal with Windows

Environment variables
REMINAL_RELAY, REMINAL_WEB, REMINAL_LOCAL, REMINAL_OWNERS_DIR, REMINAL_NO_KEEP_AWAKE, REMINAL_SHELL_CGROUP, REMINAL_TURN, REMINAL_TURN_USER, REMINAL_TURN_PASS, REMINAL_TURN_CF_KEY, REMINAL_TURN_CF_TOKEN, REMINAL_NO_CAPTURE_HELPER, REMINAL_DEBUG, SHELL
curl -fsSL https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.sh | sh
reminal

On Windows (PowerShell):

irm https://raw.githubusercontent.com/harshalgajjar/Reminal/main/install.ps1 | iex
reminal

Installs to ~/.local/bin/reminal (macOS/Linux) or %LOCALAPPDATA%\Programs\reminal (Windows) — no sudo/admin needed

How to configure reminal

  • REMINAL_DEBUGSet to 1 to append the raw error string to status lines, for diagnosing connection problems

    Set to 1 to append the raw error string to status lines, for diagnosing connection problems

    values: 1

  • REMINAL_LOCALSet to 1 to point everything at localhost

    Set to 1 to point everything at localhost

    values: 1

  • REMINAL_NO_CAPTURE_HELPERSet to 1 to force the screenshot capture path (skip the native ScreenCaptureKit helper)

    Set to 1 to force the screenshot capture path (skip the native ScreenCaptureKit helper)

    values: 1

  • REMINAL_NO_KEEP_AWAKESet to 1 to let the host sleep while reminal runs (defaults to keeping it awake)

    Set to 1 to let the host sleep while reminal runs (defaults to keeping it awake)

    values: 1

  • REMINAL_OWNERS_DIR/etc/reminal (%ProgramData%\reminal on Windows)Where the machine's owner list lives (the admin-gated trust store)

    Where the machine's owner list lives (the admin-gated trust store)

  • REMINAL_RELAYUpstream public relayRelay WebSocket base URL; also derives REMINAL_WEB when that is unset

    Relay WebSocket base URL; also derives REMINAL_WEB when that is unset

  • REMINAL_SHELL_CGROUPLinux only: absolute path of a cgroup v2 directory to start each session's shell in

    Linux only: absolute path of a cgroup v2 directory to start each session's shell in

  • REMINAL_TURNOptional TURN server for P2P window mirroring behind hostile NATs

    Optional TURN server for P2P window mirroring behind hostile NATs

  • REMINAL_TURN_CF_KEYCloudflare TURN key

    Cloudflare TURN key

  • REMINAL_TURN_CF_TOKENCloudflare TURN token

    Cloudflare TURN token

  • REMINAL_TURN_PASSTURN server password

    TURN server password

  • REMINAL_TURN_USERTURN server username

    TURN server username

  • REMINAL_WEBUpstream public web UIWeb UI URL; also derives REMINAL_RELAY when that is unset

    Web UI URL; also derives REMINAL_RELAY when that is unset

  • SHELL$SHELL, then probes /bin/zsh, /bin/bash, /bin/sh (Windows: pwsh → powershell → cmd)Which shell to spawn inside the session

    Which shell to spawn inside the session

reminal releases & version history

More in Remote Desktop

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…