inbox
rigger inbox [--project <NAME>] [--json]The queue of questions waiting on you, gathered from every project at once. Until this, they were never in one place - they sat in each project’s notes, and a question could wait weeks because nobody was looking at that file.
$ rigger inbox6 questions in 3 projects
alpha [ 1] 2026-09-04 Place in the release calendar [ 2] 2026-09-04 Sign the binaries?beta [ 3] 2026-09-04 Place in the release calendar [ 4] 2026-09-04 Sign the binaries?gamma [ 5] 2026-09-04 Place in the release calendar [ 6] 2026-09-04 Sign the binaries?
Asked by several projects - one answer settles each group: Place in the release calendar — alpha, beta, gamma Sign the binaries? — alpha, beta, gamma
Answer one with: rigger resolve <project> <id> "<answer>"Grouped by project, because answering is done a project at a time, and oldest first within one - what has waited longest is what is most overdue.
A question past its day
Section titled “A question past its day”A question asked with a day (note --kind question --due, or ask_owner with due) carries it at the end of its line, and once the day has gone the line says so - in red, for a person at a terminal:
$ rigger inbox2 questions in 1 project, 1 overdue
sample [ 7] 2026-09-18 Which registry goes first? overdue since 2026-09-21 [ 8] 2026-09-22 Which icon? due 2026-10-22--json carries due and overdue on every question, read against today when the inbox is read, so every screen that shows a question agrees on whether it is late.
One answer, several projects
Section titled “One answer, several projects”The block at the bottom is the reason this command groups rather than lists. Questions are copied between projects: a real record had three of them waiting on the same decision about a release calendar, and without the grouping it read as three separate jobs.
Grouping is by wording, not by meaning. rigger notices that two questions are spelt alike - case and punctuation aside - and does not guess at what they have in common. That is enough for the case it exists for: the same question written into several hubs.
A question only one project asks is not a group, and neither are two questions inside one project - the block is about an answer that settles several projects at once.
Questions come from two places
Section titled “Questions come from two places”A hub’s “waiting for the owner” section becomes questions when it is imported, and an assistant adds one with the ask_owner tool over MCP. Both land in the same queue.
What the neighbours are asking for
Section titled “What the neighbours are asking for”Below the questions, the orders one product has placed with another - a wish recorded with --from:
Neighbours are asking for:dowel [88] 2026-09-18 A status colour that is not the accent — lyridThese are not questions and nothing is being asked of you to decide: they are work one product is waiting on another to do. They are on this screen because it is where you look for what is waiting, and in a group of their own because answering a question and doing a piece of work are not the same job.
One is taken off the list by rigger resolve, like any wish.
Under --json it prints the three groups of the screen.
| Field | Type | Meaning |
|---|---|---|
waiting |
array | The open questions, oldest first within a project. |
waiting[] |
object | One question. |
waiting[].project |
string | The project asked. |
waiting[].id |
integer | The question’s id, for rigger resolve. |
waiting[].date |
string | The day it was asked, YYYY-MM-DD. |
waiting[].body |
string | The question’s text. |
waiting[].due |
string or null | The day an answer is needed by, YYYY-MM-DD; null when it has none. |
waiting[].overdue |
boolean | Whether that day has gone by, read against today. |
shared |
array | Questions spelt alike in several projects. |
shared[] |
object | One group of alike questions. |
shared[].subject |
string | The heading the questions share. |
shared[].projects |
array | The projects that ask it. |
shared[].projects[] |
string | A project name. |
asked_by_neighbours |
array | Orders one product has placed with another. |
asked_by_neighbours[] |
object | One order. |
asked_by_neighbours[].id |
integer | The wish’s id, for rigger resolve. |
asked_by_neighbours[].body |
string | What is asked for. |
asked_by_neighbours[].asked_by |
string | The project that asked. |
asked_by_neighbours[].project |
string | The project being asked. |
asked_by_neighbours[].date |
string | The day it was recorded, YYYY-MM-DD. |
Answering
Section titled “Answering”rigger resolve takes a question off the queue, and the answer becomes a decision in the record:
$ rigger resolve alpha 1 "Tier B, reviewed each cycle."Answered [1]: **Place in the release calendar:** no tier assigned yet. the answer is recorded as a decisionNothing is deleted - the question stays in the record as what was asked, and only leaves the queue.