# Tools

Tools are the interfaces available to the candidate or learner inside the sandbox. You configure them in the `tools` section of `sandbox.yaml`.

The `name` field of each tool becomes the tab label the candidate sees. Name tools after what they connect to, not what they are — `cp` and `worker` are clearer tabs than `terminal1` and `terminal2`.

## Layout

The instructions tool always renders on the left as a fixed panel. All other tools appear as switchable tabs on the right. `ui.defaultTool` controls which tab opens first.

The candidate can collapse the instructions panel to give the active tool more space.

---

## Terminal

Opens a shell connection to a VM. The candidate sees a prompt in the form `user@hostname:~$`, where `user` is `targetUser` and `hostname` is `targetHost`. The connection reconnects automatically if it drops.

```
- name: cp
  terminal:
    version: v1
    targetHost: cp
    targetUser: tux
```

For multi-VM sandboxes, add one terminal per VM. Each becomes its own tab.

```
- name: cp
  terminal:
    version: v1
    targetHost: cp
    targetUser: tux
- name: worker
  terminal:
    version: v1
    targetHost: worker
    targetUser: tux
```

---

## IDE

Opens VS Code for the Web connected to a VM via SSHFS. The file explorer shows the VM's filesystem rooted at `workspaceDir`. The candidate can create, edit, and save files directly on the VM.

```
- name: cp-editor
  ide:
    version: v1
    targetHost: cp
    targetUser: tux
    workspaceDir: /home/tux
```

`workspaceDir` defaults to the user's home directory if omitted.

---

## Browser

Opens a browser pointed at a URL running inside the sandbox. Use the VM `name` as the hostname in `startingURL` — the platform routes it to the correct VM.

```
- name: browser
  browser:
    version: v1
    startingURL: "http://cp:8080"
    kioskMode: false
```

Set `kioskMode: true` to hide the browser toolbar and show only the web content.

---

## Instructions

Renders a markdown file as a MkDocs site in the left panel. This is what the candidate reads. Code blocks get copy-to-clipboard buttons automatically. MkDocs admonitions render with full styling.

```
- name: instructions
  instructions:
    version: v1
    sourcePath: task.en.md
```

`sourcePath` is relative to the sandbox root. For labs, this is typically `instructions.md`.

Preview the instructions locally at any time:

```
sandbox instructions
```
