Cloud vs Self-host
What's open source, what the cloud adds, and how to choose.
ThinkingRoot is open-core. The cognition engine is open source and you can run it yourself; the cloud is a managed, multi-tenant home for that same engine. Nothing about the engine is held back — the cloud's value is operating it for you, safely, for many tenants.
The split
| Open source (run it yourself) | Cloud adds |
|---|---|
| The engine — compile, query, branch, health | Gateway — one authenticated entry point (dual-mode auth) |
root serve — the self-hostable daemon | Provisioner — one isolated engine per project, lifecycle + GC |
The root CLI and the desktop app | Secrets vault — sealed-box encryption, inject at spawn |
| Language SDKs | Console — projects, playground, connectors, usage |
| Root Functions, Compiled Prompts, JIT, streaming branches | Egress allowlist, billing & metering, team/orgs |
The engine is the only per-tenant isolation boundary, so capabilities that must be isolated (the Root Function executor, the branch engine) live in the engine, not the cloud. The cloud monetises the vault, UI, firewall, and metered access — not the engine.
Why the engine runs as a separate process
A hard technical constraint shapes the architecture: the engine and the cloud
control plane both depend on a global links="sqlite3" slot (the engine via its
graph store, the control plane via Postgres tooling). Cargo refuses two such
crates in one binary, so the engine cannot be linked in-process. It runs as
its own container/daemon, and the cloud talks to it over HTTP (REST + MCP). This
is also exactly what makes per-project isolation clean — see
Isolation.
Which should I use?
Use the cloud when…
You want zero ops: provisioning, isolation, secrets, billing, and the Console handled for you — and you want to ship a product, not run infrastructure.
Self-host when…
You need full data residency/air-gap, you're embedding the engine in a desktop or on-prem product, or you just want the open-source engine on your own box.
No lock-in by construction
Because the cloud is a hosted front for the open-source engine, code you write
against a self-hosted root serve works against a cloud project unchanged —
point it at the gateway and swap the loopback key for a tr_sk_… key.