Concepts

Workspaces

What a workspace is, how it's named, and where it lives.

Two Kinds#

KindCreated byContents
Scratchdesk newAn empty directory
Repositorydesk new REPOSITORYA Git clone

Both use the same commands afterwards. desk list groups repository workspaces by canonical source, such as github.com/octocat/hello-world, and scratch workspaces under playgrounds.

Names#

Every new workspace gets a random two-word name, such as drifting-tundra or misty-ember. No task name is required. When a useful name emerges, run desk rename local-test for the current workspace, or desk rename misty local-test for another one.

Commands accept a unique prefix: desk switch dri works as long as no other workspace starts with dri. Leave the name out entirely and desk uses the workspace containing your current directory, even from deep inside it.

Where Workspaces Live#

Output

~/.desk/workspaces/
├── drifting-tundra/
└── misty-ember/          # a clone, with its own .git

These are plain directories. A repository workspace's source is its Git origin; activity and lifecycle metadata live outside project files in ~/.desk/state/. Reuse preferences live in ~/.desk/preferences.json. Use desk's commands to keep that state consistent. See Configuration to use a different data root.

Lifetime#

Use desk finish to mark a workspace disposable without removing it immediately. Scratch workspaces without a remote need this explicit signal before cleanup can consider them.

desk cleanup previews managed workspaces inactive for at least 72 hours, with no local-only work or detectable running processes, then asks before removal. desk rm removes one explicitly after confirmation, even if it has local-only work.

Both move workspaces to garbage for 72 hours from removal. Every desk invocation silently collects expired garbage; there is no daemon. See cleanup and retention for safety checks and activity limits.