---
title: "Controller"
description: "The show-caller's console: build the running order and drive the event."
---

# Controller

The Controller is the show-caller's console: one authenticated screen where you build
the running order and drive the event. Everything else — the stage display, the public
agenda, the moderator's phone — is a view of what you do here.

It is a **desktop console**. Below its minimum width the page scrolls sideways rather
than reflowing, so drive the show from a laptop or larger. For a phone or tablet, use
the [Moderator](moderator.md) screen; for a second operator at the back of the room,
use the Operator console (see [Share links](share-links.md#operator-console)).

## Create a room

Rooms live on your dashboard at `/dashboard`.

1. Click **+ New Room**.
2. Enter a **Room title** — this is required, and it appears on the Agenda as the
   event name.
3. Pick a **Timezone**. This is the zone of record: the Controller's wall clock,
   scheduled start times, and drift are all read in it, regardless of where your
   laptop thinks it is. There are 11 fixed choices (UTC, five European, four US,
   Tokyo, Singapore, Sydney) and no search box. **It defaults to UTC** — change it,
   or your scheduled times will be an hour or several out.
4. Optionally pick a show under **Start from a saved show** to seed the new room's rundown immediately, instead of starting blank — see [Saved shows](saved-shows.md).
5. Click **Create**. You land in the Controller for the new room.

On the **free plan you can have one active room.** Creating a second offers an upgrade
instead. Archiving a room frees the slot.

### Managing rooms

Each dashboard card shows the room's phase, current session, countdown, and three small
keys — **V**, **A**, **M** — indicating whether the Viewer, Agenda, and Moderator
links are shared. **Enter →** opens the Controller.

Use the **Filter rooms** box to search titles, timezones, and the current session, and the
**All** / **On air** toggle to show only running rooms.

The **Tamora** wordmark at the left of the dashboard header is a link to the site
root. While you are signed in the root sends you straight back to `/dashboard`, so from
here the wordmark is effectively a reload of the page you are already on. It does not
sign you out.

> **"Delete" archives, it does not delete.** The room and its share links disappear
> from your dashboard, but the rundown is kept. **There is no way to restore it
> yourself** — you would need support to bring it back. Treat it as one-way.

### Signing out

Click **Sign out**, in the dashboard header's right-hand link group after **Help** —
separated from **+ New Room** by a divider so a misclick during a live event doesn't
end the session instead — to end your session. It returns you to the login page, and
— unlike closing the tab — ends the session everywhere you are signed in, not just
this browser. Use it on a shared front-of-house machine so the next person does not
land on your rooms.

## The console at a glance

| Area                        | What it is                                                                     |
| --------------------------- | ------------------------------------------------------------------------------ |
| Header                      | Room title, timezone, wall clock, phase badge, **Import CSV**, **Saved Shows** |
| Left — **Rundown**          | Your running order; add, edit, reorder, delete                                 |
| Centre — display well       | The big countdown and its timings                                              |
| Below the well              | Run-of-show ribbon                                                             |
| Bottom — transport bar      | Start / pause / reset, time nudges, and the three switches                     |
| Right — **Outputs**         | Share links — see [Share links](share-links.md)                                |
| Right — **Messages**        | Text pushed to the stage                                                       |
| Right — **Viewer output**   | Live miniature of what the audience sees                                       |
| Right — **Up next**         | What follows, and controls to change it                                        |
| Right — **Schedule health** | Whether you are ahead or behind                                                |

The header's phase badge reads `READY`, `ON AIR`, or `PAUSED`. Note that it stays
`ON AIR` through the warning window and into overtime even though the countdown itself
turns red and every other surface has moved on — read the well, not the badge, to know
you are over.

Two ways out of the console sit at the far left of the header: the **Tamora**
wordmark, which links to the site root and — because the root redirects a signed-in
user — lands you on the dashboard, and the **Rooms /** breadcrumb next to it, which
goes to the dashboard directly. Both do the same thing from here, and both are one
unguarded click from the room title.

> **Leaving the Controller does not stop the show.** The timer keeps running for
> everyone watching the Viewer, Agenda, and Moderator screens; reopening the room puts
> you back where it is. But a **scheduled session only fires from an open Controller or
> Operator window** (see [Scheduling a session on the clock](#scheduling-a-session-on-the-clock)),
> so if this was the only window open, an automatic start will not happen while you
> are away.

## Build your rundown

Sessions are the items in your running order — talks, panels, breaks.

Click **+ Add Timer** (or **+ Add Break**) at the foot of the rundown. The form has:

| Field                         | Required? | Notes                                                       |
| ----------------------------- | --------- | ----------------------------------------------------------- |
| **Title**                     | No        | Blank shows as `Untitled` everywhere. Fill it in.           |
| **Speaker**                   | No        | Shown on the Viewer, Agenda, and Moderator                  |
| **Duration (mm:ss)**          | **Yes**   | Defaults to `5:00`. See the format warning below.           |
| **Mode**                      | —         | `Countdown`, `Count-up`, or `Time of day`                   |
| **Notes**                     | No        | Internal only — not shown on any public surface             |
| **Pause before this session** | No        | Auto-play stops here and waits for you to start it manually |
| **This is a break**           | No        | Staff-only — hidden from the public Agenda                  |

> **Duration format — the one thing to get right.** The field accepts `mm:ss`
> (`45:00` is forty-five minutes) or a plain number of seconds (`2700`). It does
> **not** accept `h:mm:ss`. Typing `1:30:00` for "an hour and a half" saves as
> **1 second** with no error. For long sessions use minutes: `90:00`.

Durations are clamped server-side to between 1 second and 24 hours.

### Scheduling a session on the clock

Choose **Mode → Time of day** and a **Start on the clock** panel appears, labelled with
the room's timezone. Set a **Date** and **Start time**. **End time** is a convenience:
it follows the duration by default, and typing into it sets the duration instead.

Tick **Start this session automatically at the start time** to have it fire on its own. Two
things to know, both of which are otherwise learned the hard way:

- It fires **only from an open Controller or Operator window.** A room with nothing
  open starts nothing. Do not rely on it for an unattended start.
- If another session is still inside its own time when the moment arrives, the scheduled
  session **waits** rather than cutting the live one off.

Scheduled sessions are also what make **DRIFT** and **Schedule health** work. If no session in
the room has a time-of-day start, both read `—` and "no planned schedule".

### Reordering

Drag the `⠿` handle on any row. The new order saves immediately and rolls back if it
fails. There are no up/down buttons, and dragging is **mouse or touch only** — it is
not reachable by keyboard.

To change only what plays next, use **Choose a different session…** in the **Up next**
panel instead of dragging.

### Editing and deleting

Each row has **Edit** and **Del**. Deleting asks for confirmation.

Clicking a row's body behaves differently depending on whether you are live:

- **Stopped** — jumps to that session and selects it.
- **Running or paused** — opens the editor instead, so you cannot knock the show off
  air with a stray click. A banner in the panel reminds you: _"Live — click a session to
  edit it. Use Up Next to change what plays next."_

## Run the show

### The transport bar

| Control                 | What it does                                                        |
| ----------------------- | ------------------------------------------------------------------- |
| `⏮` / `⏭`               | Previous / next session — **and stops playback, resetting elapsed** |
| `▶ Start`               | Starts the selected session                                         |
| `❚❚ Pause` / `▶ Resume` | Replaces Start while running / paused                               |
| `■ Reset`               | Back to stopped with elapsed at zero                                |
| `−30s` / `+30s`         | Removes / adds 30 seconds of remaining time                         |
| **Blackout** switch     | Blacks out the Viewer                                               |
| **Auto** switch         | Auto-advance at overtime                                            |
| **Duration** switch     | Shows or hides durations on the public Agenda                       |

Three things that surprise people:

- **There is no Stop button** — the control is `■ Reset`, and it zeroes the clock.
- **`⏮` and `⏭` reset the clock.** Skipping forward and then back does not restore
  the time already elapsed. There is no undo.
- **`+30s` / `−30s` do nothing while stopped.** They only affect a running or paused
  session. The nudge is fixed at 30 seconds; there is no ±1 minute.
- **There are no keyboard shortcuts.** Every transport action is a click.

### The display well

The centre pane shows the phase (`READY`, `REMAINING`, `WARNING`, `OVERTIME`,
`PAUSED`), the big countdown, and four readings:

- **SCHED** — the session's planned duration
- **ELAPSED** — time run so far
- **END AT** — projected finish time
- **DRIFT** — how far off the planned schedule you are, or `—` if nothing is scheduled

With nothing selected it reads _"Select a timer to begin."_ With Blackout on it reads
`OUTPUT BLACKOUT`.

### Auto-advance

The **Auto** switch advances to the next session **when the current one goes into
overtime** — not at zero. It then starts that session automatically, unless the session has
**Pause before this session** ticked, in which case it waits for you.

### Up next

Shows the following session with its start time and duration. **Cue next** selects it and
**Skip** passes over it — but note **neither of them starts playback.** You still
press `▶ Start`.

### Run-of-show ribbon

The strip under the well shows one block per session, sized by duration, with a playhead
on the live one and a strike-through on sessions already played. Click any block to jump
there. Clicking the block that is currently on air asks you to confirm, because
selecting it again stops playback and resets its clock.

### Schedule health

Reads "behind schedule", "ahead of schedule", or "on schedule", with a **Planned
finish** and a **Projected finish**. It needs at least one session with a time-of-day
start; otherwise it reports "no planned schedule". A rundown built by
[CSV import](csv-import.md) has no start times, so it has no plan either.

## Messages

Messages appear as a full-width overlay on the [Viewer](viewer.md). The **Messages**
panel is on the right of the console.

1. Optionally open **Templates ▼** and pick from the canned sets — **Live Music**,
   **Theatre**, and **Conference** (things like `5 MINUTES TO STAGE`, `PLEASE TAKE
YOUR SEATS`, `Q&A NOW OPEN`). Clicking one fills the box and picks its colour.
2. Type your text, or edit the template.
3. Choose one of the six colours: white, yellow, orange, red, green, or blue.
4. Click **Send**. This saves the message — it does **not** put it on screen.
5. In the list below, click **Show** to put it on screen. The button then reads
   **Live**.
6. **Flash** makes a live message pulse. It is disabled until the message is showing,
   so the order is always send → Show → Flash.
7. **✕** deletes a message.

> **Only one message can be on screen at a time.** Showing a message automatically
> hides whichever one was up before.
>
> **Blackout hides live messages too.** If the Viewer is blacked out, the audience
> sees nothing at all — not the timer and not your message.

There is no bold control and no colour picker beyond the six swatches.

## Related

- [Share links](share-links.md) — get the Viewer, Agenda, and Moderator screens out
- [CSV import](csv-import.md) — build a rundown from a spreadsheet
- [Saved shows](saved-shows.md) — save this room's rundown for reuse, or load a
  saved one in
- [Team management](team-management.md) — let colleagues into this room
