Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
334500b
Add native Rust streamer (opennow-streamer) with full GFN client impl…
zortos293 Dec 30, 2025
dfdeb8b
feat: macOS optimizations and frame rate synchronization
zortos293 Dec 31, 2025
f01428b
Rewrite CI workflow to build opennow-streamer native client with FFmpeg
zortos293 Dec 31, 2025
2cb8459
Merge pull request #82 from zortos293/capy/rewrite-ci-workflow--a59eeed5
zortos293 Dec 31, 2025
9e536eb
Remove Tauri-based frontend and backend, focus on native opennow-stre…
zortos293 Dec 31, 2025
cddda2e
Merge pull request #84 from zortos293/capy/cap-3-760c400f
zortos293 Dec 31, 2025
306a8d7
Fix CI build errors and improve cross-platform bundling
zortos293 Dec 31, 2025
f105406
feat: add session conflict detection and resume capability
f1shy-dev Dec 31, 2025
22eeebf
Merge pull request #85 from f1shy-dev/capy/implement-session-re-2b4c7dea
zortos293 Dec 31, 2025
8dc72c1
Increase recursion limit for serde_json macro
zortos293 Dec 31, 2025
0aaf23d
Fix compilation errors: add Deserialize derives, fix render_games_scr…
zortos293 Dec 31, 2025
8960a04
Fix CI: use master-latest FFmpeg builds, add ARM64 OpenSSL, fix macOS…
zortos293 Dec 31, 2025
e31eb13
Fix game launch and sync render FPS to decode rate
zortos293 Jan 1, 2026
a61ef1a
Refactor: split large files into smaller modules
zortos293 Jan 1, 2026
951cc35
Fix controller input - use packet type 12, Little Endian, XInput format
zortos293 Jan 1, 2026
54681bc
docs: remove IMPLEMENTATION_PLAN.md
zortos293 Jan 2, 2026
d477bab
feat: Update CI FFmpeg source for Windows, add `libasound2-dev` for A…
zortos293 Jan 2, 2026
7f5a7f6
fix: Add FFmpeg DLL.A to LIB renaming for MSVC compatibility and incl…
zortos293 Jan 2, 2026
e551261
feat: Add GPU vendor detection for optimized hardware video decoder s…
zortos293 Jan 2, 2026
f309bc7
fix: Adapt to wgpu API changes by borrowing `InstanceDescriptor` and …
zortos293 Jan 2, 2026
28fda44
fix: Suppress errors when renaming FFmpeg library files in the auto-b…
zortos293 Jan 2, 2026
2abdf9f
feat: Add user-selectable video decoder backends with UI and platform…
zortos293 Jan 2, 2026
fce1dc0
feat: Introduce initial client application with session management, C…
zortos293 Jan 2, 2026
b1fb822
feat: Implement core application state management, API interactions, …
zortos293 Jan 2, 2026
663ec4e
feat: Add the core application state and logic for the OpenNow Streamer.
zortos293 Jan 2, 2026
0c48a4b
feat: Implement GFN game catalog GraphQL API, foundational applicatio…
zortos293 Jan 2, 2026
93ca952
feat: Implement core WebRTC streaming client components including pee…
zortos293 Jan 2, 2026
f6ccce0
feat: Establish initial GUI screen architecture with login, session, …
zortos293 Jan 2, 2026
2ccd73e
feat: Add core GPU renderer with wgpu for video frames and UI overlay…
zortos293 Jan 2, 2026
81f674a
feat: implement robust macOS VideoToolbox hardware decoding with expl…
zortos293 Jan 3, 2026
5849593
feat: Implement D3D11VA zero-copy video for Windows, optimize audio p…
zortos293 Jan 3, 2026
4d5bea3
feat: implement macOS raw input capture and WebRTC streaming initiali…
zortos293 Jan 3, 2026
f7118ff
feat: Add WGPU renderer, media handling (audio, video, D3D11), and We…
zortos293 Jan 3, 2026
007bbb7
feat: Implement wgpu-based rendering for UI and video, alongside new …
zortos293 Jan 3, 2026
9a562ed
feat: Add core application state management `App` struct and its asso…
zortos293 Jan 3, 2026
dc65087
feat: add Opus audio decoder and cpal audio player with dynamic devic…
zortos293 Jan 3, 2026
5b6b496
feat: Implement proactive token refreshing and synchronous refresh on…
zortos293 Jan 3, 2026
e4b4aa4
perf: Optimize macOS rendering with 60fps minimum and display sync, r…
zortos293 Jan 3, 2026
1585316
fix: Apply Cargo.toml version update only to the first 10 lines in au…
zortos293 Jan 4, 2026
32246f3
build: Update FFmpeg download to n7.1 builds for Windows and Linux AR…
zortos293 Jan 4, 2026
cf81962
fix: Update FFmpeg ARM64 download URLs to include the version tag.
zortos293 Jan 4, 2026
437f064
feat: Refactor macOS build to create a proper .app bundle with Info.p…
zortos293 Jan 4, 2026
ff01848
Fix: RPi5/Vulkan crash by using downlevel device limits
zortos293 Jan 4, 2026
790b511
Fix: Relax wgpu memory hints and latency to prevent OOM on RPi5
zortos293 Jan 4, 2026
8a095b5
Fix: Remove duplicate view_formats field
zortos293 Jan 4, 2026
fabe0d4
feat: implement wgpu-based GUI and video renderer, core application t…
zortos293 Jan 4, 2026
c47f334
feat: implement macOS and Windows raw mouse input with event coalescing.
zortos293 Jan 4, 2026
3959c06
feat: Add hardware-accelerated H.264/H.265/AV1 video decoder with FFm…
zortos293 Jan 4, 2026
3bbdf0a
feat: introduce hardware-accelerated video decoding using FFmpeg with…
zortos293 Jan 4, 2026
a590e31
feat: Add hardware-accelerated video decoder module with GPU detectio…
zortos293 Jan 4, 2026
3c09d79
feat: Add `wgpu`-based GPU renderer for video frames and UI, supporti…
zortos293 Jan 4, 2026
23a43b0
feat: Add wgpu GPU renderer for video and UI, and configure Claude AI…
zortos293 Jan 4, 2026
d8ee9df
feat: implement wgpu-based GPU renderer for video frames and egui UI,…
zortos293 Jan 4, 2026
b3ea7c2
feat: Add Claude AI shell permissions and implement a new wgpu GPU re…
zortos293 Jan 4, 2026
125b078
feat: Implement GPU renderer for video and UI using `wgpu` and `egui`…
zortos293 Jan 4, 2026
77f0d1f
feat: add wgpu-based GPU renderer for video frames and UI overlays wi…
zortos293 Jan 4, 2026
1e3b43f
feat: implement initial OpenNow Streamer application with core window…
zortos293 Jan 4, 2026
d152ed0
feat: Introduce WGPU-based renderer for GUI and video frames, integra…
zortos293 Jan 4, 2026
ccd260c
feat: Introduce hardware-accelerated video decoding via FFmpeg, inclu…
zortos293 Jan 4, 2026
50a603b
feat: Add wgpu-based GUI renderer for video and UI, and configure Cla…
zortos293 Jan 4, 2026
3025885
feat: Implement hardware-accelerated H.264/H.265/AV1 video decoding w…
zortos293 Jan 4, 2026
0d7448f
feat: Add GPU renderer for video frames and UI overlays using wgpu an…
zortos293 Jan 4, 2026
82bca5d
feat: Refactor macOS app bundling to explicitly copy FFmpeg libraries…
zortos293 Jan 4, 2026
271fece
fix: Resolve @rpath dependencies and add ad-hoc code signing to macOS…
zortos293 Jan 4, 2026
51c03b7
refactor: remove 'local' keyword from shell script variable declarati…
zortos293 Jan 4, 2026
4af383b
build: Add special pass to rewrite @rpath references in bundled macOS…
zortos293 Jan 4, 2026
6fed4fb
build: enforce a minimum version of v0.2.0 in the auto-build workflow.
zortos293 Jan 4, 2026
9cad632
docs: Revise README to reflect native Rust implementation, new featur…
zortos293 Jan 4, 2026
1dff9ba
Update opennow-streamer/macos/Info.plist
zortos293 Jan 4, 2026
5736e96
Merge branch 'main' into Native
zortos293 Jan 4, 2026
dece5b8
docs: Format Features list as a status table in README
zortos293 Jan 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 0 additions & 43 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,3 @@
## Description

<!-- Provide a brief description of the changes in this PR -->

## Related Issue

<!-- Link to the issue this PR addresses (if applicable) -->
Fixes #

## Type of Change

<!-- Mark the appropriate option with an [x] -->

- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
- [ ] Refactoring (no functional changes)
- [ ] Performance improvement
- [ ] CI/CD changes

## Platform Tested

<!-- Mark platforms you've tested on -->

- [ ] macOS
- [ ] Windows
- [ ] Linux

## Checklist

<!-- Mark completed items with an [x] -->

- [ ] My code follows the project's coding style
- [ ] I have tested my changes locally
- [ ] I have added/updated documentation as needed
- [ ] My changes don't introduce new warnings
- [ ] I have checked that there aren't other open PRs for the same issue

## Screenshots (if applicable)

<!-- Add screenshots to demonstrate visual changes -->

## Additional Notes

<!-- Any additional information that reviewers should know -->
774 changes: 596 additions & 178 deletions .github/workflows/auto-build.yml

Large diffs are not rendered by default.

141 changes: 52 additions & 89 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,157 +1,120 @@


<h1 align="center">OpenNOW</h1>

<p align="center">
<strong>Open source GeForce NOW client built from the ground up</strong>
<strong>Open source GeForce NOW client built from the ground up in Native Rust</strong>
</p>

<p align="center">
<a href="https://github.com/zortos293/GFNClient/releases">
<img src="https://img.shields.io/github/v/tag/zortos293/GFNClient?style=for-the-badge&label=Download" alt="Download">
</a>
<a href="https://github.com/zortos293/GFNClient/stargazers">
<img src="https://img.shields.io/github/stars/zortos293/GFNClient?style=for-the-badge" alt="Stars">
</a>
<a href="https://github.com/sponsors/zortos293">
<img src="https://img.shields.io/badge/Sponsor-EA4AAA?style=for-the-badge&logo=github-sponsors&logoColor=white" alt="Sponsor">
</a>
<a href="https://discord.gg/8EJYaJcNfD">
<img src="https://img.shields.io/badge/Discord-Join%20Us-7289da?style=for-the-badge&logo=discord" alt="Discord">
</a>
</p>

---
## ⚠️ The app is being rebuilt using native libraries instead of web wrapper


---
## Disclaimer

This is an **independent project** not affiliated with NVIDIA Corporation. Created through reverse engineering for educational purposes. GeForce NOW is a trademark of NVIDIA. Use at your own risk.

This is an **independent project** not affiliated with NVIDIA Corporation. Created for educational purposes. GeForce NOW is a trademark of NVIDIA. Use at your own risk.

---

## About

OpenNOW is a custom GeForce NOW client created by reverse engineering the official NVIDIA client. Built with Tauri (Rust + TypeScript), it removes artificial limitations and gives you full control over your cloud gaming experience.
OpenNOW is a custom GeForce NOW client rewritten entirely in **Native Rust** (moving away from the previous Tauri implementation) for maximum performance and lower resource usage. It uses `wgpu` and `egui` to provide a seamless, high-performance cloud gaming experience.

**Why OpenNOW?**
- No artificial limitations on FPS, resolution, or bitrate
- Privacy focused - telemetry disabled by default
- Open source and community-driven
- Works on Windows, macOS, and Linux

---

## Screenshot

<p align="center">
<img src="img.png" alt="OpenNOW Screenshot" width="800">
</p>
- **Native Performance**: Written in Rust with zero-overhead graphics bindings.
- **Uncapped Potential**: No artificial limits on FPS, resolution, or bitrate.
- **Privacy Focused**: No telemetry by default.
- **Cross-Platform**: Designed for Windows, macOS, and Linux.

---

## Download
## Platform Support

<p align="center">
<a href="https://github.com/zortos293/GFNClient/releases/latest">
<img src="https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="Windows">
</a>
<a href="https://github.com/zortos293/GFNClient/releases/latest">
<img src="https://img.shields.io/badge/macOS-000000?style=for-the-badge&logo=apple&logoColor=white" alt="macOS">
</a>
<a href="https://github.com/zortos293/GFNClient/releases/latest">
<img src="https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black" alt="Linux">
</a>
</p>
| Platform | Architecture | Status | Notes |
|----------|--------------|--------|-------|
| **macOS** | ARM64 / x64 | ✅ Working | Fully functional foundation. VideoToolbox hardware decoding supported. |
| **Windows** | x64 | ✅ Working | **Nvidia GPUs**: Tested & Working. <br> **AMD/Intel**: Untested (likely works via D3D11). |
| **Windows** | ARM64 | ❓ Untested | Should work but not verified. |
| **Linux** | x64 | ⚠️ Kinda Works | **Warning:** Persistent encoding/decoding issues may occur depending on distro/drivers. |
| **Linux** | ARM64 | ⚠️ Kinda Works | **Raspberry Pi 4**: Working (H.264). <br> **Raspberry Pi 5**: Untested. <br> **Asahi Linux**: ❌ Decode issues (No HW decoder yet). |
| **Android** | ARM64 | 📅 Planned | No ETA. |
| **Apple TV** | ARM64 | 📅 Planned | No ETA. |

---

## Features

### Streaming
| Feature | Description |
|---------|-------------|
| **High FPS Modes** | 60, 120, 240, and 360 FPS streaming |
| **4K & 5K Resolutions** | Up to 5120x2880, ultrawide support (21:9, 32:9) |
| **Video Codecs** | H.264, H.265 (HEVC), and AV1 |
| **Audio Codecs** | Opus mono and stereo |
| **Unlimited Bitrate** | Up to 200 Mbps (no artificial caps) |
| **NVIDIA Reflex** | Low-latency mode for competitive gaming |

### Input & Controls
| Feature | Description |
|---------|-------------|
| **Raw Mouse Input** | 1:1 movement with `pointerrawupdate` events |
| **Unadjusted Movement** | Bypasses OS mouse acceleration |
| **Clipboard Paste** | Paste text directly into games (Ctrl+V) |
| **Full Keyboard Capture** | All keys captured in fullscreen |

### Experience
| Feature | Description |
|---------|-------------|
| **Discord Rich Presence** | Shows current game with optional stats |
| **Multi-Region Support** | Connect to any GFN server region |
| **Privacy Focused** | Telemetry disabled by default |
| **GPU Accelerated** | Hardware video decoding (Windows) |
| **Dark UI** | Modern, clean interface |
## Features & Implementation Status

| Component | Feature | Status | Notes |
|-----------|---------|:------:|-------|
| **Core** | Authentication | ✅ | Secure login flow. |
| **Core** | Game Library | ✅ | Search & browse via Cloudmatch integration. |
| **Streaming** | RTP/WebRTC | ✅ | Low-latency streaming implementation. |
| **Streaming** | Hardware Decoding | ✅ | Windows (D3D11), macOS (VideoToolbox), Linux (VAAPI). |
| **Input** | Mouse/Keyboard | ✅ | Raw input capture. |
| **Input** | Gamepad | ✅ | Cross-platform support via `gilrs`. |
| **Input** | Clipboard Paste | 🚧 | Planned. |
| **Audio** | Playback | ✅ | Low-latency audio via `cpal`. |
| **Audio** | Microphone | 🚧 | Planned. |
| **UI** | Overlay | ✅ | In-stream stats & settings (egui). |
| **Core** | Multi-account | 🚧 | Planned. |
| **Fixes** | iGPU Support | 🚧 | Fixes for Intel/AMD quirks in progress. |

---

## Building

**Requirements:**
- Rust toolchain (1.75+)
- FFmpeg development libraries (v6.1+ recommended)
- `pkg-config`

```bash
git clone https://github.com/zortos293/GFNClient.git
cd GFNClient
bun install
bun run tauri dev
cd GFNClient/opennow-streamer
cargo build --release
```

**Requirements:** Bun, Rust, Tauri CLI
To run in development mode:

```bash
cd opennow-streamer
cargo run
```

---

## Troubleshooting


### macOS: "App is damaged" or won't open

macOS quarantines apps downloaded from the internet. To fix this, run:

### macOS: "App is damaged"
If macOS blocks the app, run:
```bash
xattr -d com.apple.quarantine /Applications/OpenNOW.app
```


If you encounter issues, please export your logs and attach them to your bug report:

1. Open **Settings** (gear icon in the top right)
2. Scroll down to the **Troubleshooting** section
3. Click **Export Logs**
4. Save the file and attach it to your [bug report](https://github.com/zortos293/GFNClient/issues/new?template=bug_report.yml)

Logs are stored at:
- **Windows:** `%APPDATA%\opennow\opennow.log`
- **macOS:** `~/Library/Application Support/opennow/opennow.log`
- **Linux:** `~/.local/share/opennow/opennow.log`

---

## Support the Project

If OpenNOW is useful to you, consider sponsoring to support development:
OpenNOW is a passion project developed entirely in my free time. I truly believe in open software and giving users control over their experience.

If you enjoy using the client and want to support its continued development (and keep me caffeinated ☕), please consider becoming a sponsor. Your support helps me dedicate more time to fixing bugs, adding new features, and maintaining the project.

<p align="center">
<a href="https://github.com/sponsors/zortos293">
<img src="https://img.shields.io/badge/Sponsor_on_GitHub-EA4AAA?style=for-the-badge&logo=github-sponsors&logoColor=white" alt="Sponsor on GitHub">
</a>
</p>


---


<p align="center">
Made by <a href="https://github.com/zortos293">zortos293</a>
</p>
Loading
Loading