> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trychert.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hackathon organizer guide

> Give each team an agent project, Chert access, and a scheduled FaceTime line.

Students build **LiveKit voice agents** on their own laptops. Each team creates
its own LiveKit Cloud project and model API account; you provide Chert project
access and an already provisioned FaceTime line. Use **inbound FaceTime Audio**
as the baseline.

## Before the event

| Organizer provides | Each team prepares |
| - | - |
| Chert account access with owner/admin role in a workshop project. | A LiveKit Cloud account and project, plus its private URL/key/secret. |
| Exactly one eligible line in that Chert project and its FaceTime address. | A funded model API account; the starter uses OpenAI Realtime. |
| Reserved test slot and support contact. | macOS/Linux with Node 22.23.2 or 24.x, npm, and an editor. |
| Confirmed routing and a physically tested line. | A unique dispatch name, for example `team-otter-agent`. |
| Links to [Build your agent](/facetime-cli/build-agent) and [Connect and test](/facetime-cli/quickstart). | A FaceTime-capable device/account to call the assigned line. |

Use dedicated workshop Chert projects: owner/admin is a privileged role, and
the current CLI has no limited student role for claiming a line. Complete
[project and line setup](/facetime-cli/connect) with Chert before students arrive.
Do not hand out production API keys or ask students to reuse a hosted demo agent's name.

## Plan capacity and handoffs

**One line = one connected CLI = one active call at a time.** More agent names
in LiveKit do not create more FaceTime capacity. If there are more teams than
lines, schedule testing slots while other teams build their agents locally.

Give each team a private assignment card:

* Chert account, project name and UUID.
* Exact FaceTime address and time slot.
* Agent dispatch name.
* Who pays for LiveKit and model usage, the budget, and support contact.

Keep secret values out of the assignment card and public guides. Teams store
their own credentials privately in `.env.local`.

At the end of a slot, the caller hangs up, the student waits for room cleanup,
stops Chert and confirms line release, then stops the agent. The next team runs
`chert doctor` before starting. Hold the handoff if cleanup or release failed;
only the organizer should coordinate a takeover.

## Rehearse the actual student experience

Before opening a line to students, follow the public guide in a fresh folder:
install CLI beta.3, build the starter, approve browser login, check credentials
from the agent folder,
and run both terminals. On **each intended line**, verify:

1. A relevant two-way conversation using the student's model account.
2. A follow-up and interruption.
3. Caller hangup and room cleanup.
4. A fresh second call and second cleanup.
5. Ctrl+C and confirmed line release.

Record the date, Node/CLI versions, line and outcomes. Doctor, a recent heartbeat,
and automated tests do not establish a working FaceTime conversation.

## Costs and scope

Prewarming and `doctor --agent` dispatch real jobs. The supplied starter waits
for a participant before opening its model session, but modified agents may
incur charges earlier. Set budget ownership and limits before the event.

The public JavaScript starter has been checked for installation, syntax and SDK
compatibility; its live two-call rehearsal is still required. A previous Muse
demo does not qualify this starter or every workshop line. Video/avatars require
separate development and validation. Do not add `--muse` to ordinary student agents.

The CLI runs on student/operator computers. Line provisioning, infrastructure
maintenance and media troubleshooting remain with the organizer and Chert.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.