Skip to content

Features

One binary, the whole content platform

Tess bundles the API, the admin UI and the business rules. Pick your database, your media store and your hosting.

All features

  • Models at runtime

    Create content types in the admin or through the API, in production. The GraphQL schema is regenerated on the fly: no rebuild, no redeploy.

  • GraphQL-first

    Typed queries, filters, sorting, pagination, relations and mutations generated for every model, with a GraphiQL IDE built in.

  • Your database

    PostgreSQL, MySQL, SQLite, MongoDB, DynamoDB or embedded RocksDB. Every backend passes the same conformance suite.

  • Review workflows

    Draft and publish for every entry, plus an optional submit → approve workflow per content type, in every edition.

  • Roles and scoped tokens

    Owner, Admin, Contributor, Reviewer and Member roles, limited to some content types if needed, and scoped API tokens for machines.

  • Sandboxed plugins

    WebAssembly plugins installed by admins at runtime, written in Rust, Go, JavaScript and more, with timeouts and memory limits.

  • Serverless or container

    One binary runs as an HTTP server (Docker, VM, Kubernetes) or as an AWS Lambda function.

  • Media library

    Uploads to S3-compatible stores (Garage, MinIO, AWS S3, Cloudflare R2) or the local filesystem, with direct presigned uploads.

  • Full-text search

    Typesense indexing kept in sync with your content, behind a pluggable search engine interface.

  • Private by design

    Opaque, expiring, encrypted ids in the API: database ids never leave the server.

  • AI agents welcome

    A built-in MCP endpoint lets AI agents read the schema and query or edit content, with the same permissions as the API.

  • Portable models

    tess-transfer exports content models and users to YAML or JSON, to version them or copy them between instances.

Field types

TEXT (length bounds, regex format), MARKDOWN (raw HTML refused), INT, FLOAT, BOOLEAN, DATETIME, DATE, UUID, PASSWORD (hashed, write-only), JSON, ENUM, RELATION (single or many), COMPONENT (reusable field groups, single or repeatable) and DYNAMIC_ZONE (a list mixing components). This website's pages are built with dynamic zones.

See it on your machine

The quick start takes a few minutes, with Docker or without.