How It Works
Demo mode is activated per-request by sending a header:Using Demo Mode
With curl
With the Web UI
Set theFABRO_DEMO=1 environment variable when starting the web app. This configures the frontend to send the X-Fabro-Demo: 1 header on every API request and disables authentication in the UI:
What Demo Mode Covers
Demo mode implements every API endpoint. Read endpoints return static data representing a realistic workspace with completed runs, workflows, sessions, verifications, and more. Write endpoints (creating runs, answering questions, sending messages) accept the request and return a canned response without persisting any state.| Endpoint group | Behavior |
|---|---|
| Runs | Lists and detail views return static run data across multiple statuses |
| Workflows | Returns sample workflow definitions and associated runs |
| Sessions | Returns sample chat sessions with message history |
| Human-in-the-Loop | Questions return static data; answers are accepted but not stored |
| Run Outputs | Compare, usage, and verifications return realistic static results |
| Run Internals | Stages, turns, checkpoints, context, and configuration all return static data |
| Verifications | Categories and controls with pass/fail examples |
| Insights | Saved queries and history; execute returns a canned result |
| Retros | Retrospective data for completed runs |
| Projects | Sample projects and branches |
| Settings | Platform configuration |
Limitations
- No state changes. Write operations return a success response but nothing is persisted. Creating a run returns a fixed ID; it won’t appear in subsequent list calls.
- No SSE streaming. Event stream endpoints (
/runs/{id}/events,/sessions/{id}/events) return immediately rather than streaming. - Static data only. The same data is returned regardless of path parameters — requesting any run ID returns the same run detail.