Project Structure

Everything sitemd needs lives in a single sitemd/ directory at your project root.

my-site/
  sitemd/              ← All product code and content
    pages/             ← Your markdown pages
    settings/          ← Site configuration
    theme/             ← HTML templates and CSS
    media/             ← Images and assets
    engine/            ← Build system and MCP server
    templates/         ← Reset templates (scratch, demo)
    auth-pages/        ← Login, signup, forgot-password (opt-in)
    account-pages/     ← User dashboard (opt-in)
    gated-pages/       ← Authenticated-only content (opt-in)
    modals/            ← Global modal dialogs
    site/              ← Built output (gitignored)
  site.md              ← Quick start and agent context

What goes where?

sitemd/pages/

Every .md file becomes a page on your site. The URL is derived from the file path or the slug field in frontmatter. Subdirectories create URL segments — pages/docs/getting-started.md becomes /docs/getting-started.

See Pages & Content for the full page format reference.

sitemd/settings/

YAML frontmatter files that control your site. Each file handles one concern:

File Controls
meta.md Site name, description, URL, logo, favicon
header.md Navigation items, buttons, search, auth button
footer.md Footer content, social links, copyright
groups.md Page groups for sidebars, dropdowns, footer columns
theme.md Colors, fonts, CSS variables, light/dark mode
build.md Dev server port, build mode
seo.md Sitemap, robots, OG images, structured data
deploy.md Deploy target, selective deployment
auth.md Authentication provider
forms.md Form defaults
email.md Email provider
analytics.md Analytics provider
data.md Dynamic data sources
content.md Content generation settings

See Site Identity for meta.md and the individual docs for each setting.

sitemd/theme/

HTML layout templates and CSS. The default theme includes light, dark, and paper modes. Edit styles.css for visual changes or modify layout.html for structural changes.

See Themes for customization options.

sitemd/media/

Images and other assets. Reference them in your pages as /media/filename.jpg. For production sites, Media Hosting can sync this directory to a CDN.

sitemd/engine/

The build system, CLI, MCP server, and deploy targets. Do not edit files in this directory — they are replaced during updates. Run sitemd update to get the latest version. See Updates.

sitemd/templates/

Bundled templates for resetting your project. scratch/ is the blank-slate template. demo/ is the component showcase. Run sitemd scratch to reset your pages and settings to the blank-slate defaults.

Other directories

Root-level files

site.md

A single file at your project root with quick start instructions and agent context. Both humans and AI agents read this file to understand the project.

.mcp.json

Created by sitemd setup. Tells MCP-capable agents (Claude Code, Cursor, VS Code, Codex) where the sitemd MCP server lives. The file is a standard MCP configuration:

{
  "mcpServers": {
    "sitemd": {
      "command": "./sitemd/sitemd",
      "args": ["mcp"]
    }
  }
}

If you already have a .mcp.json with other servers, sitemd setup merges the sitemd entry without overwriting your existing configuration.

Agent context files

Created by sitemd setup:

These files are appended or merged if they already exist — setup never overwrites your existing agent configuration.

How does sitemd setup work?

Run sitemd setup to create the agent integration files at your project root. This configures .mcp.json, copies agent context files, and checks for missing dependencies.

sitemd setup

Setup runs automatically on your first sitemd launch if it detects no existing .mcp.json configuration. You can also re-run it manually at any time to update agent files after an engine update.

If you installed via git clone from the public repository, these files are already present. For npm and download installations, setup creates them automatically on first launch.

How does the engine find the project?

The engine resolves its project root from its own location: sitemd/engine/ → two directories up → sitemd/. All paths to pages/, settings/, theme/, and site/ are relative to this root.

The CLI's findRoot function walks up from your current directory looking for a sitemd/settings/ directory. Run CLI commands from anywhere inside your project — it finds the right root automatically.

Keeping sitemd up to date

Run sitemd update to check for and apply engine updates. This replaces sitemd/engine/ and sitemd/theme/ with the latest versions while leaving your pages, settings, and media untouched. See Updates.