Case Study · Design & Development
rheoStream is two pieces of work. The public site at rheo.stream is a finished marketing site. We build the framework behind it in the open, and a reference instance now runs on rheo.stream subdomains with all four modules working.
Independent work gets split across an inbox, a pipeline, a ticket desk, and a pile of chat logs. Each one is useful. Together they are a stack of dashboards, and the history stays in each one. An agent that can talk across them still needs records that are inspectable, exportable, and owned.
The project behind rheoStream is our design for that: one workspace, modules with clear boundaries, and a single agent named rheo that operates them in conversation. The site puts that idea in public.
The live page at rheo.stream is a finished marketing site. Vite, React, and TypeScript on Cloudflare Pages. A canvas flow-field hero, scroll-driven motion on desktop, and a reduced-motion fallback. Teal-ink ground, one accent. The copy on that page says the product is in design and early build.
The framework is in a public repository at github.com/rheos/rheostream. Conversation is the interface, not the database. It has four modules: Leads, Current, Relationships, and Recallatron. An agent named rheo is designed to operate them in conversation, over Claude, Telegram, or voice. The memory service we already ran has its own case study. On 30 September 2026 its records moved into Recallatron, which is now the only place memory gets written.
The main branch now has a working core: a FastAPI service, a durable job worker, and a Next.js 16 shell on Postgres, with one database per workspace. Sign-in is GitHub OAuth behind a pluggable provider boundary. The core also has an MCP facade, an operator CLI, an audit record on every change, redaction of anything sent to a model, and workspace export and restore. Recallatron stores memory that can be corrected and superseded. It recalls by keyword, by embedding, or both, and computes the embeddings on the server. A reference instance runs behind GitHub sign-in on a Coolify-managed server, and a push to main redeploys it once CI passes. Leads takes inquiries in by hand or through a signed website endpoint, then moves them through a pipeline with qualification and follow-up dates. Current tracks work items, projects, and the dependencies between them. Relationships works out which people and organizations are behind them. We have not built a working rheo agent.
The site
This part is shipped. It is a marketing site. The application it describes is in active build.
Teal-ink ground, one accent, a flow-field canvas that pauses off-screen and under reduced motion. Dark is chosen so the streamlines read as a fluid plot.
GSAP ScrollTrigger pins two scenes on desktop. Mobile gets ordinary reveals. Anyone with prefers-reduced-motion gets neither. The canvas falls back to a static streamline plot.
No invented screenshots, no fake metrics. There is no waitlist that pretends the product is done. The close of the site says it is in design and early build, and that there is no runnable app yet.
The project
So far this part of the project has an accepted architecture, a working core with one module, and a live reference instance.
Leads turns whatever feeds you work into opportunities. Current carries active commitments. Recallatron keeps the context that would otherwise be lost between sessions. An agent named rheo is designed to operate all of it in conversation, over Claude, Telegram, or voice. Recallatron is built. Leads and Current are not running yet.
The accepted architecture puts each workspace in its own Postgres database, with one schema per module inside it. Identifiers are UUIDv7 so records can be exported and restored without colliding. Knowing an id does not tell you which workspace it lives in, and it is not authorization.
Every operation declares a safety class: read, draft, mutate, destructive, external, or financial. The three upper classes need an approval bound to that exact call. Approval is a person in a web session. A token cannot carry the approve operation, so a model cannot approve what it proposed. Agent execution goes through an adapter. The Claude CLI adapter is built, and an OpenRouter adapter is planned. Before data reaches a model, it is redacted by purpose.
Site: Vite + canvas flow-field · GSAP reduced-motion fallback. Project: database-per-workspace Postgres · six safety classes · FastAPI / Next.js 16 core · Leads, Current, Relationships, Recallatron modules · reference instance on Coolify.
What this shows
The site is live. The project has an accepted architecture for database-per-workspace isolation, safety classes, and replaceable agent runtimes. It runs as a reference instance with all four modules built, and we run our own work on it. We have not shipped a working agent, and nobody outside the studio uses it yet.
Client work often needs a public site that tells the truth, and a system an agent should operate with records the operator still owns.
We design both from one studio.