Skip to content

How It Works ​

Astral Travel is a remote desktop app that wraps a streaming engine and peer-to-peer tunnel into a simple two-screen interface.

GPU Detection & Encoding ​

When you start hosting, the app detects your GPU and selects the optimal hardware encoder:

GPUVendorEncoderCodec Priority
NVIDIA (GTX/RTX)nvidiaNVENCHEVC > H.264
AMD (Radeon)amdVAAPIHEVC > H.264
Intel (integrated/Arc)intelVAAPIH.264
Unknown/None—SoftwareH.264

The viewer asks for a picture that matches its own screen: the same resolution (up to 4K) and 60 fps, or 120 fps on a 120 Hz screen. Bitrate follows the resolution automatically. Only the host's main monitor is streamed.

No manual tuning required.

Network & Encryption ​

Astral Travel connects machines that can already reach each other: the same office or home network, or both machines on the same Tailscale tailnet. It opens nothing to the internet and uses no relay server.

  • Each share gets a fresh password, and a code stops working the moment sharing stops.
  • Pairing uses a new certificate for every connection; the host only accepts viewers that paired with the current code.
  • The stream itself is encrypted (AES-GCM).

Connection Codes ​

The connection code (e.g. AT-0810-M2GN-B1J6-…) contains:

  • Up to 4 addresses for the host (office network first, then Tailscale)
  • The host's one-time sharing password
  • A checksum, so a mistyped code is rejected instantly

The code is base64url-encoded and dash-separated for readability. Share it via any messaging app — it's not sensitive beyond enabling a connection attempt, and the TLS fingerprint prevents man-in-the-middle attacks.

Architecture ​

┌─────────────────────────────────┐
│         Electron App            │
│  ┌───────────┐  ┌────────────┐  │
│  │  React UI │  │ Main Proc  │  │
│  │ (renderer)│◄─┤ (electron) │  │
│  └───────────┘  └─────┬──────┘  │
│                       │         │
│         ┌─────────────┼──────┐  │
│         │             │      │  │
│    ┌────▼────┐  ┌─────▼───┐  │  │
│    │ Tunnel  │  │Streaming│  │  │
│    │ (p2p)   │  │ Engine  │  │  │
│    └─────────┘  └─────────┘  │  │
└─────────────────────────────────┘
  • React UI — Three screens (home, host, client). Communicates with the main process via IPC bridge.
  • Main Process — Manages the streaming engine, GPU detection, tunnel, and auto-configuration. All process spawning happens here.
  • Network — Direct connection over the local network or Tailscale. No relay, no router changes.
  • Streaming Engine — Bundled and managed silently. Handles video encoding, streaming protocol, and input forwarding.

The renderer never touches system APIs directly. Everything goes through 5 IPC methods exposed on window.at.