Skip to content

Seats and Assignment Hours

Josh edited this page Nov 5, 2026 · 1 revision

Describes robot-council/core v0.8.3.

Each developer decides, for themselves, when their machines take new work. The coordinator reads these and never writes them: they are constraints on the coordinator, so it is not the one who changes them. The only writer is the developer's own page at {prefix}/dashboard/seats.

  • A seat is one of a developer's machines working in one repository at one work location. It is recorded when its developer opens the page, from what their live sessions report, and it outlives every session that sits in it -- a restarted agent is still in the same seat.
  • Parking a seat says it takes no new work. It records who parked it and when. Only that developer lifts it, and nothing lifts it on a timer.
  • Assignment hours are a daily window, whether weekends count, and an IANA time zone such as America/Chicago. A window whose end is before its start runs overnight. Everything is read on the developer's own clock, including through daylight saving changes.
  • Days off are the developer's own list of dates. They apply once hours are set, since a date needs a time zone to say when it starts. A developer with no hours set is not gated at all.
  • Ignore my hours takes a seat out of its developer's hours, and the seat then reads "Hours: ignored"; Apply my hours puts it back. The API and the developer_settings tool still call this exempt.
  • Tasks at once is how many tasks a coordinator may place on one session in the seat, from 1 to 16 (#409). A session running there takes a new number at once. A session that declared its own number when it joined is held to that where it is smaller (#564); a session can never raise it. It is 1 until the developer changes it, so a seat nobody touched behaves as it always has. The seats page shows what each live session in the seat takes now.

A session holding coordinator:direct reads all of it, as it is at the moment of the call:

  • GET {prefix}/api/developers/settings — every developer's hours and days off, and every recorded seat with its parked, exempt and max_capacity values
  • the developer_settings MCP tool, which returns the same thing (#440)

Each developer and each seat also carries inside_hours -- true, false, or "ungated" when no hours apply (none are set, or the seat is exempt) -- and next_opens_at when it is false. It is computed by the code the placement check refuses with, so a seat read as inside its hours is not refused for being outside them. Settings change on the developer's page at any time, so read them when deciding rather than remembering an earlier answer.

Developers are named by GitHub login, as everywhere else on the machine API. A placement is refused on these settings as #320 describes, in the placement rules further down.

Clone this wiki locally