# Dev Workspaces A workspace is a browser editor attached to one of your projects. It runs your project files, a terminal, and preinstalled Python, Rust, Nim and Swift toolchains. `sudo` and `apt install` work with no extra setup; ports below 1024 cannot bind, so use a high port and publish it through a tunnel. The editor opens with a **DevPlace Code** terminal already running the `dpc` coding agent and a plain shell beside it, and it trusts every folder, so nothing opens in Restricted Mode. Its appearance and boot behaviour are your own preferences, readable and writable through the two `/workspace/editor` endpoints below and explained on [the workspace editor page](/docs/workspace-editor.html). Editor preferences apply on the next workspace start. A **tunnel** publishes one port from inside your container on a public HTTPS hostname of the form `<port>-<name>.tunnel.pravda.education`. **Tunnel URLs are public and unauthenticated** - anyone with the link can reach whatever you are serving. Forwarding a port in the editor's **Ports** view creates the tunnel for you through the same endpoint; un-forwarding it does not remove the tunnel. Workspaces are bounded: a count limit per user, a disk quota, an egress quota, and a tunnel limit. An idle workspace is warned about, then stopped, then warned again, then removed. Every warning arrives as a `workspace` notification and states exactly what happens next and when.
GET /projects/{slug}/workspace Minimal role: Member

Read workspace

State, quota usage, idle countdown, tunnels and open moderation flags for your workspace on this project.

POST /projects/{slug}/workspace Minimal role: Member

Open or resume workspace

Create the workspace if you have none for this project, otherwise resume it. Idempotent. Refused when you are at your workspace limit, over disk quota, or suspended.

POST /projects/{slug}/workspace/stop Minimal role: Member

Stop workspace

Stop the container. Files and tunnels are kept.

POST /projects/{slug}/workspace/delete Minimal role: Member

Delete workspace

Remove the workspace and its tunnels. An administrator can restore it.

GET /projects/{slug}/workspace/editor Minimal role: Member

Read editor profile

The resolved DevPlace editor profile for this workspace: theme, layout, panel preset, font sizes, zoom, boot terminals, how the editor opens, the container size, and where each value comes from.

POST /projects/{slug}/workspace/editor Minimal role: Member

Set editor preferences

Change your own editor preferences. Only the fields you send are changed; within those, an empty string or zero means inherit the site default, and `reset` drops every preference. Applies on the next workspace start, and the response says whether a restart is needed.

GET /projects/{slug}/workspace/tunnels Minimal role: Member

List tunnels

Every public tunnel published by this workspace.

POST /projects/{slug}/workspace/tunnels Minimal role: Member

Create tunnel

Publish a container port on a public HTTPS hostname. The URL is public and unauthenticated. Refused past the tunnel limit. The certificate is ordered right away, so the hostname answers plain HTTP for a few seconds before it serves HTTPS. Forwarding a port in the editor calls this for you.

POST /projects/{slug}/workspace/tunnels/{uid}/delete Minimal role: Member

Delete tunnel

Remove a tunnel. The public URL stops serving immediately.