The whole backend, without the ops
The advantages compound the moment you stop building infrastructure.
Price, operations, reliability, flexibility, and the freedom to customize without losing stability. You inherit it on the same backend model used for real revenue work.
Price
You get the graph8 revenue backend, CDP, ClickHouse warehouse, OpenSearch, enrichment, dialer, email, and engage, for a fraction of building and running it yourself. Standing up your own would be millions and many months. On shared infrastructure it is a subscription.
Maintenance, zero ops
graph8 runs the upgrades, scaling, security patching, deliverability, provider integrations, and data refreshes. You build product, not pipelines. There is no on-call rotation for the data layer.
Reliability
You inherit battle-tested multi-tenant infrastructure already running real revenue workloads, with monitoring, audit logs, and rate limiting built in. It is day-one stability you could not build on day one.
Complete flexibility
Plug your org into the hosted front end and use the full app immediately with your own data. Then replace or extend any surface with your own components and UI on the same backend, with no migration. Start hosted, end fully custom, at your pace.
Best of both worlds
Full customization and full stability. Run the stable hosted product for the 80 percent that is standard, and build custom for the 20 percent that is your differentiator. You never trade reliability for control.
Shared by default. That is the price engine.
graph8 runs shared multi-tenant infrastructure with a hard isolation boundary per workspace. Each customer org is its own logical environment. That sharing is exactly why preview access does not need a dedicated rebuild.
We are honest about this on purpose. You are not paying for idle dedicated metal you do not need yet. When compliance, residency, or performance isolation makes dedicated the right call, the door is right there.
Workspace isolation
Every customer org is its own logical environment. A hard tenant boundary scopes every read, write, and query to the workspace that owns the key.
Tenant-scoped keys
Admin keys manage the workspace. Per-source write keys are scoped to a single destination, so a leaked ingest key cannot read your pipeline.
Per-workspace audit logs
Every key, query, and config change is recorded against the workspace that made it. Export the full trail over the API.
Access your data, four ways.
A ladder from convenience to control. Start with the SDK, drop to structured queries, reach for raw SQL when you need it, or sync the whole thing to your own warehouse.
REST API + SDKs
Scoped reads and writes over contacts, companies, deals, campaigns, and more. Typed clients for TypeScript, Python, Go, and Java, all generated from the same OpenAPI spec.
Query API
A safe, shaped analytics endpoint over your CDP and ClickHouse data. Express select, filter, group, and aggregate as JSON. No SQL parsing surface, no injection risk.
Raw SQL
For developers who want full control. Tenant-scoped, read-only SQL over your own data slice, with row and statement limits enforced server-side. Unrestricted and write workloads run on a dedicated warehouse.
Sync to your warehouse
Reverse ETL to ClickHouse, Snowflake, Redshift, BigQuery, Postgres, MySQL, Databricks, or MotherDuck. Keep graph8 as system of record and mirror to your warehouse for unlimited manipulation.
curl "$GRAPH8_API_BASE/v1/contacts?title=VP+Sales" \ -H "Authorization: Bearer $GRAPH8_API_KEY" \ -H "X-Org-Id: $GRAPH8_WORKSPACE_ID" POST /v1/query { "from": "contacts", "select": ["company_id", "count()"], "filter": { "field": "last_activity_at", "op": "gte", "value": "2026-06-01" }, "group_by": ["company_id"], "order_by": [{ "field": "count()", "dir": "desc" }], "limit": 100} POST /v1/query/sql { "sql": "SELECT company_id, count(*) AS touches FROM contacts WHERE last_activity_at >= now() - INTERVAL 30 DAY GROUP BY company_id ORDER BY touches DESC LIMIT 100"} // read-only, scoped to your workspace// row + statement limits enforced server-side POST /v1/destinations { "type": "snowflake", "name": "analytics-mirror", "mode": "reverse_etl", "schedule": "every 15m", "objects": ["contacts", "companies", "deals"], "config": { "account": "xy12345.us-east-1", "database": "GRAPH8", "warehouse": "INGEST_WH" }} Raw SQL is read-only and scoped to your workspace. Unrestricted and write workloads run on a dedicated warehouse, covered next.
When shared is not enough.
For compliance, data residency, or performance isolation, move your workspace onto dedicated infrastructure. It is sales-led, not the default. Write-level and unrestricted SQL and isolated compute live here.
Dedicated ClickHouse
Your own analytics cluster, isolated compute and storage, sized to your query volume.
Isolated application database
A physically separate application database for your workspace, not a logical tenant on the shared core.
Dedicated region
Pin your data to the US or EU for residency and latency. Compliance teams get a clear answer.
Write-level + unrestricted SQL
Full read-write SQL and isolated compute live here, where one workload cannot contend with another tenant.
SLAs
Uptime, support response, and incident commitments backed by contract.
Performance isolation
No noisy-neighbor effect. Your latency profile is yours alone.
Same custom frontend. You choose who runs the servers.
You build and customize your entire frontend either way. Hosting is only about where that frontend runs. graph8 is the backend in both cases, and there is no migration when you switch.
Hosting does not change how much you build. Both options run your own fully custom frontend. The only difference is whether you run the servers or we do.
Host it yourself
your serversDeploy your fully custom frontend on your own infrastructure (Vercel, your own stack). You own the deploy pipeline. graph8 is the backend.
- Your fully custom frontend
- Deploy on Vercel or your own stack
- You own the deploy pipeline
- Your brand, your latency, your domain
Servers
You run it
Host with graph8
managed deployPush that same fully custom frontend to graph8 cloud and we run it for you. Same fully custom app, you just do not manage the servers.
- The same fully custom frontend
- Managed deploy of your app
- Automatic scaling, TLS, and CDN
- Zero infra to manage
Servers
We run it
White label
Add-onBring your own domain and logo, applied to either the graph8 hosted product or your own app, so every surface is fully branded to your users. White label is an add-on, not a hosting mode. It layers on top of whichever deploy option you pick above.
Do not want to build a frontend at all? Use the graph8 hosted product as-is and skip the deploy entirely. See the adoption levels.
The full backend, as primitives.
Everything underneath the apps you already know, exposed as building blocks you can wire together however your product needs.
Authentication
Sessions, tokens, SSO-ready.
Organizations + Workspaces
The isolation boundary.
Permissions
Role and scope enforcement.
API Keys
Admin keys + per-source write keys.
Secrets
Encrypted credential storage.
Webhooks
Signed, retried, replayable.
Events
A platform event firehose.
Storage
Object storage for files and assets.
Usage + Billing
Metered usage, per workspace.
Rate Limits
Per-key, fair-share quotas.
Audit Logs
Every action, per workspace.
AI Memory
Durable context for agents.
Agent Runtime
Durable, tool-using execution.
Data Warehouse
CDP + ClickHouse, queryable.
Destinations
Reverse ETL to your warehouse.
Pipelines
Ingest from any source.
Honest about shared versus dedicated.
Self-serve plans
Shared infrastructure, scoped API, SDK, and MCP access, the structured Query API, and sync to your own warehouse. Production access is approved workspace by workspace.
Enterprise add-ons
Dedicated infrastructure, managed hosting, data residency, write-level SQL, and SLAs. Sales-led, added when your requirements call for it.