# 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.
/projects/{slug}/workspace
Minimal role: Member
Read workspace
State, quota usage, idle countdown, tunnels and open moderation flags for your workspace on this project.
/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.
/projects/{slug}/workspace/stop
Minimal role: Member
Stop workspace
Stop the container. Files and tunnels are kept.
/projects/{slug}/workspace/delete
Minimal role: Member
Delete workspace
Remove the workspace and its tunnels. An administrator can restore it.
/projects/{slug}/workspace/tunnels
Minimal role: Member
List tunnels
Every public tunnel published by this workspace.
/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.
/projects/{slug}/workspace/tunnels/{uid}/delete
Minimal role: Member
Delete tunnel
Remove a tunnel. The public URL stops serving immediately.