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 DBWrapped C engineManaged instanceSelf-hosted PG
ARCHUnit of a backendA task over a timeline (KBs)An OS process (~10–30MB)An OS process (~10–30MB)An OS process (~10–30MB)
ARCHEngine ownershipWhole engine, pure RustC engine + external servicesUnmodified C engineUnmodified C engine
ARCHBackend density per nodeMillions (task math)Limited by processesLimited by processesLimited by processes
COREBackend per user / agent / test / PRNative — the pointPer-instance orchestrationPer-instance orchestrationManual
COREBranchingIn-core, metadata writeExternal service coordinationSnapshot/restore machinerydump/restore
COREScale to zeroNative — tasks dropCompute parks, surface stays upMinimum capacity billingThe server is always on
COREBottomless object storageThe only storage modelVia external page servicesProvisioned volumesLocal disks
CORETime travel / restoreBranch from any point, msDepends on external layersRestore windows, minutes–hoursBackup discipline
ARCHConnection limits / poolersNone — connections are tasksPooler in frontPooler in frontPooler in front
ARCHOffline syncNative — offline is a branchSeparate sync productSeparate sync productSeparate sync product
COSTCost of an idle backendMetadata + cold bytesReduced, not zeroInstance minimumsFull server cost
COSTCost of one more backend~$0 (copy-on-write)New branch/instance overheadNew instanceNew server
OPSMemory safety of the engineSafe Rust, no unsafeC coreC coreC core
THE STRUCTURAL ARGUMENT

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.