Blog

A multi-tenant backend: one install, many workspaces

Need a multi-tenant backend that serves many clients from one install? Kanesh gives each workspace its own schema, members, roles, API and MCP endpoint.

A multi-tenant backend serves several clients or products from one installation while keeping their data, users and permissions apart. In Kanesh, each workspace has its own schema, members, roles, REST and GraphQL API and MCP endpoint, so a new client is a new workspace, not a new server. One workspace per install is free, and unlimited workspaces cost $9 per month per install.

Two meanings of multi-tenant

The term covers two designs, and they suit different problems.

  • Shared schema. One set of tables with a tenant column on every row. Your own code must filter by tenant on every query.
  • Separate workspaces. Each tenant gets its own schema, members and permissions inside one install.

Kanesh does the second. Workspaces are independent projects that happen to run in the same process. That fits an agency with several clients, a team with one tool per department, or a developer with several side projects. It is not a row-level tenant filter inside one schema.

What each workspace contains

PartWhat is separate
SchemaCollections, fields, relations and indexes
MembersWho can sign in to the workspace
RolesOwner, Administrator, Editor, Viewer and Public, plus up to 20 custom roles and 50 policies
APIREST, GraphQL and an OpenAPI 3.1 export for that schema
MCPOne opt-in, read-only endpoint per workspace

Every request carries the workspace in its path, so two clients never share an endpoint:

GET /api/v1/workspaces/WORKSPACE_ID/collections/orders/records

Permissions are set per workspace. Personal API tokens act as the user who created them, so a token only reaches what that user can reach. Access control applies the same way to Studio, REST, GraphQL and MCP. See access control.

Why this saves operating work

With a server per client you maintain one container, one database, one backup job and one set of upgrades for each. With workspaces you maintain one of each. Kanesh is one Go binary with the Studio embedded, in an image of about 8.9 MB (arm64, measured 2026-10-04), and it idled under 10 MiB of memory in a local smoke test. That is not a benchmark, and it does not include your data or an external database.

The next client is a workspace in Studio. The owner adds members and gives each one a role for that workspace.

Workspaces compared

KaneshPocketBaseAppwrite
Projects per installMany independent workspacesOne app per instanceMany projects per instance
Self-host shapeOne containerSingle executableMulti-container Docker Compose stack
DatabasesSQLite, PostgreSQL, MySQLEmbedded SQLiteNot compared here

What many workspaces cost

One workspace per install is free, with every core feature included. To run unlimited workspaces in one install you need Pro, a flat $9 per month per install with no per-seat charges. Pro also includes the in-Studio AI assistant, which is still in development. The Kanesh core is AGPL-3.0, and the Pro code in ee/ is under the Kanesh Commercial License (draft). If a key expires, extra workspaces become read-only and nothing is deleted. See pricing.

Limits to know

An install is configured with one database, so all its workspaces share that database server. The separation is logical, with its own schema, members and roles per workspace. If a client needs a separate database server or hard infrastructure isolation, run a separate install for them.

There is one owner per installation, and ownership can be transferred. Give clients the Administrator or Editor role inside their own workspace. If you expect many tenants that all share the same schema, model the tenant as a collection and enforce it in your own service instead.

Kanesh also has no realtime, OAuth or SSO, workflows or SDKs yet. Realtime, OAuth or SSO sign-in and workflows are on the roadmap.

FAQ

What is a multi-tenant backend?

It is a backend that serves more than one customer, team or product from the same installation while keeping their data and permissions separate. Designs range from one shared schema with a tenant column to separate schemas per tenant. Kanesh uses separate workspaces.

Does each workspace have its own API and MCP endpoint?

Yes. Each workspace has its own REST and GraphQL API, its own OpenAPI export and, when MCP_ENABLED=true, its own read-only MCP endpoint. Tokens carry the permissions of the user who created them.

Can I move a workspace to another install later?

You can export records as bounded CSV or JSON and import them into a collection on another install. Recreate the collections and field types first. Test with a small collection before you rely on it for a client.

Next steps

Create your first workspace with Getting started. To see how a one-app-per-instance backend differs, read Kanesh vs PocketBase.

Buy me a coffee