Nalvo.ai Fleet Manager - rent out a Windows PC
A Windows 11 PC with an NVIDIA graphics card can be rented out through Nalvo. Nalvo is in closed beta, and renting is not open yet. A renter gets one Linux container on your PC (Docker inside WSL, the Windows Subsystem for Linux) and logs in with an SSH key. Renters do not get your desktop or your Windows account. Nothing is listed until you choose Nalvo for the PC in the Fleet Manager.
The GPU is shared with your desktop. Renters are told that this is a Windows PC, that you may use the GPU yourself, and that they are credited automatically when the agent detects that you do, or when the PC sleeps, restarts or signs out during their rental.
What you need
- Windows 11, version 22H2 or newer, with current updates (Home or Pro).
- An NVIDIA GeForce or RTX card (GTX 10 series or newer) with NVIDIA driver 580 or newer. Data-centre cards in TCC mode do not work.
- CPU virtualization turned on in the BIOS/UEFI setup (called Intel VT-x, AMD SVM or "Virtualization Technology").
- 16 GB of memory or more (Windows always keeps at least 8 GB for itself).
- Free space on drive C:, where the rentals account's user folder must be (the script stops if Windows would put it on another drive). The rentals Linux system gets its own disk of at most 256 GB that never grows so large that less than 64 GB stay free on the drive; the script stops if that disk would be smaller than 100 GB, so you need at least 164 GB free (320 GB or more for the full 256 GB).
- A router where you can forward ports, and an internet connection with its own public IPv4 address (not carrier-grade NAT). A wired connection is strongly recommended.
- Python 3 from python.org, installed inside the rentals account for that account only ("for this user"; step 4 says how). The Fleet Manager pairing command and the Nalvo agent use it.
- Your own administrator account on the PC, for the first step.
- A PC that only you (or people you trust with the renters' data) can physically use. See "A password for the rentals account" below.
Why rentals use a separate Windows account
Renters run their own programs. Microsoft states that a WSL Linux system is not a security boundary: a program that broke out of the rental container would act with the rights of the Windows account that runs WSL. So Nalvo never runs rentals under your account. The script creates a separate standard account (default name nalvo): never an administrator, and while it has no password it can sign in only at this PC, never over the network. Its WSL and settings are separate from yours, so your own WSL, Docker Desktop or Salad keep their settings. Rental containers cannot reach this PC, your router (also not through your connection's public address) or other devices at home; they can reach only the internet.
What the rentals account can and cannot open
Windows lets every account read, and often change, many places by default, for example a second drive or a folder you created directly on C:. The Admin stage therefore adds a "deny" permission for the rentals account, and only for it, on:
- every other drive of the PC (D:, E:, ...), and every USB drive formatted with NTFS that is plugged in at that moment;
- every folder directly on C:\ except Windows, Program Files, Program Files (x86), ProgramData, Users and Windows' own hidden system folders (so for example C:\Games or C:\Projects are denied);
- C:\Users\Public, and every other folder in C:\Users that is not an account's own user folder (for example C:\Users\Default.migrated after a Windows upgrade, or the folder a deleted account left behind).
Your own user folder (Documents, Desktop, Pictures and so on) and other people's user folders are private to their owners already. Every permission the script adds is recorded in C:\ProgramData\Nalvo\acl-backup.json, and exactly those are taken away when you remove Nalvo. On a drive with many files this step can take several minutes. A folder whose permissions the script cannot read or change is skipped with a warning and listed as not protected; the other places are still denied.
Not protected:
- USB drives and memory cards formatted as FAT32 or exFAT: they have no permissions at all. Unplug them while the PC is rented out.
- Drives and folders that appear after the Admin stage ran. Run the Admin stage again after you create a new folder directly on C:\ or attach a drive. Until then the agent's file check fails and the Fleet Manager keeps the PC out of the market.
- Folders inside those places that were given their own permissions for all users (some programs and game launchers do that), files kept loose directly on C:\, and anything inside a place where Windows could pass the deny permission on only partly (the script lists such a place as not protected and tries again the next time it runs).
- Links and mounted drive folders directly on C:\ or in C:\Users. The script never changes them, because a permission set on a link would land on what it leads to. The agent's file check does not look at the link itself but at the folder or drive it leads to: if the rentals account can open that, the PC stays out of the market. Remove a link you do not need; give a drive that is mounted in a folder a drive letter of its own and run the Admin stage again, so that the whole drive is denied.
- Windows and installed programs, which the account needs to run: they can be read, not changed. Python for the rentals account goes inside that account (see step 4); Python installed for all users in a folder directly on C:\ (for example C:\Python312, as some package managers do) is denied to it like any other such folder.
Keep personal files in your own user folder.
1. Download the script and check it
Open Windows PowerShell as administrator in your own account (Start, type PowerShell, right-click Windows PowerShell, Run as administrator) and run these three lines:
cd $env:USERPROFILE\Downloads curl.exe -fLo prepare-rentals.ps1 https://fleet.nalvo.ai/installer/prepare-rentals.ps1 (Get-FileHash .\prepare-rentals.ps1 -Algorithm SHA256).Hash
The hash must be e2b253f70b0eb4d994ccd152c05fa376682f14832572f288f67c75a0b0610f0b (capital or small letters do not matter). If it is different, do not run the file. The script is plain text; you can read it in Notepad first. Nalvo never asks you to paste a command that downloads and runs code in one step.
2. Admin stage (your administrator window, about 5 minutes)
powershell -NoProfile -ExecutionPolicy Bypass -File .\prepare-rentals.ps1 -Stage Admin
It lists what it will change, including every drive and folder it will deny to the rentals account, and waits for you to type YES. Then it:
- checks Windows, virtualization, the NVIDIA driver, and that the rental TCP ports are not reserved by Windows: 40000-40019, or the range you chose with
-PortFirstand-PortLast(a later run keeps the range already set); - installs or updates WSL. Updating WSL stops running WSL programs such as Salad or Docker Desktop; they start again by themselves. If a rental is running in the rentals account, it does not update WSL (add
-Forceto update anyway, which can end that rental). If Windows has to restart, the script says so: restart and run the same command again; - creates the standard account
nalvoand adds it to "Performance Monitor Users", so the Nalvo agent can read the GPU usage counters that show when your own programs use the GPU. An account that already exists is used only if this script created it; to use another existing account add-AdoptExistingAccount, but then that account's own files are open to a renter who breaks out of the container (it must not be an administrator, and automatic sign-in is not offered for it). The script checks the account before it changes anything, so a refusal leaves the PC as it was; - adds the deny permissions described above;
- offers to set a password for
nalvo(see below); - adds one Hyper-V firewall rule,
Nalvo-Rental-SSH-In, that lets the internet reach the rental ports of WSL (TCP 40000-40019, or the range you chose). Windows applies this rule to every account's WSL on this PC, not only to the rentals account's, so do not run services on these ports in your own WSL (the script warns you if your own WSL uses mirrored networking); - sets "sleep" and "hibernate" on mains power to Never (the values of each power plan it changes are saved and restored when you remove Nalvo);
- warns you if this PC is already a node in your Fleet Manager from another account (see step 4);
- saves its settings in
C:\ProgramData\Nalvoand copies the script there for the next steps.
Running the Admin stage again is safe: it keeps the account, the rental ports and every saved setting, and only adds what is missing.
Options: -Account name for another account name; -PortFirst 41000 -PortLast 41019 if Windows has reserved the default ports on your PC (the script tells you; after a change run the User stage again and change your router forward to the new range); -AutoSignIn, see "Keep the rentals account signed in" below.
A password for the rentals account
Without a password, anyone who can use this PC can open nalvo with one click on the sign-in screen, and locking the screen does not stop them. From that account they can open the renters' Linux system and everything in it. The Admin stage therefore offers a password, which Nalvo recommends unless only you can physically use the PC. You type it twice; it is hidden, and the script never shows, logs or saves it. The trade-off: Windows cannot sign in to an account with a password by itself, so automatic sign-in (below) is not possible, and after every restart someone has to sign in to nalvo before rentals run again. If you set a password in a later run while automatic sign-in is on, the script turns automatic sign-in off and says so. With a password the account can also sign in over the network, for example to shared folders; it never gets administrator rights.
3. Switch to the rentals account
Start, click your account picture, choose nalvo (with the password if you set one). Use Switch user, not Sign out, so your own account stays signed in. The first sign-in takes a minute; if Windows asks privacy questions, choose the minimum.
4. Pair it with the Fleet Manager
One PC can be only one node. If this PC is already in your Fleet Manager because you paired it from your own account, first remove it in the Fleet Manager. The Nalvo agent in your own account then uninstalls itself. Only then pair the PC from the nalvo account. The Admin stage warns you when it finds that agent.
If you installed Nalvo for Windows in your own account, removing the PC in the Fleet Manager does not uninstall it. Uninstall it first in Windows Settings, Apps, Installed apps, Nalvo, then remove the PC in the Fleet Manager, then pair from the nalvo account.
In the nalvo account, first install Python 3 for that account only: download it from python.org, run the installer, clear "Use admin privileges when installing py.exe" and choose Install Now, which installs it for this user. Do not rely on a Python installed for all users in a folder directly on C:\: the Admin stage denies that folder to nalvo, warns you when it finds one, and stops if the agent in nalvo already runs from it.
Then open the Fleet Manager in a browser in the nalvo account, tap + Add a computer, tap Show the line, and copy the On Windows line. Open Windows PowerShell normally (not as administrator) and paste it. The Nalvo agent installs itself in this account and starts whenever the account signs in.
5. User stage (in the rentals account, 10 to 30 minutes)
In the same normal PowerShell window in the nalvo account:
powershell -NoProfile -ExecutionPolicy Bypass -File C:\ProgramData\Nalvo\prepare-rentals.ps1 -Stage User
It:
- sets this account's WSL to mirrored networking with its firewall on and no GUI apps, and limits it to part of the memory and processors so Windows keeps enough (change with
-MemoryGBand-Processors); - downloads Ubuntu 24.04 for WSL from releases.ubuntu.com and checks its SHA256;
- creates the Linux system
NalvoRentalwith a disk of at most 256 GB that leaves at least 64 GB free on the drive (choose another size of at least 100 GB with-DiskGB). Where this WSL supports it safely, the disk gives space back to Windows when renters delete files; otherwise it still never grows beyond its limit; - turns off automatic mounting of Windows drives, Windows programs and GUI inside it, installs Docker, the NVIDIA Container Toolkit, and the Nalvo egress guard that keeps rental containers away from your PC, your network and your connection's public address. It never installs a Linux NVIDIA driver; WSL uses your Windows driver;
- checks on this PC: mirrored networking, the GPU and a CUDA program inside a container, that a container cannot reach your PC, router, network or public address but can reach the internet, and that a rental port answers on this PC (127.0.0.1). It cannot test the way in from the internet through your router: Nalvo checks that from outside after the PC is listed;
- prints what to set on your router;
- at the end, stops the WSL of the
nalvoaccount once more (only while no rental runs). The Nalvo agent then starts NalvoRental afresh and can tell its Linux system apart from your own WSL (Salad, for example) when it measures host GPU use.
It restarts the WSL of the nalvo account only; your own account's WSL keeps running. While it runs, the Nalvo agent does not restart that WSL. If it stops part-way, run it again: it continues where it stopped. Do not open NalvoRental from the Start menu or Windows Terminal.
6. Router: forward the rental ports
- Give the PC a fixed address in your router: a DHCP reservation for the address the script printed.
- Forward the rental ports the script printed, TCP 40000-40019 unless you chose another range with
-PortFirstand-PortLast, from the internet to that address, same ports. Only TCP and only these ports. Do not use "DMZ host" or UPnP for this PC. - The script also prints your public IPv4 address. If your router's status page shows a different WAN or Internet address, or one between 100.64.0.0 and 100.127.255.255, your provider uses carrier-grade NAT and forwarding cannot work: ask the provider for a public IPv4 address.
What the Fleet Manager checks before the PC is offered
The Nalvo agent in the nalvo account reports these checks, and the Fleet Manager shows them for the PC. The PC is offered to renters only while every one of them passes:
- a separate standard Windows account for rentals is set up and signed in, and the agent runs in it;
- the rentals account cannot open the other drives, the folders directly on C:\ outside Windows, Program Files, ProgramData and Users, other people's user folders, C:\Users\Public or the other folders in C:\Users;
- the agent can read the Windows GPU usage counters for the NVIDIA card (this is how it notices when you use the GPU);
- WSL 2 and the NalvoRental Linux system are installed;
- mirrored WSL networking is on;
- Docker is installed and running;
- the network guard that keeps renters off your home network is on;
- rental containers can see the GPU;
- the NVIDIA driver is version 580 or newer.
While Windows waits to restart for an update, the PC takes no new bookings. The Fleet Manager also shows whether the PC uses the default rental ports 40000-40019; that is for your information only.
Not checked before the PC is offered: whether renters can reach it from the internet through your router (Nalvo checks that after the PC is listed), whether Windows keeps the PC awake from the background account, and automatic sign-in. Windows rentals are new, and these depend on your exact PC.
Keep the rentals account signed in
Rentals run only while nalvo is signed in. Go back to your own account with Switch user; locking the screen is fine. Signing out of nalvo, restarting, shutting down or sleep stop running rentals. If the PC is away for more than about 3 minutes during a rental, that rental ends as a host fault: the renter pays only for the time delivered, the PC gets a reliability mark, and the Compute Market takes it out of the market. Fix the cause, make sure the PC is online, then open the Compute Market and choose List again for the PC under My nodes.
Optional automatic sign-in: run the Admin stage again with -AutoSignIn. It works only while nalvo has no password. After a restart, including Windows Update restarts, Windows then signs in to nalvo by itself, so the PC can take new bookings again without you. It does not save a rental that was running during the restart (see above). You confirm by typing the account name; no password is stored anywhere. Because the account then has no password, use automatic sign-in only on a PC that only you can physically use.
Sleep and Windows Update
- The PC must stay awake. The script turns off automatic sleep on mains power, and the agent asks Windows to keep the PC awake during rentals. Do not put the PC to sleep yourself while it is rented out; that ends the rental.
- Windows 11 restarts for updates about once a month, outside your active hours. A restart during a rental ends it as a host fault (see above). Set active hours to cover the time rentals usually run: Settings > Windows Update > Advanced options > Active hours (up to 18 hours).
- Turn off "Get the latest updates as soon as they're available" in Settings > Windows Update; it brings extra restarts.
- While a restart is waiting, the Fleet Manager takes no new bookings for the PC; it never stops a running rental for this. Restart when no one is renting. You can also pause updates for up to 5 weeks.
- Automatic updates of WSL itself can interrupt a rental. After a short interruption the agent starts the renter's container again, with their files kept; a longer one ends the rental like a restart (see above).
Games, Salad and other GPU programs
The GPU is shared with your desktop. When another program uses the GPU heavily during a rental, for example a game or Salad, the renter gets less of it. The agent reads the GPU usage counters in Windows: when another program keeps a 3D, graphics or compute engine of the GPU busy above 15% for at least half of a minute, it sends Nalvo only a yes/no "the PC is busy", and the renter is credited automatically for that time (50%). Time in which the agent cannot measure this is credited the same way. Shorter or lighter use is not noticed, and video encoding or decoding (recording or streaming, for example) is not counted. To earn the most, do not run Salad or other heavy GPU programs while the PC is rented out.
If you want the GPU for yourself for a longer time, schedule a maintenance window for the PC in the Compute Market (the Maintenance section, below My nodes): no booking can be placed over it, and the PC takes no rentals while it runs. A window cannot overlap a booking that is already made, so start it after the current rental; a running rental is never stopped for it. The Fleet Manager has no button to pause renting.
Remove everything
- In the
nalvoaccount, normal PowerShell:powershell -NoProfile -ExecutionPolicy Bypass -File C:\ProgramData\Nalvo\prepare-rentals.ps1 -Stage User -Remove
It permanently deletes NalvoRental after you typeDELETE, and restores that account's WSL settings. - In your own account, administrator PowerShell:
powershell -NoProfile -ExecutionPolicy Bypass -File C:\ProgramData\Nalvo\prepare-rentals.ps1 -Stage Admin -Remove
It removes the firewall rule and every deny permission it added, restores the sleep settings of each power plan it changed and your sign-in settings, offers to delete thenalvoaccount and its files (only an account this script created; an account that stays is taken out of the groups the script added it to), and deletesC:\ProgramData\Nalvo. WSL itself stays installed. While a rental is running it stops unless you add-Force. A deny permission that Windows does not let it take away (it names the folder) keeps it from finishing only while thenalvoaccount still exists; once that account is deleted, such a permission names no account and does nothing. - Remove the PC in the Fleet Manager.
If something goes wrong
Every step is safe to run again. The script ends with an exit code:
| Code | Meaning |
|---|---|
| 0 | Done. |
| 2 | A wrong option, or you cancelled. Nothing was changed by that run. |
| 3 | Restart Windows, then run the same command again. |
| 4 | Something the PC needs is missing, a rental is running, or the rentals account's user folder or Python lies in a place the script must deny to it; the message says what. Nothing was changed by that check. |
| 5 | A step or check failed; the message says which. Fix it and run the same command again. |
| 6 | Wrong account or window: the Admin stage needs an administrator window in your own account; the User stage needs a normal window in the rentals account. An existing account that this script did not create needs -AdoptExistingAccount. |
Linux machines: make a Nalvo install USB - Back to the Fleet Manager