# OpenNOW (/docs)





OpenNOW is an open-source desktop client for GeForce NOW. These docs cover the install path, the Electron app, the renderer WebRTC stream, settings, capture, input, and the experimental native streamer.

For macOS users looking for a more performant OpenNOW version, Jayian1890 maintains the separate [OpenNOW-Mac](https://github.com/OpenCloudGaming/OpenNOW-Mac) repository.

<Callout type="info" title="Independent community project">
  OpenNOW is not affiliated with NVIDIA. NVIDIA and GeForce NOW are trademarks of NVIDIA Corporation.
</Callout>

<Cards>
  <Card title="Install and play" icon="<Download />" href="/docs/guides/getting-started" description="Release packages, first launch, sign-in, app settings, and source builds." />

  <Card title="Architecture map" icon="<Network />" href="/docs/architecture/overview" description="Main, preload, renderer, shared contracts, native process, and data ownership." />

  <Card title="Configuration reference" icon="<SlidersHorizontal />" href="/docs/reference/configuration" description="Every setting, default, persisted key, and compatibility normalization rule." />

  <Card title="WebRTC and signaling" icon="<Radio />" href="/docs/reference/webrtc" description="CloudMatch, SDP, ICE, NVST data channels, Chromium flags, and failure handling." />

  <Card title="Native streamer" icon="<Cpu />" href="/docs/reference/native-streamer" description="Experimental Rust/GStreamer protocol, diagnostics, media caps, and fallback behavior." />

  <Card title="Input and capture" icon="<Gamepad2 />" href="/docs/reference/input" description="Pointer lock, keyboard layout, gamepad, clipboard, microphone, screenshots, and recording." />
</Cards>

## Fast path [#fast-path]

<Steps>
  <Step>
    **Download** the latest desktop release from [GitHub Releases](https://github.com/OpenCloudGaming/OpenNOW/releases).
  </Step>

  <Step>
    **Install** the artifact for your platform: Windows `.exe`, macOS `.dmg`/`.zip`, Linux `.AppImage`/`.deb`, or the iOS TestFlight beta.
  </Step>

  <Step>
    **Sign in** through browser OAuth or QR/device authorization and let OpenNOW persist the session locally.
  </Step>

  <Step>
    **Tune** codec, resolution, FPS, bitrate, color quality, region, input, microphone, and capture settings from the app.
  </Step>
</Steps>

## Choose your docs path [#choose-your-docs-path]

<Tabs items="['Users', 'Builders', 'Streaming internals']">
  <Tab>
    * Start with [Getting Started](/docs/guides/getting-started).
    * Keep [Configuration](/docs/reference/configuration) open when tuning quality, shortcuts, capture, and controller mode.
    * Use [Media](/docs/reference/media) for screenshots, recordings, local storage, and gallery behavior.
  </Tab>

  <Tab>
    * Read [Architecture](/docs/architecture/overview) before changing process-boundary code.
    * Use [Development](/docs/development) for local scripts, checks, release packaging, and contribution workflow.
    * Check [Authentication](/docs/reference/authentication) before touching provider, token, or session refresh logic.
  </Tab>

  <Tab>
    * Read [WebRTC](/docs/reference/webrtc) for signaling, SDP negotiation, ICE, and NVST data channels.
    * Use [Native Streamer](/docs/reference/native-streamer) for the Rust/GStreamer protocol and runtime gates.
    * Use [Streamer Investigation](/docs/advanced/streamer-investigation) for backend strategy and diagnostics.
  </Tab>
</Tabs>

## Repository map [#repository-map]

<Files>
  <Folder name="OpenNOW">
    <Folder name="opennow-stable">
      <Folder name="src/main">
        <File name="GFN auth, CloudMatch, settings, media, native process management" />
      </Folder>

      <Folder name="src/preload">
        <File name="Typed IPC bridge exposed as window.openNow" />
      </Folder>

      <Folder name="src/renderer">
        <File name="React UI, library, WebRTC playback, input, stats, capture" />
      </Folder>

      <Folder name="src/shared">
        <File name="Serializable contracts shared across Electron boundaries" />
      </Folder>
    </Folder>

    <Folder name="native">
      <File name="Rust/GStreamer streamer implementation and build outputs" />
    </Folder>

    <Folder name="locales">
      <File name="Source language and generated Crowdin translations" />
    </Folder>
  </Folder>
</Files>

## What is stable? [#what-is-stable]

<Accordions type="single">
  <Accordion title="Default streaming path">
    The default renderer path streams through Chromium WebRTC and is the production path for desktop packages.
  </Accordion>

  <Accordion title="Native streamer">
    The Rust/GStreamer streamer is experimental, currently opt-in on Windows, and falls back to the web streamer when platform, protocol, backend, or media capability checks fail.
  </Accordion>

  <Accordion title="Session state">
    OAuth, token refresh, provider/alliance behavior, CloudMatch session lifecycle, and launch errors are owned by the Electron main process.
  </Accordion>
</Accordions>
