---
title: Playground
description: Write and run TypeScript against the Daytona SDK in your browser.
---
Daytona provides an interactive environment ("playground") in the [Daytona Dashboard ↗](https://app.daytona.com/dashboard) for writing TypeScript against the [TypeScript SDK](/docs/v2/typescript-sdk) and running it in your browser. It bundles the SDK and provides a code editor with type checking and completions, an examples browser, and a console for program output. You do not install anything locally or handle an API key.
## Use cases
The playground is used to run TypeScript SDK code without a local setup.
- **SDK trials**: SDK calls run in a web worker inside the browser. The playground provides the API key and endpoints, so there is nothing to install or configure.
- **Learning the SDK**: the editor checks types and completes names from the SDK's type definitions. A new user sees the available methods and their parameters while writing the code.
- **Sandbox lifecycle**: a program creates, lists, and deletes sandboxes and prints the state of each. The output shows how a sandbox moves between states.
- **Commands and files**: a program runs a shell command in a sandbox, writes and reads files, and prints the results to the console.
- **Image builds**: a program builds an image from an inline Dockerfile and creates a sandbox from it. The Dockerfile is checked before it moves into an application.
- **Shared data between sandboxes**: a program attaches one volume to two sandboxes, writes a file in one, and reads it in the other.
- **Operation sequences**: a sequence of sandbox operations runs against the Daytona API and is checked before it goes into an application.
- **Starting points**: a curated example runs as it is, then changes, then moves into your own application. The examples cover the sandbox lifecycle, commands, files, images, and volumes.
## Access from Dashboard
1. Go to [Daytona Dashboard ↗](https://app.daytona.com/dashboard)
2. Click in the sidebar to access the playground
## Writing code
Programs are plain TypeScript that import the Daytona SDK. Top-level await is supported, and the editor provides type checking and completions from the SDK's type definitions.
```typescript
import { Daytona } from '@daytona/sdk'
// The playground provides the API key and endpoints for you — no config needed.
const daytona = new Daytona()
async function main() {
console.log('Creating a sandbox…')
const sandbox = await daytona.v2.create()
console.log('Sandbox ready:', sandbox.id, '(', sandbox.state, ')')
console.log('Cleaning up…')
await daytona.v2.delete(sandbox)
console.log('Done.')
}
await main()
```
## Running code
1. Go to [Daytona Playground ↗](https://app.daytona.com/dashboard/playground) to access the playground.
2. Click to compile the program and execute it in a web worker inside your browser.
3. Click to terminate a run in progress. Stopping a run does not clean up resources it already created. Any sandbox created mid-run may still exist — delete it if needed.
## Examples
| Example | Description |
| --------------------------- | ---------------------------------------------------------------------------------------- |
| **Hello sandbox** | Create a sandbox, print its id and state, then delete it. |
| **Lifecycle** | Create, list and delete sandboxes; inspect state transitions. |
| **Run a command** | Execute a shell command inside a sandbox and read its output. |
| **File operations** | Write, list and read files in a sandbox via the toolbox file system API. |
| **Snapshots** | Create an image snapshot alias and launch a sandbox from it. |
| **Build from a Dockerfile** | Build an image snapshot from an inline Dockerfile, then launch a sandbox from it. |
| **Volumes** | Attach a persistent volume to two sandboxes: write a file in one, read it in the other. |
For more information on the operations used in the examples, see [sandboxes](/docs/v2/sandboxes), [process execution](/docs/v2/process-execution), [code execution](/docs/v2/code-execution), [file system operations](/docs/v2/file-system-operations), [snapshots](/docs/v2/snapshots), and [volumes](/docs/v2/volumes).