GitHubBlog

Search Documentation

Search for a page in the docs

Inbox

Inbox is the Workspace → user delivery channel. When an interactive or headless Session finishes something worth seeing, it publishes a report, a question, or a concise status update instead of leaving the result buried in terminal output.

OpenAlice Inbox surface where workspace reports and questions arrive

Publish from a Workspace

alice-workspace inbox push \
  --doc research/report.md \
  --comments "The draft is ready for review."

At least one document or comment is required.

  • Documents are pointers to files in the Workspace and render live when opened.
  • Comments are the notification's Markdown message.
  • At publication, OpenAlice hashes the document bytes and records that revision with the Inbox origin. The UI may show the later live file, while provenance still identifies exactly what was sent.

The same Workspace-scoped operation exists for external MCP consumers, but native OpenAlice Workspaces are CLI-first.

Server-stamped origin

The agent never supplies its own author identity. The launcher resolves the authoritative Session context and stamps:

  • workspaceId;
  • product resumeId;
  • runtime kind;
  • headless taskId or interactive Session record;
  • issueId when a scheduled Issue produced the entry.

Native CLI session ids are not exposed. Unknown or forged transport ids fail to produce provenance rather than fabricating an author.

This separates several questions that used to blur together:

  • Who sent this notification?
  • Which Issue or run triggered it?
  • Which revision of the report was sent?
  • Who last edited the live file afterward?

Ask the sender

Inbox can continue the exact product Session behind a known resumeId. The detail pane exposes Ask sender; agents use:

alice-workspace inbox ask \
  --id <entryId> \
  --prompt "Why did you publish this conclusion?" \
  --await

If an old/manual entry knows the Workspace but not the sender Session, OpenAlice recruits a fresh worker there and labels the answer reconstructed. A retired, departed, or purged sender remains historically attributed but unavailable; OpenAlice does not pretend a replacement is the original author.

See Sessions & Collaboration for the universal follow-up rule.

Read from an agent

alice-workspace inbox read --self --limit 20

--self narrows to the caller's Workspace. A global read can show other Workspaces' entries and their safe origin metadata. Foreign document paths remain relative to their own checkout.

To inspect a peer's live files:

alice-workspace peer path --id <workspaceId>

Read peers freely. Autonomous/headless work writes only inside its own Workspace; editing another Workspace requires an attended human-approved path and an honest git commit.

Web UI

The Inbox provides:

  • chronological and Workspace-grouped sidebars;
  • read state and explicit delete;
  • live Markdown/text/code rendering for attached documents;
  • an origin breadcrumb back to the Issue, run, or Session;
  • Ask sender or Ask Workspace with durable inquiry history;
  • a path back into the originating Session when it is resumable.

Opening a completed headless result materializes or reuses the interactive Session for its resumeId; it does not use the run id as a terminal id.

Persistence

Inbox entries are append-only records under data/inbox/entries.jsonl. Deletion rewrites the file atomically while preserving unparseable lines. Old entries without modern origin fields remain readable.

The report itself stays in its Workspace. Offboarding moves that complete checkout to the departed inventory; purge removes the live document but retains the Inbox entry, Session signature, and historical provenance as a tombstone.

When to push

  • Finished requested work → publish the report and a short summary.
  • Blocked on a user decision → send the question as comments.
  • Long-running milestone → optionally publish a checkpoint.
  • Internal tools, scratch output, or no material change → do not create Inbox noise.

Next Steps