# Dev Workspaces A workspace is a browser VS Code environment 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. 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. 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/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.

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

Delete tunnel

Remove a tunnel. The public URL stops serving immediately.