Rensei docs

Program

Read-only inspection of the canonical program ledger: list, show, events, and resume.

The program ledger is the canonical, multi-session record that joins immutable program events to current session-ledger edges and nodes. rensei program (v0.14.21+, rensei-tui #403) is its read-only operator surface. Every subcommand is a GET against /api/cli/programs; the CLI never mutates the ledger.

Requires dispatch:invoke and org-scoped visibility. A program is addressed by its immutable programId (prog_ + 32 hex). Visibility is anchored to the origin session project and clipped to the caller's project fence. A project-fenced credential sees only programs whose origin project it can access; cross_project programs require an org-wide credential.

Commands

program list

Keyset-paginated index, newest first.

rensei program list [--project <slug>] [--scope project|cross_project] [--external-key <key>] [--limit 1..200] [--cursor '<json>'] [--json]
FlagDescription
--project <slug>Resolve a project slug or stable UUID to a platform project id and filter to that project. If --project is omitted, the list is org-wide clipped to the caller's project fence. The root --project flag is respected; an implicit active project never silently narrows the list unless you pass the flag.
--scope project|cross_projectFilter by ledger scope. project is a single-project program; cross_project is a multi-project topology (requires org-wide visibility).
--external-key <key>Filter by the caller's external correlation key.
--limit <n>Maximum programs to return (1-200, default 50).
--cursor '<json>'Opaque keyset cursor from the previous page's nextCursor: {"createdAt":"...","programId":"prog_..."}. Both fields are required when a cursor is present.
--jsonEmit the REST response envelope as JSON. Human output is a table plus Next cursor: when more pages exist.
# Newest 50 programs visible to the caller
rensei program list

# Project-scoped view
rensei program list --project my-fintech-app --json | jq .programs

Cursor pagination. Pass the exact JSON the previous response's nextCursor printed. An invalid or partially-specified cursor is rejected before any network call.

program show <program-id>

One immutable program record.

rensei program show <program-id> [--json]

<program-id> must match prog_[0-9a-f]{32}; otherwise the CLI rejects it as an invalid request without calling the platform. Human output:

Program: prog_... 
Title: ...
External key: ...
Scope: project
Origin: session ... , graph ... , project ...
Created: ... by ...

--json prints the ProgramDetail envelope (ledgerVersion, programVersion, programId, externalKey, title, scope, origin, createdByPrincipalRef, createdAt).

program events <program-id>

Ordered, structured-reference events for one program, ascending by decimal seq.

rensei program events <program-id> [--after-seq 0] [--limit 1..1000] [--type <type>] [--wave <waveId>] [--json]
FlagDescription
--after-seq <decimal>Return events after this decimal sequence (default 0). Must be an unsigned decimal within 0..9223372036854775807.
--limit <n>Maximum events to return (1-1000, default 100).
--type <type>Filter by event type: issue_created, wave_opened, wave_closed, child_dispatched, receipt_recorded, handoff_recorded. An unknown type is rejected client-side.
--wave <waveId>Filter by wave id.
--jsonEmit the REST response envelope as JSON. Human output is a SEQ TYPE WAVE ACTOR RECORDED table plus Next after-seq: and a (more) hint when hasMore is true.
rensei program events prog_abc --limit 100 --json | jq .events
rensei program events prog_abc --type child_dispatched --wave wave-10

program resume <program-id>

One authoritative resume projection: the immutable event stream joined to current session-ledger edges/nodes.

rensei program resume <program-id> [--json]

Human output starts with the same program detail as program show, then:

Resume after-seq: ...
Open waves: ...
In-flight children: ...
Last event: ... (...)
  <edgeId>  <sessionId>  <phase>

--json prints ProgramResumeResponse (program, resumeCursor.afterSeq, lastEvent, openWaves[], inFlightChildren[]). Terminal children are absent even when no later program event was appended - the join against session_ledger_edges/session_ledger_nodes is live.

Authentication and project fence

rensei program uses the same credential resolution as every rensei command (--auth, --org, --project, RENSEI_*, and the daemon's bearer when present). The request is authorized by the authenticated principal and the explicit projectId query parameter, never by a remembered X-Rensei-Project header - the program client clears that header.

Project resolution for --project under program list accepts both the stable platform UUID and the human slug. An unknown or misspelled slug is refused before the list call; the error names the candidates rather than silently returning an empty page.

On this page