vyasa-cms/vyasa

An AI-native content management system in one Rust binary: block content, themes as data, WebAssembly-sandboxed plugins, a marketplace built in. Docs: vyasa.site/docs · Demo: demo.vyasa.site

Rust

2

57 commits

updated Oct 5, 2026

See the code

See what people are saying

README

Vyasa — a content management system, written in Rust

Vyasa is an AI-native content management system — a fast WordPress alternative written in Rust.

CI Licence: MIT OR Apache-2.0 Latest release

Website · Docs · Live demo · Discussions


Content is stored as structured blocks rather than markup, themes are data rather than code, and plugins run in a WebAssembly sandbox with only the capabilities they declare. One server binary and PostgreSQL are all it needs.

व्यास — vyāsa, from vi + √as, "to divide, to arrange". Veda Vyāsa earned the name by dividing the one Veda into four collections; the word is a title, not a personal name. In Sanskrit grammar vyāsa is also the term for analysis — decomposing a compound into its parts — against samāsa, which composes them back. That is what an editor does in each direction.

Why Vyasa

  • AI built in, not bolted on — writing assistance in the editor, an AI theme studio that designs a site from a description, semantic search and related posts, and an MCP server so AI agents can manage content under the same permissions as a person. Bring your own Anthropic or OpenAI-compatible provider.
  • Block editor — a writing canvas built on ProseMirror, plus a classic field editor. Both read and write the same block document, so a post opens in either.
  • Your content model — create content types and typed fields from the admin (text, number, date, choice, URL, media, links to other entries), with per-type templates and archives.
  • Themes as data — a validated set of design tokens compiled to CSS, with sandboxed templates. A theme can never run code on your server.
  • Sandboxed plugins — WebAssembly components with declared capabilities, checked by a broker on every call. A plugin cannot read what it was not granted.
  • Users and roles — built-in and custom roles, optional public registration with email confirmation, two-factor sign-in, API keys.
  • APIs first — an OpenAPI-documented REST API and a GraphQL API with subscriptions, both behind the same permission checks.

Quick start

With Docker:

mkdir vyasa && cd vyasa
curl -fsSLO https://raw.githubusercontent.com/vyasa-cms/vyasa/main/docker-compose.yml
docker compose run --rm app migrate          # create the database schema
docker compose up -d
docker compose exec app cat .run/setup-token # the one-time setup token

Open http://localhost:3000/admin/setup, enter the token, and create the first administrator. The site is on http://localhost:3000, the admin on /admin. The compose file follows the latest release; pin a version with VYASA_VERSION=0.1.0 in front of the commands (or in an .env file next to docker-compose.yml).

Without Docker, the installer fetches the release for your platform, verifies it and puts vyasa on your PATH; it needs a PostgreSQL database to run against:

curl -fsSL https://vyasa.site/install.sh | sh
cd ~/vyasa && VYASA_DATABASE_URL=postgres://vyasa:PASSWORD@localhost:5432/vyasa vyasa migrate && vyasa serve

Building from source and production deployment are covered in CONTRIBUTING.md and docs/DEPLOYMENT.md. Configuration comes from vyasa.toml if present, overridden by VYASA_* environment variables — __ separates nesting, so VYASA_LOG__LEVEL=debug.

Documentation

TopicWhere
How it fits togetherdocs/ARCHITECTURE.md
Building themesdocs/THEMES.md
Writing pluginsdocs/plugin-api.md, plugin-sdk/
Publishing to the marketplacedocs/PUBLISHING.md
AI agents over MCPdocs/MCP.md
Deploying and runningdocs/DEPLOYMENT.md, docs/OPERATIONS.md
Security modeldocs/SECURITY.md
Who may call which API routedocs/ROUTE-ACCESS.md
Versions and upgradesdocs/VERSIONING.md

Project status

Pre-1.0: usable and running in production, but APIs may still change between minor versions — see docs/VERSIONING.md and the changelog. Back up your database before upgrading; migrations are forward-only.

Plugins and themes

Every install browses the official marketplace out of the box — Plugins → Browse plugins, Appearance → Browse themes. To publish yours, start from the theme-starter or plugin-starter template and follow docs/PUBLISHING.md.

Contributing

Bug reports, docs, plugins, themes and code are all welcome. Start with CONTRIBUTING.md and the good first issue label, and please follow the Code of Conduct. Report security issues privately as described in SECURITY.md.

Licence

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

ai
axum
cms
content-management
headless-cms
plugins
postgresql
rust
themes
wasmtime
webassembly
wordpress-alternative

vyasa-cms/vyasa

An AI-native content management system in one Rust binary: block content, themes as data, WebAssembly-sandboxed plugins, a marketplace built in. Docs: vyasa.site/docs · Demo: demo.vyasa.site

Rust

2

57 commits

updated Oct 5, 2026

See the code

See what people are saying

README

Vyasa — a content management system, written in Rust

Vyasa is an AI-native content management system — a fast WordPress alternative written in Rust.

CI Licence: MIT OR Apache-2.0 Latest release

Website · Docs · Live demo · Discussions


Content is stored as structured blocks rather than markup, themes are data rather than code, and plugins run in a WebAssembly sandbox with only the capabilities they declare. One server binary and PostgreSQL are all it needs.

व्यास — vyāsa, from vi + √as, "to divide, to arrange". Veda Vyāsa earned the name by dividing the one Veda into four collections; the word is a title, not a personal name. In Sanskrit grammar vyāsa is also the term for analysis — decomposing a compound into its parts — against samāsa, which composes them back. That is what an editor does in each direction.

Why Vyasa

  • AI built in, not bolted on — writing assistance in the editor, an AI theme studio that designs a site from a description, semantic search and related posts, and an MCP server so AI agents can manage content under the same permissions as a person. Bring your own Anthropic or OpenAI-compatible provider.
  • Block editor — a writing canvas built on ProseMirror, plus a classic field editor. Both read and write the same block document, so a post opens in either.
  • Your content model — create content types and typed fields from the admin (text, number, date, choice, URL, media, links to other entries), with per-type templates and archives.
  • Themes as data — a validated set of design tokens compiled to CSS, with sandboxed templates. A theme can never run code on your server.
  • Sandboxed plugins — WebAssembly components with declared capabilities, checked by a broker on every call. A plugin cannot read what it was not granted.
  • Users and roles — built-in and custom roles, optional public registration with email confirmation, two-factor sign-in, API keys.
  • APIs first — an OpenAPI-documented REST API and a GraphQL API with subscriptions, both behind the same permission checks.

Quick start

With Docker:

mkdir vyasa && cd vyasa
curl -fsSLO https://raw.githubusercontent.com/vyasa-cms/vyasa/main/docker-compose.yml
docker compose run --rm app migrate          # create the database schema
docker compose up -d
docker compose exec app cat .run/setup-token # the one-time setup token

Open http://localhost:3000/admin/setup, enter the token, and create the first administrator. The site is on http://localhost:3000, the admin on /admin. The compose file follows the latest release; pin a version with VYASA_VERSION=0.1.0 in front of the commands (or in an .env file next to docker-compose.yml).

Without Docker, the installer fetches the release for your platform, verifies it and puts vyasa on your PATH; it needs a PostgreSQL database to run against:

curl -fsSL https://vyasa.site/install.sh | sh
cd ~/vyasa && VYASA_DATABASE_URL=postgres://vyasa:PASSWORD@localhost:5432/vyasa vyasa migrate && vyasa serve

Building from source and production deployment are covered in CONTRIBUTING.md and docs/DEPLOYMENT.md. Configuration comes from vyasa.toml if present, overridden by VYASA_* environment variables — __ separates nesting, so VYASA_LOG__LEVEL=debug.

Documentation

TopicWhere
How it fits togetherdocs/ARCHITECTURE.md
Building themesdocs/THEMES.md
Writing pluginsdocs/plugin-api.md, plugin-sdk/
Publishing to the marketplacedocs/PUBLISHING.md
AI agents over MCPdocs/MCP.md
Deploying and runningdocs/DEPLOYMENT.md, docs/OPERATIONS.md
Security modeldocs/SECURITY.md
Who may call which API routedocs/ROUTE-ACCESS.md
Versions and upgradesdocs/VERSIONING.md

Project status

Pre-1.0: usable and running in production, but APIs may still change between minor versions — see docs/VERSIONING.md and the changelog. Back up your database before upgrading; migrations are forward-only.

Plugins and themes

Every install browses the official marketplace out of the box — Plugins → Browse plugins, Appearance → Browse themes. To publish yours, start from the theme-starter or plugin-starter template and follow docs/PUBLISHING.md.

Contributing

Bug reports, docs, plugins, themes and code are all welcome. Start with CONTRIBUTING.md and the good first issue label, and please follow the Code of Conduct. Report security issues privately as described in SECURITY.md.

Licence

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

ai
axum
cms
content-management
headless-cms
plugins
postgresql
rust
themes
wasmtime
webassembly
wordpress-alternative