mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
## Summary Removes Fabro's automatic retro generation stage so workflow runs go directly from execution to finalization and optional PR creation. This drops the retro-specific crate, events, projection fields, config/API knobs, and user-facing docs in favor of the existing durable run observability surfaces. ## What Changed - Deleted the `fabro-retro` crate and the workflow `retro` pipeline phase, with finalization now consuming `Executed` state directly. - Removed retro configuration and API surface area, including `--no-retro`, `[run.execution].retros`, manifest `no_retro`, `features.retros`, and run projection `retro*` fields. - Retired typed `retro.*` events while keeping historical event logs readable by deserializing retired retro event names as `Unknown`. - Stopped appending retro sections to generated PR bodies and updated docs, marketing copy, screenshots, and navigation to point users toward observability/event-stream inspection. ## Testing Not run during PR creation; this branch already contained the implementation commit. --- [](https://github.com/EveryInc/compound-engineering-plugin) 🤖 Generated with GPT-5 (unknown context, reasoning unspecified) via [Codex](https://openai.com/codex)
57 lines
2.7 KiB
Text
57 lines
2.7 KiB
Text
---
|
|
title: "Demo Mode"
|
|
description: "Explore the Fabro API with realistic static data and no external dependencies"
|
|
---
|
|
|
|
Demo mode lets you explore every Fabro API endpoint without configuring authentication, running real workflows, or connecting external services. Every response returns realistic static data so you can build and test integrations against a predictable dataset.
|
|
|
|
## How It Works
|
|
|
|
Demo mode is activated **per-request** by sending a header:
|
|
|
|
```
|
|
X-Fabro-Demo: 1
|
|
```
|
|
|
|
When the server receives this header, it routes the request to a parallel set of demo handlers that return static JSON instead of hitting the real backend. Authentication is bypassed — no credentials are needed.
|
|
|
|
Requests **without** the header are routed to the real API as usual, so demo and production traffic coexist on the same server.
|
|
|
|
## Using Demo Mode
|
|
|
|
### With curl
|
|
|
|
```bash
|
|
curl http://localhost:3000/api/v1/runs -H "X-Fabro-Demo: 1"
|
|
```
|
|
|
|
### With the Web UI
|
|
|
|
Set the `FABRO_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:
|
|
|
|
```bash
|
|
FABRO_DEMO=1 bun run dev
|
|
```
|
|
|
|
## 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 |
|
|
| 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 (`/api/v1/runs/{id}/events`, `/api/v1/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.
|