> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Streaming native graphics using VNC

> Replit offers virtual network computing (VNC) functionality. VNC is a mature virtual desktop protocol that allows your Replit App to stream a native desktop to your web browser. This protocol allows native applications (developed in Python, Java, C++, etc.) to open desktop windows as they would on any physical computer.

This streaming technology allows you to work with legacy applications in your browser from any device! For example, you could run a Python-powered game designed for desktop right on your mobile phone or tablet without making any changes to the underlying code.

<a href="https://replit.com/@demcrepl/Tetris-in-Pygame" target="_blank">Tetris (powered by PyGame)</a>

<img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/tetris.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=ddf138f52d698a6baa7532ad74e88492" alt="image of Tetris in a Replit App" width="2055" height="1057" data-path="images/vnc/tetris.png" />

## How Can I Use VNC?

Any Replit App – in any language – can use a virtual desktop. No changes are needed to execute native graphics programs on Replit. The VNC pane will appear when any application attempts to open a native desktop window.

## Securing Your Replit App

By default, your VNC connection does not have a password and can only be accessed from [https://replit.com](https://replit.com) since the connection relies on the same authentication used for the WebSocket. If you need to access your Replit App via the external [noVNC](https://novnc.com) client, you can set a VNC password.

Set a password in your Replit App [secrets](/core-concepts/project-editor/app-setup/secrets) configuration. `Secrets` is a secure place to store passwords without the fear of other users accessing your passwords. Setting `VNC_PASSWORD` will add enhanced security when connecting remotely.

## How Can I Use Fullscreen VNC?

You must have secured your Replit App as instructed above to proceed with these steps.

1. Execute the following command in your "Shell" tab:
   ```sh theme={null}
   echo $REPL_ID
   ```

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/replid.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=45fcde093041183e77ba334b780e69ed" alt="image showing the echo command" width="628" height="174" data-path="images/vnc/replid.png" />
</Frame>

2. Construct your connection URL by replacing `REPL_ID` in with the output from above: `<\REPL_ID\>.id.repl.co`
3. Open the [noVNC client](https://novnc.com/noVNC/vnc.html) in a separate browser tab.
4. Open connection settings.

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/settings.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=1f46fa987102bf1bb95ea027d6b3f43d" alt="open connection settings" width="126" height="302" data-path="images/vnc/settings.png" />
</Frame>

5. Expand the WebSockets field. Enter your connection URL (`\<REPL_ID\>.id.repl.co`) in the `host` field, and leave the `path` field empty.

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/host.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=e1a6420a7573bb6f0e7a327ecd89b60d" alt="host" width="214" height="230" data-path="images/vnc/host.png" />
</Frame>

6. Change the `Scaling Mode` to `Remote Resizing`:

<Frame>
  <img src="https://mintcdn.com/replit/0ixNWaRF232g0Gwn/images/vnc/scaling.png?fit=max&auto=format&n=0ixNWaRF232g0Gwn&q=85&s=cc7bcd3ec3d8c5cf801d537eef6a2b16" alt="scaling" width="147" height="74" data-path="images/vnc/scaling.png" />
</Frame>

7. Use the `runner` username and the password configured above when asked for credentials.

## Examples

* <a href="https://replit.com/@demcrepl/Tetris-in-Pygame" target="_blank">PyGame</a>
* <a href="https://replit.com/@amasad-matplotlib" target="_blank">Python matplotlib</a>
* <a href="https://replit.com/@sigcse2021/Game-of-Life-demcrepl" target="_blank">Java Processing</a>
