One binary, no Docker#
A single static Go binary runs the whole CMS. SQLite is built in. No runtime, no container, no
node_modulesin production.Custom fields, no plugins#
Define post types, user profile fields, and validation rules in
config.toml. The admin form, storage, and queries all read from that file.Extend with WebAssembly#
Drop a compiled
.wasmintoplugins/and it hooks intobefore_save,after_create, andafter_publish. Plugins are sandboxed, immutable, and can call host functions for HTTP, DB, and logging.Built for humans AND AI#
A versioned REST API at
/api/v1, alesstruct-cliclient, Markdown as a first-class ingest format, and skills for Claude Code, OpenCode, and other agents.
Quick start#
| |
Open http://localhost:8080/admin, register the first account, and start publishing. Full configuration reference lives in the Configuration docs.
Where to go next#
- New to Lesstruct? Read the Project Context for the architecture overview, then skim the Configuration reference.
- Building a site? Start with the Theme Development guide.
- Extending the CMS? The Plugin Development guide and Plugin Capabilities reference cover the WASM hook model and host functions.
- Integrating via API? The API Reference documents every
/api/v1endpoint, andlesstruct-cliships in the same release for terminal-first and AI-agent workflows.
AI agent ingestion#
This site is designed to be crawlable by AI agents in addition to humans.
/llms.txt— index of every documentation page with a one-line summary./llms-full.txt— every page concatenated in section order, suitable as a single context window.- Per-page markdown is also served at the canonical path (e.g.
/docs/api-reference/index.md) for retrieval pipelines that prefer per-page fetches. /sitemap.xml— Hugo’s built-in sitemap.
For an LLM working inside the repo, the source tree is the contract: docs/ is developer-facing, skills/*/references/ is the user-facing snapshot that ships in the binary.