ProxenoStar on GitHub

Self-hosted · No accounts · No telemetry

The open-source game streaming server for your own library

Proxeno runs the emulator once, on the best machine in your house, and streams it over WebRTC to the screens you already own — starting with a native Apple TV app. Your games, your hardware, your network.

Download the serverGet the Apple TV appcoming soon

Star proxeno/proxeno on GitHub

A 16-bit era side-scrolling game rendered on a living-room television, streamed by Proxeno
40 ms glass-to-glass· 60 fps · H.264

How it works

Three steps, all of them on your network

  1. 01

    Install the server

    One binary for macOS, Windows, and Linux, or a Docker image. Point it at the folder where your ROMs already live — it scans your existing library on disk and leaves your files exactly where they are.

  2. 02

    Pair your Apple TV

    Open the client, type the 4-digit code shown on the server dashboard, and the two are paired on your LAN. No account, no cloud round-trip, no QR-code service in the middle.

  3. 03

    Play

    H.264 over WebRTC, hardware-encoded, with save states, controller rumble, and up to 4 players in the same session plus spectators.

Glass-to-glass on LAN
~40 msGlass-to-glass on LAN
Server encode time
1.5 msServer encode time
Sustained frame rate
60 fpsSustained frame rate
Recovery after packet loss
<0.5 sRecovery after packet loss
Accounts required
0Accounts required
Telemetry events sent
0Telemetry events sent

Measured, not marketed — Apple Silicon host, wired gigabit LAN, 1080p60 H.264. Your numbers will vary with your hardware and network; the test harness is in the repo.

What it does

Built around a game library, not a generic desktop

Placeholder artwork standing in for the Proxeno library grid of box art
Library grid · placeholder art, real screenshots land with 1.0
Placeholder artwork standing in for the Proxeno web dashboard
Web dashboard · placeholder art, real screenshots land with 1.0
  • A library, not a file browser

    Box art, titles, regions, and release metadata — fetched by community scraper plugins you choose and configure. Nothing is looked up until you say so.

  • Save states with screenshots

    Snapshot mid-run, see exactly where you left off, and resume from any client in the house.

  • 4-player sessions + spectators

    Up to four controllers in one session, with read-only spectators who can watch without grabbing a slot.

  • A real web dashboard

    Manage emulator cores, library folders, scraper plugins, paired devices, and live sessions from any browser on your LAN.

  • Sandboxed plugin system

    Plugins run isolated with declared permissions, so a scraper can reach the network without touching the rest of your disk.

  • Works offline

    Once installed, Proxeno needs no internet connection to play. Unplug the uplink and nothing changes.

The ethos

Local-first, and specific about it

Everything below is checkable. If any of it stops being true, the pledge is broken and the source history will show it.

  • We ship no games and no BIOS files

    Proxeno is software that plays what you already have. You bring a library you own; we distribute nothing copyrighted.

  • No accounts

    There is nothing to sign up for. Devices pair with a 4-digit code on your own network.

  • No telemetry

    No usage pings, no crash beacons, no version checks you didn't ask for.

  • Your data stays in a SQLite file on your disk

    Library index, save states, and session history — one file, on hardware you control, that you can back up or delete.

  • Open source (Apache-2.0)

    A permissive license, not a copyleft trap. Fork it, audit it, run it in ways we never intended.

  • The server will never have paid features

    Not a promise about our roadmap — a pledge about our business model, written down and signed.

Open source stack

We built the stack — and gave it away

Proxeno’s H.264 encoder and its entire WebRTC transport are our own, written from scratch and open-sourced under Apache-2.0. You can read every line.

  • H.264 encoder for .NET

    Kiln

    A pure-managed H.264 encoder, written from scratch — no FFmpeg, no x264, no native dependencies. It's what encodes your gameplay.

  • WebRTC stack for .NET

    Keryx

    A from-scratch WebRTC implementation: ICE, DTLS-SRTP, RTP/RTCP, SCTP, and TURN. It's the transport that carries the stream to your screen.

Both Apache-2.0. Not required to use Proxeno — they’re the guts, open for anyone to audit, learn from, or reuse.

How this is funded

Stated plainly, without spin

Free, forever

The server

Open source under Apache-2.0, with no paid tier, no license key, and no feature held back. This is a pledge, not a launch promotion.

Paid once

Native clients

Buy the Apple TV app and own it. One purchase, no subscription, no per-device fee, no phoning home to check on you.

Coming later

Optional hosted relay

For playing away from home without running Tailscale or your own TURN server. Not available yet. Self-hosted remote play stays free and documented.

Download

Run it on the machine you already own

Every build is reproducible and checksummed. Version 0.9.2 · placeholder checksums until the first tagged release.

  • macOS

    Apple Silicon · .dmg

    Hardware H.264 encoding via VideoToolbox

    Download for macOS

    proxeno-0.9.2-macos-arm64.dmg
    sha256: 0000000000000000000000000000000000000000000000000000000000000000

  • Windows

    x86-64 · .msi

    NVENC, Quick Sync, and AMF where available

    Download for Windows

    proxeno-0.9.2-windows-x64.msi
    sha256: 0000000000000000000000000000000000000000000000000000000000000000

  • Linux

    .deb / .rpm · Docker

    VA-API hardware encoding; amd64 and arm64 images

    Download for Linux

    proxeno-0.9.2-linux-amd64.deb
    sha256: 0000000000000000000000000000000000000000000000000000000000000000

Apple TV app

App Store, coming soon. Paid once, no subscription.

Install from source

Clone, build, and audit every line — proxeno/proxeno.

Where it fits

Good neighbours, different jobs

These projects are all worth running. Here is the honest difference.

vs. RetroArch
An emulator frontend installed on every device you play on.
Proxeno runs the emulator once, on your best machine, and streams it — so the Apple TV never has to be fast enough to emulate anything.
vs. Moonlight / Sunshine
Excellent general-purpose desktop and PC-game streaming.
Proxeno is purpose-built around a game library, save states, and multi-controller sessions instead of a remote desktop.
vs. Plex
The self-hosted home for your movies — with an account attached.
What Plex is to your movies, Proxeno is to your game library — minus the accounts.

FAQ

Straight answers

Does Proxeno include games?

No — emphatically not. Proxeno ships no ROMs and no BIOS files, and it never will. It is a server for a library you already own, on disks you already control. Bundling game content would make the project legally indefensible and would put every self-hoster running it at risk; that trade is not worth making.

Do I need the internet?

Only to download it. After install, playing works entirely on your LAN — no uplink, no service check, no degraded mode when your connection drops.

What's paid?

Only the native client apps, once. The Apple TV app is a single purchase with no subscription. The server is free and open source, and never gains paid features.

Can I play away from home?

Yes — self-hosted today, via Tailscale, WireGuard, or your own TURN server. The remote play guide walks through it. An optional hosted relay is planned later for people who would rather not run that themselves; the self-hosted path stays free and supported either way.

What hardware do I need?

Any reasonably modern machine. Apple Silicon Macs get hardware encoding through VideoToolbox; recent Intel, AMD, and NVIDIA GPUs are hardware-encoded too. Software encoding works, with a few extra milliseconds of latency.

Is my library scanned or uploaded anywhere?

Your library is indexed locally into a SQLite file on your own disk and never leaves your machine. Metadata scraping is opt-in, per plugin, and configured by you — nothing reaches out until you enable it.