Product Specification: Showboat

Inferred from source review of simonw/showboat. Statements reflect observed behavior; they are not claims made by the original authors.


1. Problem Statement

Automated agents and developers need a way to document their work that is simultaneously human-readable and machine-verifiable. Conventional documentation quickly drifts from reality: outputs are pasted manually, become stale, and cannot be independently confirmed. Showboat solves this by making the document itself executable — every code sample in a Showboat document can be re-run, and its output compared against what was originally recorded. The document is both the demonstration and the proof.


2. Actors & Goals

Agent (primary author)

An automated process (LLM agent, CI script, or interactive shell session) that builds a demonstration document step by step. The agent wants to: - Record work incrementally as it proceeds - Capture outputs without manual transcription - Undo mistakes without starting over - Emit a finished document that a human can read and a machine can verify

Human Reviewer

A developer, stakeholder, or evaluator reading the finished document. They want to: - Understand what the agent did and why - Trust that recorded outputs are accurate - Re-run any step independently to confirm results

Operator / Deployer

A person or system that configures the tool's environment. They want to: - Optionally stream document-building events to a remote viewer in real time - Install the tool without friction across platforms - Produce versioned, identifiable documents

Verifier

An automated process (CI, another agent) that confirms a previously recorded document is still accurate. They want to: - Detect output drift from environmental or code changes - Generate a corrected document when outputs have changed legitimately - Receive a clear, structured diff of what changed


3. Operator Value


4. Core Capabilities

4.1 Document Initialization

The system allows an author to create a new, empty demonstration document with a title, a machine-readable identity, and a creation timestamp. Each document receives a unique identifier that persists for its lifetime.

4.2 Prose Annotation

The system allows an author to append free-form explanatory text to a document at any point. Text can be supplied inline or piped from another process.

4.3 Code Execution and Output Capture

The system can execute a snippet of code in a named interpreter, capture the combined standard output and error, and append both the source code and its output to the document as a matched pair. The caller receives the captured output and the original exit code, allowing the author to react to failures.

4.4 Image Attachment

The system can attach an image file to a document. The image is copied into the document's directory under a generated filename that encodes a date, and a Markdown image reference is appended to the document.

4.5 Entry Removal

The system allows an author to remove the most recently appended entry from a document. When the last entry is a code-output pair, both parts are removed together, keeping the document internally consistent.

4.6 Output Verification

The system can re-execute all code blocks in an existing document and compare the new outputs against the stored ones. It reports which blocks differ and, optionally, writes a corrected copy of the document.

4.7 Command Extraction

The system can read an existing document and emit the sequence of commands that would reproduce it from scratch. The emitted commands are safe to use directly in a shell script.

4.8 Real-Time Remote Streaming

The system can forward each document-building operation to a configured remote endpoint as it occurs, enabling live observation of an agent's work.


5. Observable Behaviors

Document initialization

Prose annotation

Code execution and capture

Image attachment

Entry removal

Output verification

Command extraction

Remote streaming


6. Edge Cases and Failure Behavior


7. Non-Functional Constraints


8. Non-Goals


9. Suspected Implementation Leakage

The following observations describe internal mechanisms rather than product-level promises. They should be moved to a technical or interface specification if further detail is needed: