Updates

sitemd checks for new versions in the background and notifies you when one is available — in the CLI, on dev server startup, and in every sitemd_status response your AI agent sees.

Proactive Notifications

You don't need to remember to check for updates. sitemd surfaces them wherever you already are.

Interactive CLI (sitemd) — when you open the menu, an update line appears between the status block and the menu if a newer version is available:

  Project:   My Site
  Pages:     12 files
  Auth:      [email protected]
  Deploy:    example.com → cloudflare

  Update: v1.0.0 → v1.2.0  sitemd update

Dev server (sitemd launch) — the startup banner shows a notification if an update is waiting:

  Dev server running at http://localhost:4747
  Press Ctrl+C to stop
  Update available: v1.0.0 → v1.2.0  sitemd update

AI agents — every sitemd_status MCP response includes a version block. When an update is available, it appears as the first action item so the agent can mention it proactively:

{
  "version": {
    "current": "1.0.0",
    "latest": "1.2.0",
    "hasUpdate": true,
    "releaseNotes": "### What's new in 1.2.0<br>- ...",
    "releaseUrl": "https://github.com/sitemd-cc/sitemd/releases/tag/v1.2.0"
  },
  "actions": [
    { "command": "update", "description": "Update available: v1.0.0 → v1.2.0" }
  ]
}

Notifications are instant — they read from a local cache, adding zero latency to any command.

How the Cache Works

sitemd fetches version info at most once per hour and stores it at ~/.sitemd/update-check.json. The first CLI or server invocation after the cache expires triggers a background refresh — no waiting, no blocking. The next invocation picks up the result.

{
  "latest": "1.2.0",
  "checkedAt": "2026-03-17T10:00:00.000Z",
  "releaseNotes": "### What's new in 1.2.0<br>- Website cloning via /clone<br>- Auto-update with in-place engine replacement",
  "releaseUrl": "https://github.com/sitemd-cc/sitemd/releases/tag/v1.2.0"
}

If the network is unavailable, the check is skipped silently. No error, no disruption.

Manual Update Check

Run sitemd update at any time for a fresh check and full release notes:

sitemd update

Output when an update is available:

  Current version: 1.0.0
  Checking for updates...

  Update available: 1.0.0 → 1.2.0

  ### What's new in 1.2.0
  - Website cloning via /clone skill
  - Auto-update with in-place engine replacement
  - Proactive update notifications in CLI and MCP

  Release: https://github.com/sitemd-cc/sitemd/releases/tag/v1.2.0

  Update engine and theme in this project now? (yes/no):

If you're already on the latest version:

  Up to date! v1.2.0

Self-Update

When you run sitemd update from inside a project directory and confirm, sitemd downloads the latest release and replaces engine/ and theme/ in-place:

  Downloading v1.2.0...
  Updating engine...
  Updating theme...

  Updated! v1.2.0
  engine/ and theme/ replaced. pages/, settings/, and media/ unchanged.

  If you have an MCP server running, restart it to use the new version.

What gets replaced: engine/ and theme/

What is never touched: pages/, settings/, media/, .mcp.json, package.json content

Project config safe: .sitemd/config.json (your deployment credentials and service keys) lives outside engine/ and theme/, so it's never affected by updates.

npm installs

If you installed sitemd globally via npm, update the global package first:

npm update -g @sitemd-cc/sitemd

Then run sitemd update from your project directory to apply the new engine and theme files locally.

git clones

If your project is a git clone, you can git pull to update, or use sitemd update for the in-place replacement. Both work.

MCP Tool

AI agents can explicitly check for updates with the sitemd_update_check tool. Unlike the passive version info in sitemd_status, this always fetches fresh data from the registry:

sitemd_update_check()
→ { current, latest, hasUpdate, releaseNotes, releaseUrl }

Use sitemd_status for passive awareness. Use sitemd_update_check when the user explicitly asks whether a new version is available.

Note: self-update is not available via MCP. Replacing the engine while the MCP server is running would break the active session. Run sitemd update from the CLI instead, then restart the MCP server.