daptin is a free, open source content management systems (cms) project written in Go and released under LGPL-3.0. It has 1,896 GitHub stars, 122 forks and 28 open issues, and was last pushed 10 hours ago. On this registry it ranks #28 of 47 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available. It gained 2 stars over the last 3 tracked days.

What is daptin?

What it is

Daptin is a self-hosted application server built in Go. It lives in the backend-as-a-service and headless CMS ecosystem, and it organizes behavior around schema files that describe records, fields, relationships, validation, and optional flags. Each configured table becomes a permission-aware JSON:API resource at /api/{entity}, and the server attaches identity, files, automation, integrations, realtime delivery, metering, and protocol surfaces around that runtime.

The concrete problem it addresses is defining a data model once and exposing it through multiple backend surfaces without rebuilding each API, permission rule, storage route, or operational control separately. Daptin records much of its capability as ordinary data, with rows in tables such as action, task, smd, cloud_store, site, integration, llm_provider, and api_plan telling the server what to execute or expose.

Key capabilities

  • Define resources in YAML or JSON schema files, with 41 column types, relations and joins, composite keys, validation and conformation, translations, audit, state, and metering flags.
  • Expose configured tables as JSON:API resources with CRUD operations, relationships, filtering, sorting, and pagination, plus a separate aggregation API, optional GraphQL, OpenAPI, metadata, and JavaScript model discovery routes.
  • Manage identity and access through users, groups, ownership, table, row, relation, and action permissions, JWT login flows, OTP, OAuth client connections, and OAuth 2/OIDC provider endpoints with JWKS.
  • Configure automation and operations as data by using system tables such as action, task, smd, cloud_store, site, integration, llm_provider, and api_plan for actions, schedules, storage, integrations, mail, and plans.
  • Attach realtime, files, storage, feeds, LLM routes, and built-in protocol surfaces around the same resource runtime.

Who uses it and how

  • Developers can evaluate Daptin locally with Docker, using the daptin/daptin:latest image and a Compose stack that binds Daptin to 127.0.0.1:6336 while keeping PostgreSQL private.
  • Linux users can download the latest release binary, run it on port 6336, open http://localhost:6336, and create the first administrator.
  • Kubernetes operators can follow the Kustomize deployment guide.
  • Teams can define their model in schema files and use JSON:API, GraphQL, WebSockets, feeds, files, OAuth/OIDC, LLM routes, and built-in protocols from one runtime.

Getting started

Daptin can be run with Docker using the daptin/daptin:latest image, with a Docker Compose stack for PostgreSQL-backed local evaluation, as a Linux binary, or through a Kubernetes Kustomize deployment.

When to use it — and when not to

Daptin suits self-hosters who want one schema to generate multiple API, identity, automation, and protocol surfaces, but it requires operating PostgreSQL, asset storage, mail, and permission configuration rather than relying on a hosted backend. The use of schema files and system tables gives flexibility, but adopters must configure, secure, and maintain those data-driven surfaces. The listed 28 open issues and missing contributor count are facts to consider before production adoption.

project readme (upstream, from github) — read inline
Daptin logo

Daptin

A self-hosted application server built around your data model.

Define resources once. Daptin runs their APIs, identity, permissions, files, automation, integrations, realtime delivery, and operational controls.

Latest release License: LGPL v3 Go Report Discord

Website · Quickstart · Feature map · Automation explained · Documentation


One model, many backend surfaces

Daptin loads schema files into its runtime configuration. Each configured table is recorded as world metadata and becomes a permission-aware JSON:API resource at /api/{entity}. The running server attaches its other API, automation, storage, integration, and protocol surfaces around that resource runtime.

Many capabilities are configured as ordinary data. Rows in tables such as action, task, smd, cloud_store, site, integration, llm_provider, and api_plan tell the running server what to execute or expose.

Part Plain-English meaning
Schema Describes the records, fields, relationships, validation, and optional behavior flags your application needs.
Resource runtime Turns every configured table into stored data plus CRUD and relationship APIs.
Permission gates Check access to the table, individual row, relation, or action before work is performed.
System tables Configure Daptin itself—actions, schedules, state definitions, storage, sites, integrations, mail, plans, and more.
Attached surfaces Expose the same model through JSON:API, optional GraphQL, WebSockets, feeds, files, OAuth/OIDC, LLM routes, and built-in protocols.

Read the source-oriented application server feature map for the runtime components behind this diagram.

Start in a minute

Docker

docker run --pull=always --rm -p 127.0.0.1:6336:8080 daptin/daptin:latest

For a durable local stack with PostgreSQL:

cp .env.example .env
docker compose up --wait

The Compose stack binds Daptin only to 127.0.0.1:6336 and keeps PostgreSQL inside its private network. Database and asset data are stored in named volumes. Change the development password in .env before using the stack beyond local evaluation. Kubernetes users should start with the Kustomize deployment guide.

Linux binary

curl -L -o daptin https://github.com/daptin/daptin/releases/latest/download/daptin-linux-amd64
chmod +x daptin
./daptin -port=6336

Open http://localhost:6336, create the first administrator, and continue with the Getting Started Guide.

The complete feature map

The table below groups the implemented surface by responsibility.

Capability What Daptin provides Learn more
Schema and data runtime YAML or JSON schema; 41 column types; relations and joins; composite keys; validation and conformation; translations; audit, state, and metering flags; import, export, and generated test data. Core concepts · Relationships · Validation
APIs and discovery JSON:API CRUD and relationships with filtering, sorting, and pagination; a separate aggregation API; optional GraphQL queries, mutations, and actions; OpenAPI, metadata, and JavaScript model discovery routes. API overview · GET reference · GraphQL
Identity and permissions Users, groups, ownership, default and access groups; table, row, relation, and action permissions; JWT login flows and OTP; OAuth client connections; OAuth 2/OIDC provider endpoints and JWKS. Permissions · OAuth authentication · OAuth provider
Actions and orchestration Actions with inputs, validation, conformations, conditions, ordered outcomes, CRUD steps, Go performers, client responses, and chained work; scheduled action invocation; state tracking; data exchange. Actions overview · Action reference · Task scheduling
Files, sites, and templates Encrypted credentials; rclone-backed local or cloud stores; asset columns and uploads; direct and presigned file flows; caching, ETags, gzip, and storage sync; sites, subsites, host/path routing, and Go templates. Cloud storage · Asset columns · Subsites · Templates
Realtime and protocols CRUD events over Olric PubSub and /live WebSockets; topic permissions and optional YJS collaboration; streams and RSS/Atom/JSON feeds; HTTP(S), SMTP/IMAP, FTP/FTPS, and WebDAV-style CalDAV/CardDAV routes. WebSocket API · Feeds · FTP server
Integrations and LLM routing OpenAPI v2/v3 operations installed as Daptin actions; REST, GraphQL, short-lived WebSocket, and unary gRPC transports; OAuth or custom credentials; multi-deployment LLM routing with OpenAI-compatible chat, Responses, embeddings, image generation, model discovery, streaming, tools, and structured output. The normalized three-resource gateway is available from v0.13.0. Integrations · LLM gateway · Compose example
Metering, clustering, and operations Plans, memberships, usage, quotas, credit hooks, and rate limits; metering for CRUD, actions, and LLM tokens; Olric cache, PubSub, counters, clustering, and outbox deduplication; audit logs, TLS, ping, statistics, config, logs, and profiles. API metering · Clustering · Audit logging · Production

Protocol scope: Daptin’s CalDAV/CardDAV routes provide basic WebDAV-style file storage. They are not documented as complete calendar/contact protocol implementations.

A small schema becomes a permission-aware API

Place schema_product.yaml beside the Daptin binary:

Tables:
  - TableName: product
    Columns:
      - Name: name
        DataType: varchar(200)
        ColumnType: label
        IsIndexed: true
      - Name: price
        DataType: float
        ColumnType: measurement
      - Name: published
        DataType: bool
        ColumnType: truefalse
        DefaultValue: "false"

When Daptin starts, it creates the table and exposes the resource through JSON:API:

GET    /api/product
POST   /api/product
PATCH  /api/product/{reference_id}
DELETE /api/product/{reference_id}

The shared middleware checks table and row access, validates and conforms data, applies metering when configured, and publishes successful CRUD events. Optional GraphQL, /openapi.yaml, /meta, and /jsmodel/{typename} expose additional ways to query or discover the same model.

Add [relations](https://github.com/

readme truncated — read the full docs on github

Frequently asked questions

Is daptin free to use?

daptin is open source under the LGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does daptin do?

Self-hosted application server for schema-driven APIs, identity, files, automation, integrations, realtime, metering, and protocols.

What is daptin written in?

daptin is primarily written in Go. Its source is publicly available at https://github.com/daptin/daptin, and it has 1,896 GitHub stars.