Normalizes the topology so web/desktop/mobile clients communicate only with Convex. Convex admits durable commands, dispatches private Flue turns through FLUE_URL, and stores the product-facing result before clients observe it.
Changes
Architecture
Clients -> Convex only. Flue and future Rivet/AgentOS services are private workers.
Convex admits commands, invokes the worker, and stores results.
/api/flue retained through Caddy as the private Convex-to-Flue gateway (no browser use).
Closes the loop on the Convex-only refactor and the auth race fixes.
## Summary
Normalizes the topology so **web/desktop/mobile clients communicate only with Convex**. Convex admits durable commands, dispatches private Flue turns through `FLUE_URL`, and stores the product-facing result before clients observe it.
## Changes
**Architecture**
- Clients -> Convex only. Flue and future Rivet/AgentOS services are private workers.
- Convex admits commands, invokes the worker, and stores results.
- `/api/flue` retained through Caddy as the private Convex-to-Flue gateway (no browser use).
**Convex backend (normalized relational core)**
- `organizations`, `organizationMembers` (tenancy)
- `projects`, `projectContextDocuments`
- `conversations`, `conversationTurns`, `conversationMessages`, `conversationAttachments`
- `signals`, `signalConstraints`, `signalSources`, `works`, `signalWorkAttachments`, `workEvents`
- Conversation turns queued in Convex; agent runAction dispatches to Flue and persists assistant response, signals, and proposed work back into Convex.
**Web client**
- Chat moved off the Flue transport: `use-chat-agent` reads reactive Convex rows and sends through `conversationMessages.send`.
- Fixed signed-in blank screen: gate all product queries on `useConvexAuth` (`isAuthenticated && !isRefreshing`) plus personal-org bootstrap.
- Pinned `react`/`react-dom` to `19.2.8` via catalog to fix SSR dual-React crash.
**Removed (~16.6k net lines)**
- Daemon, AgentOS/Orb, project issues/runs/artifacts, todos, browser Flue transport, mobile execution views, smoke scripts.
## Verification
End-to-end on cheaptricks (`https://zopu.cheaptricks.puter.wtf`):
- Connected repo, sent actionable message.
- Flue turn completed through private gateway.
- Signal + proposed Work created with exact provenance.
- Persisted across browser refresh.
- Workspace typechecks, Ultracite, root checks, 12 focused frontend tests pass.
Closes the loop on the Convex-only refactor and the auth race fixes.
Normalize the topology so web/desktop/mobile clients communicate only with
Convex. Convex admits durable commands, dispatches private Flue turns through
FLUE_URL, and stores the product-facing result before clients observe it.
- Normalized relational schema: organizations, projects, conversations/turns/
messages/attachments, signals/sources/constraints, works/events/attachments.
- Conversation turns queued in Convex; the agent runAction dispatches to Flue
and persists assistant response, signals, and proposed work back into Convex.
- Browser chat moved off the Flue transport: use-chat-agent now reads reactive
Convex rows and sends through conversationMessages.send.
- Fixed signed-in blank screen: gate all product queries on useConvexAuth
(isAuthenticated && !isRefreshing) plus personal-org bootstrap.
- Pinned react/react-dom to 19.2.8 via catalog to fix SSR dual-React crash.
- Removed ~16.6k net lines: daemon, AgentOS/Orb, project issues/runs/artifacts,
todos, browser Flue transport, mobile execution views, smoke scripts.
Verified end-to-end on cheaptricks: connect repo, send actionable message,
Flue turn completes, Signal + proposed Work created with exact provenance,
persists across refresh.
puter
merged commit cb7484912c into master2026-07-27 16:03:37 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Normalizes the topology so web/desktop/mobile clients communicate only with Convex. Convex admits durable commands, dispatches private Flue turns through
FLUE_URL, and stores the product-facing result before clients observe it.Changes
Architecture
/api/flueretained through Caddy as the private Convex-to-Flue gateway (no browser use).Convex backend (normalized relational core)
organizations,organizationMembers(tenancy)projects,projectContextDocumentsconversations,conversationTurns,conversationMessages,conversationAttachmentssignals,signalConstraints,signalSources,works,signalWorkAttachments,workEventsWeb client
use-chat-agentreads reactive Convex rows and sends throughconversationMessages.send.useConvexAuth(isAuthenticated && !isRefreshing) plus personal-org bootstrap.react/react-domto19.2.8via catalog to fix SSR dual-React crash.Removed (~16.6k net lines)
Verification
End-to-end on cheaptricks (
https://zopu.cheaptricks.puter.wtf):Closes the loop on the Convex-only refactor and the auth race fixes.