Back to home

Security model

Last updated: November 2, 2026

Dev Server Deck lets you control a machine from a browser or a phone. That is powerful, so this page says exactly how a request travels, what we can see on the way, and what your machine refuses on its own. If something here and the product ever disagree, tell us at info@devserverdeck.com.

1. How a request travels

The Local Agent on your machine opens an outgoing connection to our relay. Your browser or phone talks to our servers over TLS, and the relay passes each request to the Agent over that connection. Nothing connects in to your machine.

2. What is end-to-end encrypted

Studio only: the AI chat, the file editor and approvals. Your device and your Agent agree on a key (ECDH, P-256) and encrypt with AES-GCM; the Agent signs the handshake with its own identity key. The relay forwards ciphertext and can neither read nor change it. Each browser and phone keeps its own copy of the machine's identity key after first use, because the copy in our database is written by the relay. The first connection to a machine is trusted on first use, so compare the short fingerprint shown in Account with the one the Agent prints on your PC (--studio-fingerprint).

3. What is not end-to-end encrypted

Everything else: the project list and status, starting and stopping, logs, scripts and the terminal, .env files, Git, file browsing and downloads, backups, and restart or shutdown. These pass through our relay as readable data over TLS, because the relay has to read them to enforce team roles. Whoever controls the relay could read that traffic and send your Agent the same requests you can send. This is why the machine decides.

4. What your machine refuses (Agent 2.15.57 and later)

Four kinds of remote request are refused by the Agent itself until someone at that PC turns them on. All four are off by default.

  • files: browse and download files outside your projects.
  • commands: run scripts and the terminal, run git commands, create or edit a project, edit custom tasks, skills and auto-approval.
  • secrets: read or change .env, read or restore backups, download a project's structure, set AI credentials, change where Git sends your source, and the cloud copy of your project list.
  • machine: restart, shut down, kill a process, control Docker containers.

Starting and stopping the projects you already set up, status, logs and tunnels need no switch. Backups written to a folder on the PC itself need none either. A switch is changed in the Agent's tray menu, or on a headless Agent with --allow=commands:on (and :off). The state is a file signed with a key kept in your operating system's credential store: an edited file, or one copied from another PC, reads as everything off. There is no message that the web, the app or our servers can send to change a switch.

Main projects folder. You can name one folder on the PC (tray menu, or --projects-folder=<path>). Add Project can then browse and create folders inside that folder, and only there, even while files is off. Downloads still need files. Links inside the folder that point elsewhere do not open the outside.

Every route the Agent has is listed with the switch it needs; a route that is not listed needs commands, and a test fails if a route is added without being listed. Account shows each machine's switches and what was refused.

5. If our relay were compromised

Studio content would stay unreadable and every switch that is off would stay off. An attacker could still do what needs no switch (start and stop your configured projects, read status and logs, open tunnels) and anything for which you turned a switch on. Leave switches off unless you use the feature. When a switch is on, trusting the relay and your account is part of that choice, and code running as you on that PC could also reach the switch file and its key.

6. The Agent's own local server

From Agent 2.15.56 the small server the Agent runs on 127.0.0.1 refuses any request that does not carry a secret made when the Agent starts, and any request whose Host is not the loopback name, so a web page open on the same PC cannot reach it. Earlier versions did not do this; please update.

7. Updates

The Agent updates itself from a fixed address on GitHub when you confirm in the dashboard. Windows builds are code-signed. Linux and macOS builds are not signed yet, and the updater does not check a signature or checksum of the download yet; we plan to add both. Until then, the protection is the fixed address, the account that publishes there, and the update helper that keeps the previous version and rolls back if the new one does not stay up.

8. What we do not claim

  • We do not claim everything is end-to-end encrypted. Only Studio is.
  • The Agent is closed source today and has not had an outside audit.
  • A person or program that can already run code as you on your PC is outside this model.

9. Reporting a problem

Write to info@devserverdeck.com. We read every report and say plainly what we find; the Agent's release notes list security fixes.