Skip to content

Multi-tenant vs single

The SyncBins server supports two deployment modes, selected by TENANT_MODE:

single (default)multi
AudienceSelf-hosters, homelabHosted syncbins.com, small SaaS operators
VaultsOne (tenant_id = default)One per subdomain (gavin.syncbins.com)
SignupFirst device to finish onboarding claims the serverPOST /api/signup on apex domain
BillingOffOptional Stripe (STRIPE_BILLING_ENABLED)
TLSOne hostname in CaddyWildcard + on-demand certs via /api/tls-check

Both modes run the same Fastify + React binary. Only environment and DNS differ.

Single-tenant (what most self-hosters want)

Section titled “Single-tenant (what most self-hosters want)”
  • All data lives in one SQLite file (SQLITE_PATH, default ./data/syncbins.db).
  • Blob storage is one prefix (LOCAL_BLOB_DIR or one bucket).
  • No subdomain routing — your DOMAIN points straight at the box.
  • STORAGE_CAP_BYTES=0 means unlimited quota (default).

If you only need SyncBins for yourself (or one household), stay here. Running two single-tenant instances on two domains is often simpler than multi-tenant.

  • Still one SQLite database — rows are scoped by tenant_id on devices, items, bins, etc. (not separate DB files per user).
  • Hostname middleware resolves slug.BASE_DOMAIN → tenant row. Unknown slug → 404. Inactive subscription → 402 after grace period.
  • Caddy on-demand TLS asks GET /api/tls-check?domain=slug.syncbins.com before issuing a cert (prevents LE abuse).
  • Stripe webhooks update tenant active / grace_until when billing is enabled.

Each tenant is still one user with one recovery phrase — no orgs, no shared bins, no multi-user vaults.

  • End-to-end encryption model (server sees ciphertext + metadata only).
  • Device pairing handshake.
  • WebSocket + REST sync protocol.
  • Content types and MCP integration.
You want…Use
A box for me on box.example.comTENANT_MODE=single
syncbins.com with {name}.syncbins.com signupsTENANT_MODE=multi + Stripe vars
Two unrelated people, minimal opsTwo single-tenant servers, not one multi-tenant