Why owning the engine changes everything
Trubase isn't another way to host Postgres. Trubase DB is Postgres rebuilt from scratch in pure Rust on Tokio, so the backend lifecycle lives inside the engine. Here's what that changes.
| Trubase DB | Wrapped C engine | Managed instance | Self-hosted PG | |
|---|---|---|---|---|
| ARCHUnit of a backend | A task over a timeline (KBs) | An OS process (~10–30MB) | An OS process (~10–30MB) | An OS process (~10–30MB) |
| ARCHEngine ownership | Whole engine, pure Rust | C engine + external services | Unmodified C engine | Unmodified C engine |
| ARCHBackend density per node | Millions (task math) | Limited by processes | Limited by processes | Limited by processes |
| COREBackend per user / agent / test / PR | Native — the point | Per-instance orchestration | Per-instance orchestration | Manual |
| COREBranching | In-core, metadata write | External service coordination | Snapshot/restore machinery | dump/restore |
| COREScale to zero | Native — tasks drop | Compute parks, surface stays up | Minimum capacity billing | The server is always on |
| COREBottomless object storage | The only storage model | Via external page services | Provisioned volumes | Local disks |
| CORETime travel / restore | Branch from any point, ms | Depends on external layers | Restore windows, minutes–hours | Backup discipline |
| ARCHConnection limits / poolers | None — connections are tasks | Pooler in front | Pooler in front | Pooler in front |
| ARCHOffline sync | Native — offline is a branch | Separate sync product | Separate sync product | Separate sync product |
| COSTCost of an idle backend | Metadata + cold bytes | Reduced, not zero | Instance minimums | Full server cost |
| COSTCost of one more backend | ~$0 (copy-on-write) | New branch/instance overhead | New instance | New server |
| OPSMemory safety of the engine | Safe Rust, no unsafe | C core | C core | C core |
Why wrapping the C engine can't get here
The process model is load-bearing
The C engine assumes one OS process per connection: fork(), shared memory segments, blocking I/O, globals in every subsystem. A backend can only weigh kilobytes if the engine itself thinks in tasks — and that means owning every line of the engine.
Bolt-on branching is orchestration, not a primitive
Platforms that added branching had to do it from outside — external page services, control planes, coordination protocols. In Trubase DB, a branch is a timeline: minting one is a metadata write inside the engine, milliseconds, no coordination.
The whole backend must sleep, not just the database
When queues, realtime, functions, and auth run as separate always-on services around the database, the stack never sleeps. In Trubase DB every primitive is a projection of the same log, timeline, and task, so the entire backend suspends as one.
Compatibility is a number, not an adjective
Trubase DB is developed against PostgreSQL's own 200,000-test suite with the pass rate published as a public scoreboard. The claim never exceeds the number, and anyone can run the harness.