Follow everything in one stream
A page of signals after a cursor, oldest first, or without one the newest of the last `since` seconds: each with its time, source, kind, severity, machine, session, actor, pull request, branch, issue, paths, a one-line summary and whether it is for the reader. Re-projections and undecided steps are counted as `suppressed`; a source that cannot be read is listed with its reason, never answered as empty. The page's `cursor` is the next page's `after`, and nothing on this page comes back. Reads only.
- query
- experimental
- benchmark required
- cache disabled
- MCP tool majordomus_monitor
Query parameters
| name | type | required | description | examples |
|---|---|---|---|---|
| after | string | no | The `cursor` of the previous page; without it, the page is the newest signals of the last `since` seconds. | local-resumed: "x0" |
| limit | integer (uint64) | no | At most this many signals (default 50, at most 500). | local-first-page: 50local-resumed: 20 |
| sources | string | no | A comma-separated subset of `mesh`, `executor` and `github` (default: all three). | local-first-page: "mesh,executor"local-resumed: "mesh,executor" |
| for | string | no | Comma-separated names of the reader — a worker (`1b`), a role, a login — so that what is addressed to it is marked `for_you`. An MCP caller is also its own board session. | local-first-page: "1b"local-resumed: "1b,cd" |
| since | integer (uint64) | no | How far back a first page reaches, in seconds (default 3600). | local-first-page: 3600local-resumed: 600 |
Try it
The port is whatever the server logged; 8741 is the one it asks for first. The values are the operation's first example.
curl -s "http://127.0.0.1:8741/api/v1/monitor?after=x0&limit=50&sources=mesh%2Cexecutor&for=1b&since=3600"
Tested by apps/majordomus-cli/tests/http_serve.rs, which replays the route with these values against a server on a real socket.
Responses
| status | body | meaning |
|---|---|---|
| 200 | MonitorPage | Follow everything in one stream: the result. |
| 400 | ErrorBody | invalid_input: The input does not fit the schema: a parameter of the wrong type, an unknown one, or a value the capability rejects. |
| 404 | ErrorBody | not_found: The input names something the repository does not hold. |
| 500 | ErrorBody | internal: The capability failed for a reason of its own; the message names it. |
| default | ErrorBody | Any other failure the transport reports: 405 method_not_allowed for another method on this path, 400 invalid_input for a body that is not a JSON object. |