Security and privacy
Cloud Window is built so that the people who make it do not need to be trusted with your computer. This page explains how, in detail, including the places where you do have to trust someone.
The short version
- When you run it yourself, everything lives in your own AWS account. Cloud Window has no credentials for it, no key to it, and no way in.
- Your desktop password is set by you, applied inside your computer, and never stored anywhere afterwards. Nobody, including us, can read it back. If you forget it, you set a new one from your dashboard; the old one is gone.
- Your computer has no ports open to the internet except the one Tailscale uses for its encrypted tunnel. Your screen, keyboard and files travel only inside your own Tailscale network, which we are not part of.
- The image your computer boots from contains no secrets, no accounts and no identity. Passwords, keys and machine identity are generated on first boot, in your account.
- A hosted computer runs in an AWS account we operate. Our staff have no default access to it. Access happens only when you ask us for support and agree to it, for that task only, and every action is recorded. We explain exactly what that means below.
Where your computer and your data live
If you run it yourself
Every piece runs in your AWS account: the virtual machine, its encrypted disk, the small website you sign in to, and the functions that start and stop the computer. You deploy them with your own AWS credentials. Cloud Window the project never receives those credentials and has no account in your AWS organization. If we disappeared tomorrow, your computer would keep working.
If we host it for you
The hosted service is not launched yet. When it is, each customer gets their own separate deployment, with its own sign-in, its own machine, its own encrypted disk and its own permissions, inside an AWS account we operate. Customers never share a machine or a disk. We have written the isolation checks that verify this and we will not admit anyone until those checks pass on real deployments.
Who can get into your computer
You
Through Moonlight, over your Tailscale network, from devices you have paired with a PIN. Through Tailscale SSH from those same devices. Through the dashboard, after signing in with your email.
Not Cloud Window, when you run it yourself
We cannot. There is no support back door, no shared key and no remote management account. The computer, the dashboard and the credentials all live in your AWS account, and we hold none of them. Support, if you ask for it, means us reading logs you send us or talking you through a fix; it never means us connecting to your computer.
Not by default, when we host it
A hosted computer runs in an AWS account that we operate. That is what makes hosting possible at all, and we want to be precise about what it means. Our staff have no standing access to your computer, your desktop or your files. Access happens only in one situation: you ask us for support on a specific problem and agree to us looking. Then one person does that one task, and the access ends with it.
- No default access. Nobody at Cloud Window can open your computer as part of their normal work. There is no shared administrator login and no tool that shows us customer screens.
- Only with your permission, for a named task. We connect only when you ask us to and only for what you asked. We tell you what we did afterwards.
- Every action is recorded. Administrative commands reach the computer only through AWS Systems Manager, and AWS CloudTrail records each one with a timestamp and the identity that ran it. We keep those records and show you yours on request.
- Things we do not do. We do not view, record or capture your screen; the dashboard has no such function and we will not build one. We do not read your files. We do not use anything of yours to train anything.
- Things we cannot do. We cannot read your desktop password, see what travels inside your Tailscale network, or decrypt your disk outside the account it belongs to.
Encryption keeps everyone outside the account out. For the people inside it, what protects you is this policy and the records that prove we followed it. Before the hosted service accepts its first customer, these commitments will be written into its terms together with retention, export and deletion rules, so they are promises you can hold us to rather than a page we could edit.
Your desktop password
Your computer's Linux account is named cloud. The desktop signs in automatically when the machine boots, so the password is for unlocking the screen and for administrative actions inside the computer, not for getting the desktop on your screen.
On first boot the computer sets itself a long random password that only its own root account can read, so it is never sitting there with a default one. Then you choose your own from the dashboard. Here is the whole path your password takes:
- Your browser sends it over HTTPS to the dashboard's function in your AWS account. The function checks it is 12 to 128 printable characters and nothing else.
- The function writes it to an encrypted parameter in AWS Systems Manager, under a random name, with a three minute expiry. It is encrypted at rest with a key in the same account.
- The function tells the small helper inside your computer that a password is waiting, naming the parameter. It never sends the password itself in that message.
- The helper reads the parameter, applies the password with the standard Linux tool over a pipe, and deletes the parameter. If anything fails, the parameter is deleted anyway.
- The function never logs the request body, never stores the password in its state table, and never returns it to the browser. Only the parameter name and an expiry are recorded, and a cleanup routine removes stale ones.
If you launch the image yourself from the EC2 console with a key pair, that key also grants the cloud account administrative rights, the same as the default user on any cloud image, so you can set the desktop password yourself. Computers created through the dashboard attach no key pair and keep password-only administration.
What that means for you. After step four, your password exists in exactly one place: hashed, inside your computer, the way every Linux password is stored. We cannot read it, and neither can anyone with access to the dashboard's code or logs. If you forget it, nobody can recover it. You sign in to the dashboard and set a new one, which replaces the old one through the same path. If we host your computer, the same is true: we cannot read your password. With your permission during a support request we could reset it for you through the same path, which is why a reset is something you would always know about.
Your dashboard sign-in
The dashboard uses Amazon Cognito with a single permitted email address, the one configured when the dashboard was deployed. Sign-ups from any other address are rejected before an account is created. Your browser holds a short-lived token, valid for one hour, and asks you to sign in again after that. The browser never receives AWS credentials. Password reset for the dashboard itself works through a verification code sent to that email, which is why the email account you use matters: whoever controls it controls your dashboard.
The network
Your computer's firewall allows exactly one inbound port: the UDP port Tailscale uses for its encrypted tunnel. No SSH, no remote desktop and no Sunshine port is reachable from the internet. Everything else happens inside your Tailscale network:
- Tailscale is your account, on your devices, under Tailscale's terms. Cloud Window never joins your network, never provisions it for you, and never sees its membership. The dashboard only shows you the one-time link that Tailscale gives your computer so you can approve it into your network from your own browser.
- Traffic between your devices and your computer is encrypted end to end with WireGuard. Tailscale's coordination servers see that your devices exist and where they are; they do not see the contents.
- Moonlight devices must be paired once with a four digit PIN that you enter into your dashboard. You can see and remove paired devices there at any time.
- Tailscale SSH lets you open a terminal on your computer from a device in your network, authenticated by your Tailscale identity. Ordinary SSH keys also work, only over Tailscale.
What the dashboard can actually do
The function behind the dashboard has a fixed list of actions and no general shell: start, stop, create, report status, pair a Moonlight device, remove a pairing, set the desktop password, and save your stream settings. Requests to the computer are encoded messages carrying only validated values, never text that a shell interprets. The function's AWS permissions are limited to the one computer tagged as yours, and the computer's own AWS role can do nothing but talk to Systems Manager and read the password parameter meant for it.
The status the computer reports back is a short list of facts: whether the desktop is running, whether the hardware encoder is available, whether a stream is active, how long it has been running, how much data has gone out, and the names of paired devices. The function discards anything else in the reply.
What is measured, and what is not
To enforce the spending limits, two things are counted: running time, and outbound bytes as reported by AWS's network metric for the instance. To decide whether you are connected, the computer checks whether the video encoder has an active session. That is a number, not a picture. Nothing looks at what is on your screen, what you type, or what is in your files. When you run it yourself, all of these numbers stay in your account.
The image your computer boots from
The image is built from the official Omarchy installer onto a blank disk by a throwaway machine that has never held personal data. Every input, including the operating system installer, the GPU driver and the streaming software, is pinned to a specific version and checked against a known hash before it is used. Before the disk is turned into an image, every identity the build created is removed: SSH host keys, machine ID, shell history, the build user's key and password. A sealing step refuses to proceed if it finds an initialized system, a second user account, browser profile data, or stored keyring items on the disk. Two independent builds from the same inputs produced identical package lists, and the finished disk was searched file by file for anything personal before it was accepted.
On first boot in your account, the computer generates its own machine ID, hostname, SSH host keys, random initial password and streaming credentials. None of those exist in the image, so no two computers made from it share anything. The NVIDIA GPU driver is also not in the image: AWS licenses it to each AWS customer individually, so the first boot fetches the exact pinned version from AWS with your instance's own credentials, checks its hash, and installs it. Nothing of ours touches that download.
Encryption at rest
The computer's disk and every snapshot of it are encrypted with AWS's disk encryption, using a key held in the account the computer runs in. When you run it yourself, that is your key in your account. Stopping the computer keeps the disk; deleting the disk is a separate, explicit action.
Backups, export and deletion
There are no automatic backups. What you save on the computer is on one encrypted disk, and you are responsible for copying anything you cannot lose. You can copy files out over Tailscale at any time, and you can take an encrypted snapshot from the AWS console. To delete everything when you run it yourself, terminate the instance, delete the disk and any snapshots, and remove the small management stack; the setup guide lists the steps. For hosted computers, the terms will state how long a disk is kept after you cancel, how you export it, and the date it is deleted.
What we cannot promise
- Privacy from AWS and Tailscale. They are the infrastructure. AWS can see that a machine exists, what it costs and its network traffic volumes; Tailscale sees your devices' identities and addresses. Neither sees your screen or files, but both operate under their own terms and applicable law.
- Anonymity. A Cloud Window computer is tied to an AWS account and a Tailscale account, both of which know who you are.
- That software is perfect. Omarchy, Sunshine, Moonlight, Tailscale and the NVIDIA driver are all third party software with their own security histories, and Omarchy updates continuously. We pin versions in the image and test them, and we tell you what we shipped.
- That this is finished. Cloud Window is a developer preview. The image has passed its first boot and encoder tests on real GPU hardware and has been searched for personal data, but it has not yet been used by anyone outside the project.
Reporting a security issue
If you find something wrong, tell us privately before telling anyone else, and we will respond quickly and credit you if you want. Today the contact is a direct message to SeekingGradient on X. A dedicated security mailbox is being set up and will be listed here.
Sources you can check
Tailscale encryption, AWS Systems Manager logging, EBS encryption, Amazon Cognito, Sunshine, Moonlight.
Cloud Window accounts on the website
Signing in on the website is optional. It exists so that the computers you deploy appear on any of your devices without keeping a link. An account stores your email address and, for each computer you add, the public connection details of your own stack: its dashboard API address, its sign-in address and its client identifier. Those are the same details your stack publishes in its configuration file.
What an account cannot do: it holds no password, key or token for any computer, and it cannot start, stop, pair, or reach a computer. Every action still happens through your own stack in your own AWS account, after you sign in there. Removing a computer from your account list only forgets the pointer; the computer is untouched.