The current setup path (install → OAuth → sync wait → wait for a real event) has four dropout points before anyone sees the product work. We need to decouple the first wow moment from OAuth entirely.
Proposed: relayfile dev demo mode
When no credentials are found, relayfile dev connects to a hosted demo workspace instead of exiting with a setup prompt. Synthetic events fire within ~5 seconds so the user's --run command executes immediately against real-looking data.
npx relayfile dev \
--path "/linear/issues/by-state/triage/**" \
--event file.created \
--run "echo 'Triaging: {{path}}'"
After the first event fires, print a one-line upgrade prompt:
[demo] Got it working? Connect the real thing: relayfile setup --provider linear
What needs to exist
- Demo fallback in
relayfile dev — detect no credentials, connect to demo workspace, show [demo] banner
- Hosted demo workspace — synthetic events cycling on ~10s loop, realistic paths and payloads (Linear triage issue, GitHub PR, HubSpot deal)
- Post-event upgrade prompt — carries current flags into the suggested setup command
npx packaging — no binary install step before the demo
Why this order
The user writes their --run command before doing OAuth. Setup becomes connecting real data to something they've already confirmed works — not a leap of faith into a blank terminal.
The current setup path (install → OAuth → sync wait → wait for a real event) has four dropout points before anyone sees the product work. We need to decouple the first wow moment from OAuth entirely.
Proposed:
relayfile devdemo modeWhen no credentials are found,
relayfile devconnects to a hosted demo workspace instead of exiting with a setup prompt. Synthetic events fire within ~5 seconds so the user's--runcommand executes immediately against real-looking data.After the first event fires, print a one-line upgrade prompt:
What needs to exist
relayfile dev— detect no credentials, connect to demo workspace, show[demo]bannernpxpackaging — no binary install step before the demoWhy this order
The user writes their
--runcommand before doing OAuth. Setup becomes connecting real data to something they've already confirmed works — not a leap of faith into a blank terminal.