Server Roles
Overview
Accent CMS supports three server roles that control which capabilities
are active in production mode. The role is set in config.yaml and
only enforced when running with --production.
In dev mode (without --production), all capabilities are available
regardless of the role setting.
Configuration
server: role: publisher # publisher | author | developer (default)
The Three Roles
Developer (default)
Everything enabled, nothing enforced. This is the default for local development and testing. No restrictions on mutations, git operations, or debug features.
Publisher
Production read-only server. Content is fetched from git and served to visitors. No content mutations are allowed.
Use this for public-facing websites deployed via git push:
server: role: publisher git: enabled: true remote: url: "https://github.com/customer/my-site.git" deploy_branch: accent-pages webhook: enabled: true secret: "${GIT_WEBHOOK_SECRET}"
What is blocked in publisher mode:
- MCP write tools (update_frontmatter, create_page, move_page)
- REST API mutations (future)
- Plugin content writes (future)
What is allowed:
- Content serving, template rendering, search
- Git fetch and webhook-triggered updates
- MCP read tools (list_pages, get_page, search)
Author
Production read-write server for content teams. Editors create and modify content via MCP tools or the API. Changes are committed to git and pushed to the remote.
server: role: author git: enabled: true remote: url: "https://github.com/customer/my-site.git" deploy_branch: accent-pages sync: on_diverge: reject # protect local commits
All mutations are allowed in author mode.
How Enforcement Works
Role enforcement is conditional on the --production flag:
# Dev mode: role is ignored, everything works accent serve --config config.yaml # Production: role is enforced accent serve --production --config config.yaml
The startup log shows the active role:
INFO Server role: publisher (production mode)
Deployment Pattern
A typical deployment uses two instances:
- Author (internal) – content team creates and edits content
- Publisher (public) – visitors see the published site
The git repository syncs content between them:
Content Team -> Author Server -> Git Push -> Publisher Server -> Visitors
Edition Requirements
| Component | Edition |
|---|---|
server.role config | All editions |
| Role enforcement | Standard+ (requires --production) |
| Publisher + git deployment | Standard+ |
| Author + git commit/push | Standard+ |