Yeetline

On call

Where a deployment runs a duty desk, the app can say who is on it.

Who is on call

A rotation is a roster in order, a shift length, and a handoff time. Given those and the clock, who is on call is arithmetic — the same arithmetic on the server and in your app, so the two cannot disagree about it.

A cover wins over the computed shift for its window: somebody is ill, somebody swapped. It changes nothing else, which is why it is recorded separately from the roster — the roster is the rule, and a cover is not a change to the rule.

Paging the duty desk

@oncall in a message reaches whoever is on it now; @oncall:roads reaches one rotation's. @duty:roads is the same handle in the word some deployments use for it. Like a team handle, it is expanded by your app, before the message is sealed — see Your organization for why it has to be.

The cost of that is worth stating: the roster is visible to anybody who may see the rotation. An on-call roster is a published fact in every organization that has one, so that is the right price.

And the limit is worth stating too: a handle cannot add anybody to a conversation. What a room's messages are sealed to is that room's membership, so @oncall reaches whoever is on duty only if they are already in the room. Where they are not, your app says so on the way out rather than leaving you to believe the pager went off. It says the same where nobody is on call at all, which is the case worth being told about loudest.

Where to find it

Under Settings, where the deployment runs a duty desk: who is holding the pager on each rotation, any stretch in the next two weeks with nobody on it, and — under that — the access reviews waiting on you. Two questions in one place because they are the same errand: something wants a person, and the question is which person. Where there is no rotation and nothing waiting on you, the section is not there at all.

Gaps

The app will tell you when nobody is on call for a stretch. A schedule with a hole in it over a holiday weekend is the classic failure, and it is invisible in a list of names.

Time zones

A rotation's handoff is stored as an hour and an offset in minutes rather than as a named time zone, because this server has two runtime dependencies and a time-zone database is not one of them. The visible consequence: a handoff at 09:00 local moves by an hour across a daylight-saving boundary. It is said here rather than hidden, because somebody's Monday morning depends on it.

Last changed 2026-10-06