Get started
Computers: one desk per machine
Every computer on your account is its own place in Deska, with its own projects, panels, terminals, tasks and notes. Switch to it and the whole desk changes, and it looks the same from your laptop, from another computer, and from your phone.
Clearer computer waits and recovery
Computer waits show readable stage states and a separate Total elapsed timer. Sign in opens account sign-in and resumes the wake afterward; Try again retries temporary failures. Switch computer opens Your computers from waiting, failed, sleeping and offline states. A floating card beneath the computer name offers a large Wake computer button while it sleeps. The card shows waking progress and recovery without moving your panels. The arrival screen respects reduced motion and keyboard focus.
More readable computer cards
Your computers now uses higher-contrast text and actions that are visible before hover. Open computer opens its desk; Remote access off and Enable access clearly identify the state and action. Cards size to their content.
Manage agents and billing
In Your computers, every computer card has Tools & accounts, which opens that computer’s agents and sign-ins without walking over to it. The Agents row of the Manage computers card opens Settings, Agents. Billing and usage opens Account in Settings. Deska Cloud shows your cloud computers, with a retry action when account details cannot load and sign-in when your session expires.
A computer is a place
Deska can work on more than the machine in front of you: another computer you own with Deska installed, or a Deska Cloud box we run for you. Each one is a place, not a setting. Switching to it swaps the whole desk: the project list, the project you land on, its canvas, its panels, its tasks and its notes.
Nothing is torn down when you switch. Terminals on this machine keep running here; terminals on the box were always running there. You changed which desk you are looking at, not what is executing.
Use the computer switcher in the crumb, or Cmd/Ctrl+Alt+1..9 to jump to the Nth machine, the same gesture as Cmd/Ctrl+1..9 for projects, with one more modifier. Cmd/Ctrl+Alt+→ bounces to the machine you were on before.
WSL on Windows: each Linux distro is a computer
From the next desktop update, on Windows, every Linux distro you have in WSL (the Windows Subsystem for Linux) is a computer of its own in Deska: it appears in the computer switcher, in Your computers and in Settings, Agents with its name, such as Ubuntu 24.04, marked WSL. Switch to it and the desk is that distro’s. Projects are its folders, terminals are its Linux shells opened in the project, the explorer, the editor and Source Control read its files and run its git, and tasks run the agents installed and signed in inside the distro, not the Windows ones.
It is not on your account. It needs no sign-in and no plan, works offline, and does not count toward the computers a plan includes. Your phone does not see it, because only this PC can reach its own Linux.
The first time you switch to a distro, Deska sets itself up inside it and the desk says each step: Starting Ubuntu 24.04, Downloading Node.js with the megabytes counted (about 54 MB, once), then Installing Deska. It takes a few seconds, and later starts reuse what is installed. Nothing listens on the network: Deska talks to the distro through WSL itself, and the connection is end-to-end encrypted like every other computer’s.
A folder you pick under Linux in the Windows folder dialog, such as \\wsl.localhost\Ubuntu\home\you\app, opens on that distro’s desk under its Linux path, from every place that opens a folder. Opened from Windows it would be read over a network share, with no change notifications and with the Windows git and agents working on Linux files. Reveal in File Explorer on a distro’s file opens it in File Explorer. Browser panels work as they do on Windows, because WSL forwards a dev server’s localhost port.
Its terminals behave as the ones on Windows do. Closing one ends it. When Deska opens again, each one comes back on the distro in the folder it was in, with what it showed, and an agent that was running in it (Claude Code, Codex, OpenCode, Cursor and the others) picks its conversation back up. Quitting Deska ends the terminals and agents it started in the distro, and closing a project on the desk closes it in the distro.
If the distro stops while you work (wsl --shutdown, or WSL ends it), its terminals and its desk say so, and Deska leaves it stopped. A key or a click on its desk, or Start it, starts it again, and every terminal comes back where it was.
Source Control works there as on Windows: Generate drafts the commit message, Commit & Push and Commit, Push & Pull request run with the distro’s own git and GitHub CLI, the branch shows its pull request, and Amend last works. Checks shows the pull request and its check runs from the distro’s GitHub CLI, and merges and comments there. The project’s branch in the title bar and the marks on its worktrees are read from the distro. The usage lip under Dex shows the plans signed in inside the distro.
A task running there shows its checklist, its subagents, what is up next and the plan it proposed. Its conversation shows each tool the agent used with its result, and each turn opens to the files it changed. Changes reviews the task as on Windows: by turn, the whole task, the branch or what is not committed, with comments that go with your next message. Revert to before this turn takes the files and the agent’s conversation back to before that turn, and the pencil on a message edits it and runs it again; the distro’s own Deska does both. Its token counts show too. Each terminal says what runs in it: the agent’s badge, a notice when the agent there is waiting for you, and a dev server’s port you can open in a browser. Dex works on its desk as on any other: it reads the distro’s files and panels, types into its terminals and opens its folders as projects. Community panels can go on its desk too, and the token activity on your profile counts the agents in it.
tar: Ubuntu, Debian, Fedora, openSUSE and most others. Alpine is not supported. The VMs Docker Desktop, Rancher Desktop and Podman run for themselves are not listed. When something stops a distro from starting, its desk says what and offers Try again.Projects belong to the machine they are on
A folder only exists on one computer, so a project does too. The rail lists the projects of the machine you are standing on and nothing else, so you will not find a box’s folder in your laptop’s list, because opening it there would point at a path that does not exist.
Your phone and app.deska.dev get that list from each machine, so a computer’s page shows its own projects and never another machine’s. The ones you hid in its rail wait under Hidden at the end of the list, one tap away, because they are still open there.
To begin a project on a machine, use the New workspace card on the desktop or Start from on the phone. It offers three doors, and the machine answers all three: open a folder it already has, clone one of the repositories its own GitHub login can reach, or clone from a link you paste. You never have to know that computer’s paths, and the machine decides where a clone lands. On a desk with nothing open, the desktop lists the same three under the heading Open a project; on this computer a Recent projects list follows them, and another computer shows only the three.
When a door cannot answer, it says why and offers something to press. A box that is asleep says so and offers to wake it, then lists your repositories once it is up. A machine that is not signed in to GitHub offers the sign-in, which runs on that computer so the credential never leaves it. A machine without the GitHub CLI says that instead of offering a sign-in that cannot run, and points at the git link door, which clones without it. Under every one of these the other ways to start a project stay on screen.
Inside the folder door, search finds projects by name and browsing is always there under it: the machine lists its own folders level by level, so a folder the search does not surface is still one tap away. A brand-new computer with nothing on it says so and offers the ways out in place: clone a repository, clone from a link, or New folder, which makes an empty project folder (with a fresh git repository, where the machine allows one) right where you are standing and opens it.
The same desk on every screen
What is open on a computer belongs to that computer. If five terminals are running on your cloud box, you see the same five on your laptop, the same five on a second computer that has never opened it before, and the same five on your phone. Open one and you join the terminal that is already running; you do not start a sixth.
Panels Deska cannot yet show on a phone are still listed by name, so the two screens never disagree about how many things are open on one machine. Renaming a panel travels to the machine, so every screen picks up the new name.
Tasks and notes are the machine’s too
A task belongs to the computer that ran it, because Dex is the agent CLI signed in on that machine. The Inbox shows one machine’s work, the one you are standing on, never a merge of two, which would be a list where half the rows point at folders that are not there.
Starting a task works the same way. A new task on a project that lives on another computer offers that computer’s agents, with the models they list there and the model each one would start on. An agent that is not installed or not signed in on that computer says so beside Start, and Manage agents and the + after the agents open that computer’s accounts, not your laptop’s settings. On the phone, an agent that is not signed in there can still be chosen: it says Not signed in with its own Sign in, and Send signs it in first, then starts the task with what you typed. Changing the model or permission mode of a task already running there changes it on that computer too.
Notes follow the same rule. A note is a markdown file, and it lives on the computer you wrote it on. Walk to another machine and the Notes page is that machine’s.
A computer’s page on your phone
A computer’s page on the phone and app.deska.dev opens on a grid of its places, always in the same order: Tasks, Panels, Agents, GitHub, Skills, MCP servers and Usage left. Each tile opens what it names. Tasks opens the Inbox for that computer, Panels lists what is open there, Skills opens the Store with that computer chosen, and Usage left shows the account with the least left with its bar.
While a Deska Cloud box wakes up, a card with Dex in his cloud shows the wake: asking, starting, connecting, one bar each, and Dex sits up as the box does. A desktop that is off shows Dex asleep at his laptop and when it was last seen. The tiles stay in place meanwhile with what they said on your last visit, dimmed; press one and it opens as soon as the computer is there.
MCP servers lists the MCP servers each agent on that computer has set up, such as Claude Code’s and Codex’s, with their state: connected, needs a sign-in, or could not connect. A server that needs a sign-in finishes it on the computer itself, from its agent. Deska only reads the names and states; commands, addresses and tokens never leave the computer.
The accounts on a computer
A Deska Cloud box arrives with Claude Code, Codex, OpenCode, Cursor, and Antigravity and the GitHub CLI installed. Every sign-in runs on that computer: your phone or desktop only opens the provider’s page, and the sign-in stays on the box. No sign-in asks you to type a command.
On the phone and app.deska.dev, a computer’s page opens on a grid of its places: Tasks, Panels, Agents, GitHub, Skills, MCP servers and, across the last row, Usage left. Each tile says its state in words, such as 2 working, 1 waiting on you or 2 ready, Cursor not signed in, and an amber dot marks what is left to connect. A desktop shows no Agents or GitHub tile: its agents are signed in on the desktop itself. When a sign-in expired, a card above the grid says which agent needs you and what stops until then, with Sign in again; on a computer with nothing signed in yet, it offers Set up agents. The Agents tile leads to Agents: one screen for everything it signs in to. Every account is a row with its state: each agent, and any extra account such as Codex 2. A signed-in account names who it is, such as the email it signed in with, covered until you show it: tap the account, then the address, to read it whole. An account that is not signed in reads Not signed in and carries its own Sign in; one whose sign-in stopped working reads Sign in expired and offers Sign in again. Under the accounts, Defaults shows New tasks start with and Dex answers with, marked (automatic) when nobody chose, and Tools holds GitHub. Once something is signed in, Add another account appears at the end of the list. Tap an account for its model, its Enabled switch, Sign out and, under Advanced, Test this account. The choices are saved on that computer, not on the device you used.
What each sign-in on a Deska Cloud box asks of you:
- Codex and GitHub show a code. Opening the page copies it, so the page only asks you to paste it, and the screen updates by itself. If ChatGPT refuses Codex’s code, turn on device code authorization for Codex in ChatGPT, under Settings, Security and login.
- Cursor has no code: open its link, finish on cursor.com, and the screen updates by itself.
- Claude Code and Antigravity end on a code you bring back. Sign in on the page (Antigravity signs in with Google), copy the code it shows and paste it in Deska; on the phone, Paste fills it in with one tap.
- OpenCode needs no account. It reads Ready, free models, and while nothing else is signed in it is what new tasks and Dex start with. To use a plan you already pay for, Connect a provider in its sheet connects ChatGPT (Plus or Pro) or GitHub Copilot, each with a code. The same sheet also takes an API key for a provider (OpenCode Zen and Go, Anthropic, OpenAI, OpenRouter, Google and others): it is saved on that computer for that account, and it is only offered over an end-to-end encrypted connection, so the relay never sees the key. Until the app and the computer are both updated, add keys on the computer itself. OpenCode does not check a key when it saves it; a wrong key shows up on the first task.
Extra accounts sign in the same way. A box that has not been updated for this says it needs an update instead of offering the sign-in.
One signed-in coding agent is enough to run tasks and Dex on that computer, and on a Deska Cloud box OpenCode’s free models work before anything is signed in. GitHub is optional; signing in lets the agent access your repositories and push your work. On the phone’s Home and Computers, a computer where only those free models can run says Free models only, quietly; No agent signed in yet, in amber, is kept for a computer where nothing can start.
The agents themselves are set up on that computer too. On the desktop, the other computer’s Tools & accounts opens with an Agents section showing the same choices as Settings, Agents: Dex answers with and New tasks use, then a card for each connected agent with an Enabled switch, its account button (Install, Connect account or Change account), its model (Automatic, which follows the latest model of the family, Provider default or a specific model) and separate Check Dex and Check tasks buttons. Add agent adds another provider or a second account of the same agent: turn on Separate account for one with its own sign-in. Every agent can keep separate accounts there, and the computer gives its reason when it cannot. Each extra account has its own Sign out and Remove. On a Deska Cloud box, every sign-in there, extra accounts included, runs on the box the same way as from the phone, with no terminal.
On one of your own computers, Install and a sign-in started from the phone or from another desktop open a terminal there with the command already typed, so a project must be open on it.
Antigravity still signs out only from its own terminal: to sign the computer’s own Antigravity out, run /logout inside the native agy terminal on that computer. A separate Antigravity account signs out with its own Sign out.
Each agent’s built-in account is the computer’s own sign-in, the one its CLI uses anywhere on that computer. Extra accounts of the same agent keep their own sign-in apart and never change it. See Separate accounts.
When a computer is asleep
A Deska Cloud box suspends itself when nobody is using it, which is what keeps it cheap. Its desk is not blank while it sleeps: the projects and panels are still there to look at, because they are on its disk. It is read-only: nothing new can start until it wakes.
It sleeps when nothing is running on it, not when nobody is looking. A task keeps a machine awake for as long as it runs, with your laptop closed and nothing connected to it: an agent mid-task, a build printing to a terminal, anything actually working. What does not keep it awake is an open window, so a box whose desk you have been reading for half an hour goes to sleep, and that is deliberate.
It comes back when you reach for it. Clicking or typing on a sleeping machine’s desk wakes it, the same way touching any computer you own does. The line at the top of the desk says so, and still carries a Wake it press for when you would rather be explicit.
Opening Deska turns it on. Your cloud computer starts while you are still reading your local desk, so walking over to it is instant instead of a cold boot. If you never walk over, it goes back to sleep on its own. You can turn this off in Settings → Deska Cloud → Wake my cloud computer.
Entering the room turns the lights on. Switching to a sleeping Deska Cloud box wakes it by itself, no extra press. While it boots you land on the machine’s own desk, which shows the wake as it happens: Requesting wake, then Starting your computer, then Connecting to it, with the seconds counted underneath. Each step moves when the machine actually gets there, never on a timer. Nothing about the wait is blocking: you can switch away and come back, and the wake keeps going. If it takes over a minute the screen says Taking longer than usual; if the machine never comes up, it says so in words, marks the step it stopped on and offers Try again. Cycling through computers with the keyboard does not wake the boxes you pass; only staying on one does.
A box with projects on it keeps its desk while it sleeps, with a line at the top that says why nothing new can start and carries the same wake. Waking takes a few seconds while the machine boots and registers; Deska keeps checking until it reports itself online.
You can wake it from anywhere it appears: the desktop, the phone, or the Computers section of your account page, which lists it beside your other computers and says whether it is awake.
A machine that is simply offline says that instead, and says plainly that its work is still there when it comes back. See Remote access for reaching your computers from the web and the phone.