Releases: mihaicristianfarcas/pingpong
Release list
pingpong 0.7.0
The pointer the way Apollo and Moonlight do it, stream sizes games fill, screenshots of your own screen, and surround sound from a Mac host.
Install
Get Ping and Pong from ping-pong.sh. It asks which computer you're installing on and what it runs. The same archives are attached below.
- macOS 14 or later, Apple silicon or Intel: open the zip and move the apps to Applications. They're signed with a Developer ID and notarized by Apple. Or with Homebrew:
For the host, open Pong Control and choose Start Pong.
brew tap mihaicristianfarcas/pingpong https://github.com/mihaicristianfarcas/pingpong brew install --cask ping # the client brew install --cask pong # the host: Pong.app and Pong Control.app
- Windows 10 or 11, 64-bit: extract the zip and open Ping.exe. For the host, you need an NVIDIA GPU and SudoVDA; double-click Install Pong.cmd. The programs aren't signed, so SmartScreen asks once (More info, then Run anyway).
- Linux: Ubuntu 24.04 and distributions built on it, x86_64. Unpack and run
./install.sh. It names any missing library, with its Ubuntu package.
Then pair: open Ping, click the host, and type the PIN it shows into Pong.
What changed since 0.6.1
- The host's own pointer, in the picture. Pong draws the pointer into the picture where the host's screen shows it, as Apollo does, and Ping sends the mouse's relative motion, as Moonlight does. Games read the mouse right: a pause menu takes hover and clicks, the mouse is no longer far too sensitive after the Steam overlay, no pointer is left over after the overlay closes, and a controller driving the pointer moves the host's own. Ctrl+Alt+Shift+M switches to sending positions (Moonlight's "remote desktop" mouse).
- Clicks follow a game's change of resolution on a Windows host: a game that sets a lower resolution no longer leaves its buttons out of reach.
- Sizes games fill. "This display", a Mac's scaled desktop and custom sizes are fitted to the nearest standard aspect ratio: 3024×1890 below a 14" MacBook Pro's notch, as in Moonlight. At 3024×1900 games drew a smaller picture and left strips where the Steam overlay's counter and notifications went stale.
- Screenshots of your own screen. On a Mac, ⌘⇧3, ⌘⇧4, ⌘⇧5 and CleanShot X work during a stream, with a crosshair that moves, and the stream takes the pointer back after. On Windows, Print Screen and Win+Shift+S stay this computer's.
- 5.1 and 7.1 from a Mac host with a surround output, through a Core Audio tap.
Ping mcp installadds Ping's MCP server to Claude Code, Codex and other agents.- Every page in Ping and Pong Control is top-aligned, without icon tiles.
Mixing versions
0.6 and 0.7 work with each other. Against a 0.6 host, Ping 0.7 draws the pointer itself, as before. A 0.6 Ping against a 0.7 host sends relative motion and draws no pointer. Update both for the whole change.
Known limits
- The Windows programs aren't code-signed yet. SmartScreen asks before each one first starts (More info, then Run anyway). On PCs where Smart App Control is on, Windows blocks them. See docs/install.md.
- The Linux archives use Ubuntu 24.04's libraries (FFmpeg 6, glibc 2.39). On other distributions, build from source.
- A Mac host has no controllers yet (they need an entitlement Apple grants on request), and a Linux host scales the screen to the client's size. Per platform: docs/platforms.
- The Windows client's screenshot shortcuts are built but not yet tested on a Windows client.
Full Changelog: v0.6.1...v0.7.0
pingpong 0.6.1
Downloads for every system, notarized Mac apps, and a new license. The apps themselves are as in 0.6.0.
Install
Get Ping and Pong from ping-pong.sh. It asks which computer you're installing on and what it runs. The same archives are attached below.
- macOS 14 or later, Apple silicon or Intel: open the zip and move the apps to Applications. They're signed with a Developer ID and notarized by Apple, so macOS opens them like any app from the internet. Or with Homebrew:
For the host, open Pong Control and choose Start Pong.
brew tap mihaicristianfarcas/pingpong https://github.com/mihaicristianfarcas/pingpong brew install --cask ping # the client brew install --cask pong # the host: Pong.app and Pong Control.app
- Windows 10 or 11, 64-bit: extract the zip and open Ping.exe. For the host, you need an NVIDIA GPU and SudoVDA; double-click Install Pong.cmd. The programs aren't signed, so SmartScreen asks once (More info, then Run anyway).
- Linux: Ubuntu 24.04 and distributions built on it, x86_64. Unpack and run
./install.sh. It names any missing library, with its Ubuntu package.
Then pair: open Ping, click the host, and type the PIN it shows into Pong.
What changed since 0.6.0
- Windows and Linux downloads alongside the Mac apps. The release workflow builds and publishes them for every change to
main. - Notarized Mac apps: signed with a Developer ID, hardened runtime, notarized and stapled. No more Open Anyway or quarantine command; the casks no longer clear the flag.
- License: pingpong is now under the GNU General Public License, version 3 (GPL-3.0-only), instead of MIT.
Known limits
- Updating from 0.6.0 changes the apps' signature, so macOS asks Pong for Screen Recording and Accessibility once more. From 0.6.1 on, the apps keep the same Developer ID, so later updates should keep those permissions.
- The Windows programs aren't code-signed yet. SmartScreen asks before each one first starts (More info, then Run anyway). On PCs where Smart App Control is on, as on some new Windows 11 installations, Windows blocks them. See docs/install.md.
- The Linux archives use Ubuntu 24.04's libraries (FFmpeg 6, glibc 2.39). On other distributions, build from source.
- A Mac host streams stereo and has no controllers yet, and a Linux host scales the screen to the client's size. Per platform: docs/platforms.
Full Changelog: v0.6.0...v0.6.1
pingpong 0.6.0
The first release of pingpong: stream a computer's desktop, games included, to another computer with the latency of Moonlight and Apollo, inside one post-quantum WireGuard tunnel. Ping is the client, Pong the host; both run on macOS, Windows and Linux.
Install
macOS (14 or later, Apple silicon or Intel), with Homebrew:
brew tap mihaicristianfarcas/pingpong https://github.com/mihaicristianfarcas/pingpong
brew install --cask ping # the client
brew install --cask pong # the host: Pong.app and Pong Control.appFor the host, open Pong Control and choose Start Pong: it then runs whenever you are logged in, with its icon in the menu bar. Or download the archives below.
Windows and Linux: built from source for now, see docs/install.md. On Windows the host runs as a service, from boot, before anyone signs in.
Then pair: open Ping, click the host, and type the PIN it shows into Pong.
What it does
- Moonlight-class streaming: up to 4K and 120+ fps, HEVC or H.264, hardware encode and decode, loss repaired by reference invalidation, frame pacing, stereo to 7.1 sound, controllers with rumble.
- Post-quantum throughout: pq-boringtun (WireGuard with ML-KEM-768) for every packet, and a hybrid SPAKE2 + ML-KEM PIN pairing.
- A virtual display at the client's exact mode on Windows and macOS hosts.
- From anywhere without port forwarding: sealed records on the BitTorrent DHT, and hole punching from both sides.
- The clipboard both ways: text, images, files and folders.
- AI agents that use your hosts as clients of their own, from Ping or any MCP client, held to rules the host enforces.
In this release, for the desktop
- Pong's icon in the macOS menu bar (no Dock icon) and the Windows notification area: what the host is doing, a device asking to pair (also a notification), the window a click away.
- Ping's menu bar as a Mac app's: Settings, File, Edit, View, Window and Help.
- Update notices in both apps: a line at the foot of the sidebar when a newer release exists (Homebrew copies are told
brew upgrade --cask). It asks GitHub once a day and can be turned off in General. - An agent session's page keeps only its title at the top; the rest is in the side panel.
- One running copy of each app; Linux launcher entries (
tools/linux/install-apps).
Known limits
- The macOS apps are signed but not notarized: the casks clear the quarantine flag. A downloaded archive needs Open Anyway in System Settings > Privacy & Security the first time.
- After each update, macOS asks Pong for Screen Recording and Accessibility again.
- A Mac host streams stereo and has no controllers yet; a Linux host scales the screen to the client's size. Per platform: docs/platforms.