rheoStream mark rheoStream
rheoStream · the site, and the project behind it

Case Study · Design & Development

rheoStream

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.

Site
rheo.stream ↗
Repo
github.com/rheos/rheostream ↗
Status
Site live · reference instance running · four modules built
Site stack
Vite · React 19 · TypeScript · Tailwind · GSAP · Cloudflare Pages
Framework
FastAPI · Python · Next.js 16 · Postgres · Coolify

The problem

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 site

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 project

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

A live page with no fake product.

This part is shipped. It is a marketing site. The application it describes is in active build.

01

The page sits in a current

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.

02

Motion and its fallbacks

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.

03

The status is on the page

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

Conversation is the interface, not the database.

So far this part of the project has an accepted architecture, a working core with one module, and a live reference instance.

01

Three modules, one agent

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.

02

One database per workspace

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.

03

Six safety classes, approvals a model cannot grant

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 finished. The framework runs, and its four modules are built.

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.

live marketing site flow-field frontend db-per-workspace built in the open
Ω

Need a public site, and the system behind it?

We design both from one studio.