An Appwrite alternative that runs in one container
Want an Appwrite alternative in one container? Kanesh is a self-hosted data backend in a single image of about 8.9 MB, with REST, GraphQL and MCP.
If you only need the data layer of a backend, Kanesh is an Appwrite alternative that runs as one container instead of a multi-container stack. It gives you collections, REST, GraphQL and MCP in an image of about 8.9 MB. It does not replace Appwrite’s auth providers, functions or realtime, so it fits when your app needs data and not the rest.
What Appwrite offers
Appwrite is a backend platform under the BSD-3-Clause license. You self-host it with a multi-container Docker Compose setup, and one instance can run many projects. It covers authentication, storage, functions and realtime in addition to databases. If you want those services from one platform, Appwrite is built for it.
The trade-off is the size of the stack. More services mean more containers to start, update, back up and watch on a small server.
When one container is enough
Check how many of these describe your project:
- The app needs tables, relations and an API, and little else from the backend.
- Your frontend or your own service handles user-facing sign-in.
- You want to bring your own SQL database, or keep SQLite on one machine.
- You host several small projects and do not want a stack per project.
- You want agents to read your data over MCP with the same permissions as people.
If most of those are true, a single container is easier to operate.
How the Kanesh container works
Kanesh is one Go binary with the Studio embedded. There is no Node server at runtime. The image is about 8.9 MB (arm64, measured 2026-10-04) and idled under 10 MiB of memory in a local smoke test, which is not a benchmark. You build the image from the repository with docker build -t kanesh . and run it:
docker run --name kanesh -p 127.0.0.1:8080:8080 -v kanesh-data:/data kanesh SQLite is the default, and the data lives in the kanesh-data volume. To use PostgreSQL or MySQL instead, set DATABASE_DRIVER and DATABASE_URL. If the database you chose cannot be reached, Kanesh stops instead of falling back to SQLite. See database setup.
Appwrite and Kanesh side by side
| Kanesh | Appwrite | |
|---|---|---|
| License | AGPL-3.0 core; 1 workspace free, unlimited workspaces + AI assistant $9/month per install | BSD-3-Clause |
| Self-host shape | One container, about 8.9 MB | Multi-container Docker Compose stack |
| Projects per install | Many independent workspaces | Many projects per instance |
| Services | Data, REST, GraphQL, OpenAPI 3.1 export, MCP | Auth, storage, functions, realtime |
| Databases | SQLite, PostgreSQL, MySQL | Not compared here |
| Maturity | New, first stable release | Production platform |
What you give up
Kanesh has no realtime, no OAuth or SSO, no workflows and no hooks. Realtime, OAuth or SSO sign-in and workflows are on the roadmap. There are no SDKs yet, so your client calls REST or GraphQL directly. If your app depends on any of these, Appwrite is the better match today.
FAQ
Can Kanesh replace Appwrite?
Only if you use Appwrite for its database and APIs. Kanesh covers collections, relations, REST, GraphQL, OpenAPI export, import and export, roles and MCP. It does not cover OAuth providers, functions or realtime.
How much memory does the Kanesh container use?
In a local smoke test, Kanesh idled under 10 MiB of memory with an image of about 8.9 MB on arm64. That is a single measurement, not a benchmark, and it excludes any external database server you choose, such as PostgreSQL.
Can one Kanesh container serve several projects?
Yes. One install holds many independent workspaces. One workspace is free, and unlimited workspaces need a Pro license at $9 per month per install (see pricing). Each has its own schema, members, roles, REST and GraphQL API and MCP endpoint. Appwrite also supports many projects per instance. The difference is the number of containers you run to get there. See the post on multi-tenant backends.
Next steps
Start with Getting started, or read the full Kanesh vs Appwrite comparison.


