Platform CLI Use cases
Learn
Developer docs User guide Quickstart CLI and AI agents Blog
Company
Services About Contact Links Get started
The platform

A complete CMS in one small app

Raytha is a .NET 10 and PostgreSQL application that gives you a content model, a template engine, a headless API and a scripting runtime. No plugins to chase, no services to wire together.

Capabilities

Everything you reach for, already built

Each part works on its own and fits with the others. Use the whole stack, or only the pieces you need.

User-defined content types

Model posts, products, events or anything else. Fields, relationships, validation and list views are configured in the admin, with no migrations.

textrich textdropdowncheckboxdatenumberfilerelationshiprepeater

Headless REST API

Every content type is available over a versioned REST API with filtering, sorting and paging.

GET /raytha/api/v1/ ContentItems/products ?filter=IsPublished eq 'true'

Liquid template engine

Layouts, partial views and detail pages in Liquid. Edit live in the admin or keep them in git.

Layout
List view
Detail view
Widget template

Site pages and widgets

Compose pages from widgets with settings forms that editors can use without touching code.

Hero
Features
Posts
Call to action

JavaScript functions

Serve custom routes, render Liquid helpers or react to content events with sandboxed JavaScript.

Roles and single sign-on

Role-based access control for admins, and separate public users with SAML and JWT SSO.

RBACSAMLJWTAPI keys

Revisions and audit logs

Every change is tracked, so you can see who did what and roll back.

Draft saved
Published
Edited
Restored

Media library

Upload and serve files and images, local or cloud-backed.

Content modeling

Define the shape, get the rest for free

Create a content type, add fields, and Raytha produces the editing UI, the list views and the REST endpoints. Change the model later and your existing content keeps working.

  • Built-in field types for text, numbers, dates, files and relationships
  • Saved views with filters, sorting and a public URL
  • Draft and published versions of every item
  • Import and export for bulk changes

Content types guide

{
  "items": [{
    "id": "nFjCbLwc0ucKN8BdJGOzg",
    "routePath": "release-of-v143",
    "publishedContent": {
      "title": "Release of v1.4.3",
      "author": "zack-schwartz"
    }
  }],
  "totalCount": 67
}
Templates

Design with Liquid, not a page builder maze

Templates are plain Liquid with access to your content, your users and a set of helpers. Compose layouts and partials, bind a template to a view, and publish.

  • Layout inheritance with a single renderbody tag
  • Content-aware templates for lists and detail pages
  • Widget templates for reusable blocks
  • Pull, edit and push whole themes with the CLI

Template docs

<article>
  <h1>{{ Target.PrimaryField }}</h1>
  <time>{{ Target.CreationTime | organization_time: "%B %e, %Y" }}</time>
  {{ Target.PublishedContent.content.Value }}
</article>
Functions

Custom behavior without forking the app

Write JavaScript that runs inside Raytha. Return JSON, XML or text at any route, expose helpers to your templates, or react when content is created or changed.

  • HTTP request functions at routes you choose
  • Liquid template functions callable from your pages
  • Content event triggers
  • Access to the same API your front end uses

Functions docs

const res = API_V1.GetContentItems("posts", "", "", "", "", 1, 100);
const urls = res.Result.Items.map(i =>
  `<url><loc>${SITE}/${i.RoutePath}</loc></url>`);
return XmlResult(`<urlset>${urls.join("")}</urlset>`);
CLI and AI agents

A command line that agents can drive

The raytha CLI manages the whole site through JSON: themes as files, content types, content, pages, menus, media and functions. Its manual ships inside the binary, so a coding agent can install it, read raytha guide build-a-site, and build a complete site from a brief.

  • One JSON document and a stable exit code per command
  • Dry-run theme pushes with line-and-column Liquid errors
  • raytha check requests every public route
  • The API key is the permission boundary

Meet the CLI

curl -fsSL https://raytha.com/cli/install.sh | sh
export RAYTHA_URL=https://your-site.example.com
export RAYTHA_API_KEY=your-key
raytha doctor
raytha guide build-a-site
For teams

Built for editors and for operations

A CMS is only useful if the whole team can work in it safely.

Roles and permissions

Give each administrator exactly the content types and settings they need.

Public users and SSO

Run member areas with their own accounts, user groups, SAML or JWT sign-in.

History you can trust

Revisions for content and templates, and audit logs for administrative actions.

Install

Choose how you run it

Raytha is self-hosted. Railway is the quickest way to a running site; Docker and source builds work anywhere.

Recommended

Railway

One click deploys Raytha with PostgreSQL, a domain and TLS. The recommended way to install.

Deploy on Railway

Docker

Run the published image anywhere you have Docker, pointing it at your own PostgreSQL.

$docker run -p 8080:8080 raythahq/raytha

From source

Clone the repository, build with the .NET 10 SDK and run it like any ASP.NET app.

View on GitHub

Build your next site on Raytha

Deploy in minutes. Own your content and your code.