# Lumbung > Self-hosted SQLite databases with branches. One server holds many databases, each with branches, reached through a REST API, a TypeScript SDK, a CLI, MCP and a dashboard. ## Docs - [What is Lumbung](https://lumbung.zakiego.com/docs.md): A self-hosted server for many SQLite databases, each with branches. - [Changelog](https://lumbung.zakiego.com/docs/changelog.md): What changed in each version of Lumbung. - [Branches](https://lumbung.zakiego.com/docs/concepts/branches.md): Branches are full copies of a database you can change without touching the default branch. They never merge data back. - [Databases](https://lumbung.zakiego.com/docs/concepts/databases.md): What a database is in Lumbung, how it's named, and what happens when you delete one. - [Limits](https://lumbung.zakiego.com/docs/concepts/limits.md): The limits on statements, results and storage, their defaults, and the error each one returns. - [Security model](https://lumbung.zakiego.com/docs/concepts/security-model.md): How Lumbung keeps one database from reaching another database's files, the engine's own records, or the host. - [Snapshots](https://lumbung.zakiego.com/docs/concepts/snapshots.md): Point-in-time copies of a branch, taken by hand or on a schedule, and restored as a new branch. - [Tokens and scopes](https://lumbung.zakiego.com/docs/concepts/tokens.md): How API tokens look, what each scope and access level allows, and how the dashboard's service token works. - [Use from an AI agent](https://lumbung.zakiego.com/docs/guides/ai-agents.md): Connect an MCP client, such as Claude Code, to Lumbung's /mcp endpoint and give the agent a safely scoped token. - [Back up and restore](https://lumbung.zakiego.com/docs/guides/backup-restore.md): Snapshots for undo inside Lumbung, and lumbungd backup for copies outside it. - [A branch per pull request](https://lumbung.zakiego.com/docs/guides/branch-per-pr.md): Give every pull request its own copy of the database, run its migrations there, and delete it when the pull request closes. - [Use the dashboard](https://lumbung.zakiego.com/docs/guides/dashboard.md): Set up the owner, invite your team with a role, and sign in with a password or a passkey. - [Use with Drizzle](https://lumbung.zakiego.com/docs/guides/drizzle.md): Define a schema in Drizzle, generate migrations with drizzle-kit, apply them with lumbung migrate, and query through @lumbung/client/drizzle. - [Import an existing SQLite file](https://lumbung.zakiego.com/docs/guides/import.md): Bring a SQLite database file or a SQL dump into Lumbung, and download one back out. - [Run migrations](https://lumbung.zakiego.com/docs/guides/migrations.md): Apply a folder of .sql migrations to a branch with lumbung migrate, and test them on a branch first. - [Connect from Next.js](https://lumbung.zakiego.com/docs/guides/nextjs.md): Query Lumbung from Next.js server code with @lumbung/client. - [Connect from Node](https://lumbung.zakiego.com/docs/guides/node.md): Query a Lumbung database from a Node.js app with @lumbung/client. - [Connect from Workers](https://lumbung.zakiego.com/docs/guides/workers.md): Query Lumbung from a Cloudflare Worker with @lumbung/client. - [Install](https://lumbung.zakiego.com/docs/install.md): Run the engine with Docker or as a single binary, and install the lumbung CLI. - [Quickstart](https://lumbung.zakiego.com/docs/quickstart.md): From nothing to a first query in five minutes, with Docker Compose and the lumbung CLI. - [CLI](https://lumbung.zakiego.com/docs/reference/cli.md): Every lumbung command and flag, generated from the CLI's own help. - [Configuration](https://lumbung.zakiego.com/docs/reference/configuration.md): Every lumbungd setting, its environment variable and its default. - [Dashboard configuration](https://lumbung.zakiego.com/docs/reference/dashboard-configuration.md): Every environment variable the dashboard reads, with its default. - [Error codes](https://lumbung.zakiego.com/docs/reference/error-codes.md): Every error code the API returns, with its HTTP status. - [MCP tools](https://lumbung.zakiego.com/docs/reference/mcp-tools.md): Every tool the /mcp endpoint offers, with its inputs and hints, generated from the server. - [REST API](https://lumbung.zakiego.com/docs/reference/rest-api.md): Every endpoint of the Lumbung REST API, generated from its OpenAPI document. - [TypeScript SDK](https://lumbung.zakiego.com/docs/reference/sdk.md): The @lumbung/client API, its options, errors and value types. - [Value encoding](https://lumbung.zakiego.com/docs/reference/value-encoding.md): How SQLite values travel as JSON in requests and responses, without losing precision or type. - [Backups](https://lumbung.zakiego.com/docs/self-hosting/backups.md): Nightly backups with lumbungd backup, keeping copies off the machine, and testing a restore. - [Docker Compose](https://lumbung.zakiego.com/docs/self-hosting/docker-compose.md): Run the engine and the dashboard with the repository's compose.yaml, and operate them with docker compose exec. - [Hardening](https://lumbung.zakiego.com/docs/self-hosting/hardening.md): A checklist for running Lumbung where it matters. - [Monitoring](https://lumbung.zakiego.com/docs/self-hosting/monitoring.md): The health check, per-branch stats, the slow-query log, the audit log and the engine's logs. - [Reverse proxy and TLS](https://lumbung.zakiego.com/docs/self-hosting/reverse-proxy.md): Put Caddy, nginx or a tunnel in front of the engine and the dashboard, and tell them which header carries the client address. - [Upgrades](https://lumbung.zakiego.com/docs/self-hosting/upgrades.md): How lumbungd migrates meta.db, how to upgrade safely, and what a rollback looks like. - [Troubleshooting](https://lumbung.zakiego.com/docs/troubleshooting.md): What common errors mean and what to do about them.