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.
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
taskIdor interactive Session record; issueIdwhen 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
- Sessions & Collaboration — Exact sender follow-up and reconstruction.
- Issue Board — Link reports to creator, owner, and scheduled runs.
- Automation — Produce attributable headless reports.
- Lifecycle & Offboarding — Understand historical entries after departure or purge.
