Sign in with a link printed in your terminal
Sign in with a link printed in your terminal — or, locally, one click on a demo account. Nothing to configure: with no email service set up, the magic-link URL is logged where you started the app.
The demo accounts sign you in as an owner, an admin, a member or a global admin, so you can see every screen from each side.
Behind it → Authentication
Your organisation, your role, what happened last
One page tells you where you are: the organisation, your role in it, and the last few things that happened. Every screen from here on belongs to that organisation — the demo one is Acme Logistics.
A person can belong to several organisations and switch between them; a deployment that only ever needs one turns switching off with a setting, not a fork.
Behind it → Tenancy and access
Invite someone, pick a role, change it later
Invite by email, assign owner, admin or member, and every change lands in the activity trail. The invitation email goes out from a queue, so the button answers the moment the row exists.
Open the page in a second browser and it refreshes live when the invitation is accepted — the database is the truth, the socket is only a nudge.
Behind it → Tenancy and accessBackground work and realtime
AI works on day one, with no key
Chat, agents and search are ready on a fresh workspace with nothing configured: Workers AI is the floor. The settings page shows exactly which model will answer and where that choice came from.
Add an Anthropic key, or let each organisation bring its own provider, and it ranks above the floor — test the connection before you save.
Behind it → The AI layer
Ask a question, watch the answer stream in
The reply streams in as it is written, the thread is saved, and each turn shows what it cost in tokens. Come back tomorrow and the conversation is still there.
Threads are private to the person who started them — an admin in the same organisation cannot open yours.
Behind it → The AI layer
An agent is a run you can watch
Start an agent and it becomes a row: queued, running, done, with every step on a timeline you can open. This one is summarize-text, the kit’s single-call example — its answer is checked against a schema before it is stored.
A run that stalls can be cancelled; a second request while one is already running for the organisation gets that run back instead of starting another.
Behind it → Background work and realtime
Drop in a PDF and watch it go Indexing → Indexed
Upload PDFs, Word and Excel files, HTML, Markdown or plain text — or paste text — and each row goes Indexing → Indexed within seconds. The original is kept and downloadable.
Behind the row, the text is split into passages and embedded, so search and every agent can find it. Documents belong to the organisation that uploaded them and to nobody else.
Behind it → The AI layerEmail and file storage
Search by meaning and by words, ranked
One box searches by meaning and by exact words at once and fuses the two rankings — every hit shows how it ranked on each. A phrase from a PDF you uploaded a minute ago is already findable.
Each passage says which document it came from and where in it, so a reader — or an agent — can jump straight to the spot.
Behind it → The AI layer
An agent that reads your documents and cites them
Ask research-topic a question and it searches the knowledge base itself, reads what it needs and answers in Markdown with sources. This is the agentic example: a tool loop over the same search you just used.
Citations are checked against the documents the tools actually returned, so an invented one is dropped rather than shown.
Behind it → The AI layer
A dashboard every organisation gets on its first visit
The seeded Organisation Overview shows members, sign-ups over time, roles and daily activity — copied from a template in the repo the first time an organisation opens the page.
Explore is for your own questions: pick a measure and a breakdown and get a chart. Every number is computed inside one organisation; no organisation can see another’s.
Behind it → Analytics and dashboards
Every AI call, priced
Every model call is a row: which feature, which provider and model, how many tokens in and out, what it cost. The last thirty days add up at the top.
Prices live in one table in the repo and are frozen onto each row when it is written; a model the table does not know is counted as unpriced, never guessed.
Behind it → The AI layer
Every organisation from one place
A global admin sees every organisation from one screen — the demo has three: Acme Logistics, Northwind Freight and Bluebird Clinics — plus the access requests waiting for a decision.
To help a customer, “enter” their organisation: that creates a real support membership, visible to them by design, and everything you do there is logged like any other member’s actions.
Behind it → Tenancy and access
The same app from a terminal
The CLI logs in through your browser and ends up with an API key scoped to one organisation; from then on it calls the same routes the UI does and parses the same schemas.
--json prints only the response, so any command pipes into jq — and the key is revocable from the same settings page as every other.
pnpm cli login --server http://localhost:3001Opening the browser… signed in, key stored in ~/.rocketflare/config.jsonpnpm cli whoamiuser owner@example.testtenant Acme Logisticskey rocketflare_…pnpm cli members list --json | jq '.items[].email'"owner@example.test""admin@example.test""member@example.test" Behind it → The CLI
It works on a phone too
The same app at 390 pixels: home and a chat thread. Nothing here is a second front end — one UI, one set of routes.
Now run it yourself
One command on a laptop with Docker gets you to the first stop, signed in. The concept pages explain the decisions behind each one.