Trellis and BaaS
When to use Jazz, InstantDB, or Convex vs Trellis — sidecar patterns, anti-patterns, and decision tables.
Trellis does not compete with developer BaaS products. This guide explains when to use a vendor for live app data, when to use Trellis for agent and causal graph work, and how to combine them without dual-write traps.
Companion ADRs: 0039 (no vendor KernelBackend), 0040 (lane boundary,
open engine, Platform sibling). See also Shipping today.
One sentence each
| Product | Job |
|---|---|
| InstantDB / Jazz / Convex / Firebase | Live app rows, auth, multiplayer UI, signup in minutes |
| Trellis (open engine) | Causal op-log, agent lanes, decision traces, semantic VCS graph |
| Trellis Platform (hosted, commercial) | Browser agent product on server-side Trellis — not a BaaS replacement |
Use the right tool per layer. Do not ask Trellis to be your app's row store.
Decision table
| You need… | Use |
|---|---|
| Todo app, CMS, social feed, game state in the browser | BaaS (Jazz, InstantDB, Convex, …) |
| Agent audit trail — what ran, why, with alternatives | Trellis |
| Multi-agent file work without stomping each other | Trellis lanes + git bridge |
| Issue tracking, milestones, VCS semantics on a repo | Trellis |
| "Who is online" / cursors / disposable chat | trellis/realtime (ephemeral; not in op log) |
| Live UI on Trellis-persisted entities | Typed SDK + remote kernel (Typed SDK) |
| Hosted agents in browser without running infra | Trellis Platform (ADR 0040) — not npm install trellis alone |
| Warehouse / BI on Trellis history | Export (one-way ETL) |
| Replace Salesforce/CRM with EAV graph | No — integrate via MCP/tools; external SoR stays external |
Vendor cheat sheet
| Vendor | Strengths | Pair with Trellis when… |
|---|---|---|
| InstantDB | React/Vue ergonomics, instant sync, dashboard | App UI + Trellis agent sidecar; Trellis Cloud already uses InstantDB for product metadata |
| Jazz | Co-op objects, typed collaborative state | Same DX shape as defineType, but on Jazz for app data; Trellis for repo/agent memory |
| Convex | Functions + database + reactive queries | App backend on Convex; Trellis records agent decisions and repo semantics separately |
| Firebase | Mature auth, mobile, Google ecosystem | Legacy app on Firebase; new agent workflows on Trellis |
| Neon / Postgres | SQL, warehouse-friendly | Analytics replica from Trellis export — not live KernelBackend |
Trellis docs are vendor-neutral. Pick one BaaS per app; do not dual-vendor the same entities.
Pattern: BaaS + Trellis sidecar (recommended hybrid)
Best for greenfield products that need fast app UI and auditable agents.
Rules:
- BaaS owns app entities — users, posts, settings, UI-facing state.
- Trellis owns agent memory — tool calls, decisions, lane ops, repo issues.
- Link by ID, not merge schemas — e.g.
issue:TRL-42in agent rationale;post:abcin BaaS. - Agents reach app data through tools (HTTP, vendor SDK, MCP) — not by writing the same rows into the op-log.
Example boundaries
| Data | Store |
|---|---|
| User profile, sessions | BaaS auth |
| Dashboard widgets, notifications | BaaS |
| Agent tool invocation + rationale | Trellis decision traces |
| Sprint issues, acceptance criteria | Trellis issues |
| Source files | Git (bytes) + Trellis semantics (ADR 0038) |
Pattern: Trellis-only (sovereignty path)
Best when: agents-on-repo, offline, export matters, no consumer app database.
trellis init
trellis issue start TRL-1
trellis watch
Use typed SDK against db serve or local kernel for graph UI. See
Shipping today — Path B.
Pattern: Platform (hosted agents)
Best when: Rox-style browser agent product; you operate hosting; horizontal workflows.
Browser → Platform API → server-side Trellis kernel per tenant. Product shell (orgs, billing) may use InstantDB — same as Trellis Cloud. Not a substitute for picking a BaaS for arbitrary app schemas.
Product brief: docs/product/platform-brief.md in the trellis package.
Anti-patterns
Dual-write
Writing the same logical entity to both BaaS and Trellis op-log "to keep them in sync." You will get conflict drift, hidden state, and no single replay source. Fix: one writer per entity type; links across stores.
Trellis as CRM / app database
Modeling every Salesforce opportunity as EAV facts "so it's all one graph." Fix: MCP/integration reads CRM; Trellis stores agent decisions about those records.
KernelBackend on Convex "for convenience"
Blocked by ADR 0039. Vendor becomes real SSoT; sovereignty story breaks. Fix: BaaS for app; Trellis for agents; export if you need migration.
Marketing Trellis as InstantDB killer
Wrong lane; loses on onboarding. Fix: "Use InstantDB for your app. Use Trellis for your agents."
npm install trellis → production browser SaaS
Browser SDK is remote-only. Monetizable browser products need hosted API (Platform, Sprites, or self-host). Fix: see Shipping today.
Migration paths
BaaS → more Trellis
- New domains (issues, agent memory) on Trellis from day one.
- Legacy app stays on BaaS until replaced.
- Export BaaS → batch import to Trellis only when you retire the BaaS write path.
- Never run live bidirectional sync.
Trellis → export for analytics
One-way JSON/JSONL or warehouse ETL. Postgres is a read replica, not the write path.
FAQ
Can I use defineType with Convex?defineType targets Trellis-persisted entities. For Convex, use Convex schemas. Same shape of DX, different store.
Does Trellis Cloud use InstantDB?
Yes — for workspace provisioning, auth tokens, and metering. That is product metadata, not your app's graph kernel (ADR 0040).
Is the engine still open source if Platform is paid?
Yes. Platform is hosted product on open trellis — like GitHub on git.
Related
- Shipping today
- Typed SDK — Trellis-persisted live reads only
- Agent coordination
- Collaboration & Sync
- Realtime (ephemeral)
- Vision — design principles