# Vault CMS — full documentation corpus
Every page below is sourced from https://docs.vaultcms.org. Pages are separated by `---` and prefixed with their canonical URL.
---
# Frontmatter Properties
URL: https://docs.vaultcms.org/guides/frontmatter-properties/
Description: YAML frontmatter fields — Obsidian calls them properties — that Vault CMS and Astro use for posts and pages.
Frontmatter properties are the YAML block at the top of each Markdown file, between `---` lines. Astro calls them **frontmatter**; Obsidian calls them **properties** — same thing. Astro and your theme read these values for title, dates, SEO, images, and drafts.
## Default template
Creating a note with `Ctrl/Cmd + N` (with [Astro Composer](/plugins/astro-composer/) configured) may insert a template like:
```yaml
---
title: "{{title}}"
date: {{date}}
description: ""
tags: []
image: ""
imageAlt: ""
imageOG: false
hideCoverImage: false
hideTOC: false
targetKeyword: ""
draft: true
---
```
Placeholders depend on your content type and Astro Composer settings.
## Fields
| Field | Type | Notes |
|-------|------|--------|
| `title` | string | Page title and often the `
` tag. |
| `date` | string | Often `YYYY-MM-DD`; used for sorting, RSS, and display. |
| `description` | string | Meta description; aim for ~150–160 characters for SEO. |
| `tags` | string[] | e.g. `tags: [astro, tutorial]` |
| `image` | string | Cover image URL or vault-relative path. |
| `imageAlt` | string | Alt text for the cover image. |
| `imageOG` | boolean | If `true`, use cover image for Open Graph / social previews. |
| `hideCoverImage` | boolean | Hide cover on the page while still using it for OG/SEO if configured. |
| `hideTOC` | boolean | Hide table of contents where the theme supports it. |
| `targetKeyword` | string | Primary keyword for the [SEO](/plugins/seo/) plugin. |
| `draft` | boolean | `true` keeps content out of production builds when the theme respects it. |
:::caution
New drafts often set `draft: true`. Set `draft: false` or remove `draft` when you intend to publish.
:::
## Normalize properties
**Astro Composer: Standardize Properties** (command palette) can align fields across files.
## Wikilinks
**Astro Composer: Convert Wikilinks to Astro** rewrites `[[links]]` to Markdown Astro can resolve.
## Date format
Default is often `YYYY-MM-DD`. Adjust in **Settings → Astro Composer** if your theme expects another format.
---
# Images in content
URL: https://docs.vaultcms.org/guides/images/
Description: Insert and manage images with Image Manager and frontmatter.
[Image Manager](/plugins/image-manager/) speeds up inserting images and managing attachments without leaving Obsidian.
## Insert an image in the body
`Ctrl/Cmd + '` opens the search modal: filter local attachments and press **Enter** to insert at the cursor.
## Remote image in frontmatter
`Ctrl/Cmd + Shift + '` prompts for a URL and can write it to the `image` property (useful for Unsplash or other hosts).
## Attachments folder
Local images often live under `./attachments` in the vault. Pasting or dragging into a note may place files there.
:::note
If Vault CMS is installed at the project root instead of `src/content`, paths may point at `src/content/attachments` so assets stay inside content collections. Confirm your layout after install.
:::
## Frontmatter fields
| Field | Purpose |
|-------|---------|
| `image` | Cover or hero image URL or path |
| `imageAlt` | Alt text |
| `imageOG` | `true` to use this image for Open Graph |
| `hideCoverImage` | `true` to hide cover on the page |
Example:
```yaml
image: "https://images.unsplash.com/photo-example"
imageAlt: "A laptop on a desk with code on the screen"
imageOG: true
hideCoverImage: false
```
## Unsplash
Image Manager can be configured with Unsplash as a provider: search from the modal (`Ctrl/Cmd + '`) or paste URLs with `Ctrl/Cmd + Shift + '`.
:::tip
Absolute `https://` URLs behave consistently across local dev and production. Use `./attachments/...` for files in the vault.
:::
## Practices
- **Alt text** — Describe the image for accessibility and SEO.
- **OG images** — Set `imageOG: true` when you want a specific social preview; themes may fall back to a default otherwise.
Plugin reference: [Image Manager](/plugins/image-manager/).
---
# Installation
URL: https://docs.vaultcms.org/guides/installation/
Description: CLI quick start, presets, manual install, and what the installer changes on disk.
Vault CMS installs into your Astro **content** directory by default (usually `src/content`); installing at the **project root** is also supported.
:::tip
Using Claude Code, Cursor, or Claude Desktop? Skip the CLI and let your AI agent handle the install — see the [MCP server guide](/guides/mcp-server/).
:::
## Prerequisites
- **[Node.js](https://nodejs.org/)** — **20 or later**; **22.x** is a good default for current Astro tooling. Required to run `create-vaultcms`.
- **[Astro](https://astro.build/)** project (see [themes](https://astro.build/themes))
- **[Obsidian](https://obsidian.md)** (desktop)
- **[Git](https://git-scm.com/)** — for publishing from Obsidian and normal project version control
## CLI installation (recommended)
From your Astro project root (the folder that contains `astro.config.mjs`):
```bash
npx create-vaultcms
# or: npm create vaultcms | pnpm create vaultcms | yarn create vaultcms
```
1. The CLI detects your Astro project and may list content collections.
2. Choose the install location — **default `src/content`**, or `.` for the project root.
3. Optional: choose a [preset](/guides/presets/) for your theme (`--template` or the interactive prompt).
4. When asked, open Obsidian and **Open folder as vault** on the directory that was just populated.
5. Complete the setup wizard (**Vault CMS: Open Wizard**) if it does not open automatically.
### What the installer does
- Copies **`.obsidian/`** (settings, community plugins, hotkeys)
- Copies **`_bases/`** (Home.base dashboard)
- Copies **`_GUIDE.md`** (in-vault quick reference)
- Updates **`.gitignore`** at the project root with Obsidian workspace excludes (see below)
- Adjusts internal paths when you install at root vs `src/content`
### Preset templates
```bash
npx create-vaultcms --template starlight
```
Other package managers and template names work the same way. See [Presets](/guides/presets/) for positional `npx create-vaultcms starlight` and the full preset list on GitHub.
## Manual installation
Use manual install if you cannot run Node, want to inspect files first, or are wiring a custom monorepo layout. The CLI is still the recommended path for most users.
1. **Download** the [Vault CMS ZIP](https://github.com/davidvkimball/vaultcms/archive/refs/heads/master.zip) or clone `https://github.com/davidvkimball/vaultcms.git`.
2. **Choose the target** inside your Astro project — usually `src/content` or the repo root (same tradeoffs as the CLI).
3. **Copy** from the Vault CMS tree into that target:
- `.obsidian/`
- `_bases/`
- `_GUIDE.md`
:::caution
If `.obsidian` already exists in the target folder, back it up first. Copying overwrites those files.
:::
**PowerShell** (run from your machine, adjusting paths):
```powershell
Copy-Item -Recurse -Force .\vaultcms\.obsidian .\your-project\src\content\
Copy-Item -Recurse -Force .\vaultcms\_bases .\your-project\src\content\
Copy-Item -Force .\vaultcms\_GUIDE.md .\your-project\src\content\
```
4. In Obsidian: **Manage vaults → Open folder as vault** → select that directory.
5. Run **Vault CMS: Open Wizard** from the command palette.
6. **Append to `.gitignore`** at the Astro project root (the CLI does this for you automatically):
```text
# Vault CMS / Obsidian
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.ref/
```
## After installation
- `Ctrl/Cmd + M` or the **Home** icon — content dashboard
- `Ctrl/Cmd + N` — new content (with Astro Composer templates when configured)
- **Git: Push** — publish; see [Publishing](/concepts/publishing/) and [Git plugin](/plugins/git/)
## Problems?
See [Common issues](/guides/troubleshooting-common-issues/) and [FAQ](/guides/troubleshooting-faq/).
---
# Introduction
URL: https://docs.vaultcms.org/guides/introduction/
Description: Overview, philosophy, and default settings for Vault CMS.
## What is Vault CMS?
Vault CMS lets you use [Obsidian](https://obsidian.md) as a content management system for your [Astro](https://astro.build) site. Content stays in plain Markdown in your repo—no separate CMS server. You get preconfigured settings, plugins, and a setup wizard.
**Learn the flow:** [How it works](/concepts/how-it-works/) · [Installation](/guides/installation/) · [Publishing](/concepts/publishing/)
**Using an AI agent?** Vault CMS ships an [MCP server](/guides/mcp-server/) so Claude Code, Cursor, Claude Desktop, and other agents can install and configure it for you with a single sentence.
**Community:** [Discord](https://discord.gg/gyrNHAwHK8)
## Setup walkthrough
## Philosophy
1. **Plug-and-play Astro blogging experience**: Designed to work out of the box with your Astro project.
2. **Emphasis on customization and modularity**: Every part of the system is replaceable or adjustable.
3. **Visual parity between backend and frontend**: What you see in Obsidian should closely match what your readers see.
## Compatibility
Vault CMS works with most Astro themes. The setup wizard automatically detects your content types, frontmatter properties, and folder structure.
**Works best with:** Themes that use flat frontmatter properties (title, date, description, tags, draft, image, etc.). This covers the majority of blog, portfolio, and documentation themes.
**Limited support for:** Themes with deeply nested YAML properties (e.g. `hero.image.file`, `settings.layout.columns`, `sidebar.order`). Obsidian's properties panel only supports flat key-value pairs by default. Install the [Nested Properties](/plugins/nested-properties/) plugin to edit nested YAML visually, or use the [Data Files Editor](/plugins/data-files-editor/) plugin to edit the raw YAML directly.
See the [Theme Comparison](/themes/comparison/) for a breakdown of which themes work best with Vault CMS.
## Default Settings
It's an opinionated Obsidian vault, but allows for lots of customizability. Here's what's on by default.
1. Markdown links are used in favor of wikilinks.
2. Some core plugins are disabled (details below).
3. Indentation guides have been disabled.
4. Inline title has been hidden to prioritize the `title` property via [Property Over File Name](/plugins/property-over-file-name/).
5. Custom [hotkeys](/guides/vault-hotkeys/) have been set.
6. Community plugins have been enabled to enhance the [Astro](/plugins/astro-composer/) workflow.
## Plugins
### Disabled Core Plugins:
- Canvas
- Daily notes
- Graph view
- Note composer
- Page preview
- Templates
- Sync
### Enabled Community Plugins:
- [File Name History](/plugins/file-name-history/)
- [Astro Composer](/plugins/astro-composer/)
- [Bases CMS](/plugins/bases-cms/)
- [BRAT](/plugins/brat/)
- [Data Files Editor](/plugins/data-files-editor/)
- [Editing Toolbar](/plugins/editing-toolbar/)
- [Explorer Focus](/plugins/explorer-focus/)
- [Git](/plugins/git/)
- [Home Base](/plugins/home-base/)
- [Image Manager](/plugins/image-manager/)
- [Omnisearch](/plugins/omnisearch/)
- [Oxygen Settings](/plugins/oxygen-settings/)
- [Property Over File Name](/plugins/property-over-file-name/)
- [SEO](/plugins/seo/)
- [Settings Search](/plugins/settings-search/)
- [Tag Wrangler](/plugins/tag-wrangler/)
- [UI Tweaker](/plugins/ui-tweaker/)
- [Vault CMS (Plugin)](/plugins/vault-cms/)
- [Zen Mode](/plugins/zen-mode/)
---
# Launch Checklist
URL: https://docs.vaultcms.org/guides/launch-checklist/
Description: Every step from Obsidian vault to live website. A universal reference for any theme.
A step-by-step reference for going from an empty folder to a live website powered by your Obsidian vault. This checklist works with any Vault CMS-compatible theme.
**Paths:** Free/open path uses Vault CMS + [Astro Modular](https://github.com/davidvkimball/astro-modular). Premium path uses [Axis](https://github.com/davidvkimball/axis) for a faster, opinionated setup with support.
## Prerequisites
- [ ] Obsidian installed (desktop version)
- [ ] Node.js 22.x installed (nodejs.org)
- [ ] Git installed (git-scm.com)
- [ ] GitHub account (or GitLab/Gitea)
- [ ] Hosting account (Netlify, Vercel, or Cloudflare)
- [ ] Package manager: npx comes with Node.js (or install pnpm: `npm install -g pnpm`)
## Get Your Astro Theme
Find an Astro theme you like. Browse the [Astro theme directory](https://astro.build/themes/), search GitHub, or use a theme recommended by the community. Some themes have a CLI installer (like Starlight: `npm create astro@latest`), but most are downloaded as a ZIP or cloned from GitHub.
## Install Vault CMS
Once you have your theme project locally, install Vault CMS into it:
1. **CLI (recommended):** Run `npx create-vaultcms` (or `npm create vaultcms`, `pnpm create vaultcms`, `yarn create vaultcms`) from inside your theme's project folder
2. **Manual:** [Download the latest release](https://github.com/davidvkimball/vaultcms/releases/latest) and copy `_bases`, `.obsidian`, and `_GUIDE.md` into your project (typically `src/content`)
## Open in Obsidian
- [ ] Open the project folder as a vault in Obsidian
- [ ] Install the Vault CMS plugin if not already included
- [ ] Complete the setup wizard (or select a preset if available)
## Customize Your UI (Optional)
Presets ship with opinionated defaults. Make it yours right away:
- [ ] Change the Obsidian theme (Settings > Appearance) if the preset's theme isn't your style
- [ ] Use UI Tweaker's "Reset all to defaults" to restore the standard Obsidian interface if the preset hides elements you want visible
- [ ] Enable the Editing Toolbar plugin for a familiar formatting bar (bold, italic, headings, lists)
## Configure Content
- [ ] Set your content types (posts, pages)
- [ ] Map your properties (title, date, description)
- [ ] Choose your plugins (Bases CMS, Astro Composer, SEO, etc.)
## Connect Git
- [ ] Generate a GitHub Personal Access Token
- [ ] Add it to the Vault CMS wizard (stored securely in Obsidian Secrets)
- [ ] Create or connect your GitHub repository
- [ ] Test: Ctrl+Shift+S should commit and push
## Deploy
- [ ] Connect your GitHub repo to your hosting provider
- [ ] Set build command: `pnpm build` (or `npm run build`)
- [ ] Set output directory: `dist`
- [ ] Trigger first deploy
- [ ] Visit your live site URL and confirm it loads
## Write Your First Post
- [ ] Ctrl+N to create a new post (Astro Composer)
- [ ] Write some content
- [ ] Ctrl+Shift+S to publish
- [ ] Verify the post appears on your live site
## Custom Domain (Optional)
- [ ] Add your domain in your hosting provider's dashboard
- [ ] Update DNS records (CNAME or A record)
- [ ] Enable HTTPS/SSL
- [ ] Update the site URL in your theme's config
- [ ] Redeploy and confirm
## You're Live
- [ ] Share your site with someone
- [ ] Keep writing. Your workflow is now: write, Ctrl+Shift+S, done.
---
# MCP server (AI agents)
URL: https://docs.vaultcms.org/guides/mcp-server/
Description: Install and configure Vault CMS from inside Claude Code, Cursor, Claude Desktop, and other AI agents that speak the Model Context Protocol.
Vault CMS ships with a [Model Context Protocol](https://modelcontextprotocol.io) server bundled inside the same `create-vaultcms` npm package. Once registered, AI tools like Claude Code, Cursor, Claude Desktop, and Codex can install and configure Vault CMS for you through structured tool calls — no need to switch to a terminal or answer interactive prompts.
## Why this matters
Without MCP, asking an AI for help with Vault CMS gets you a tutorial. The AI tells you to `cd` to your project, run `npx create-vaultcms`, pick options, and so on. **You** do the work.
With MCP registered, the same conversation goes:
> *"Set up Vault CMS in my Astro project at `~/code/my-blog` using the Starlight preset."*
The agent inspects the project, confirms it's Astro, picks the right install location, runs the install, and reports what changed — all in one turn.
## Quick start
The server speaks `stdio`. AI clients spawn it as a subprocess. You only need to register it once per tool.
### Claude Code
Run the registration command (one line):
```sh
claude mcp add vaultcms --scope user -- npx -y -p create-vaultcms@latest vaultcms-mcp
```
That writes the server entry to your user-level Claude config. Restart Claude Code and the three tools become available.
To allow the tools without permission prompts, open `~/.claude/settings.json` and add `"mcp__vaultcms__*"` to the `permissions.allow` array.
### Cursor
Open **Settings → Cursor Settings → MCP → Add new MCP server**:
- **Name**: `vaultcms`
- **Type**: `command`
- **Command**: `npx -y -p create-vaultcms@latest vaultcms-mcp`
### Claude Desktop
Edit `claude_desktop_config.json` (location varies by OS — see [the Claude Desktop docs](https://modelcontextprotocol.io/quickstart/user)):
```json
{
"mcpServers": {
"vaultcms": {
"command": "npx",
"args": ["-y", "-p", "create-vaultcms@latest", "vaultcms-mcp"]
}
}
}
```
Restart Claude Desktop. The vaultcms tools appear in the tool picker.
### Other MCP-compatible clients
Anything that runs an MCP stdio server can use it. The launch command is always:
```sh
npx -y -p create-vaultcms@latest vaultcms-mcp
```
## What the agent can do
The server exposes three tools.
### `detect_project` (read-only)
Inspects a directory and returns a structured snapshot:
- Whether it's an Astro project
- The resolved project root (walks up looking for `package.json`, `astro.config.*`, or `.git`)
- Detected package manager (pnpm, yarn, bun, npm)
- Content collections under `src/content/` (filtered to exclude Vault CMS install artifacts)
- Dynamic Astro routes (`[...slug].astro`) mapped to their content collections
- Whether Vault CMS is already installed
- Whether any Obsidian vault is present (even without the vault-cms plugin — protects older Obsidian-authored sites from being overwritten)
The agent uses this to confirm the project state before doing anything.
### `list_presets` (read-only)
Returns the available preset templates from the registry, with metadata pulled from the [vaultcms-presets manifest](https://github.com/davidvkimball/vaultcms-presets/blob/master/manifest.json):
- Name (e.g. `starlight`)
- Display name and description
- Default install target (typically `src/content`)
- Theme association
Defaults to the official `davidvkimball/vaultcms-presets` registry. See [Custom preset registries](#custom-preset-registries) below for using a fork.
### `install_vaultcms` (mutating)
Runs the full install programmatically — equivalent to `npx create-vaultcms` minus the interactive prompts:
- Downloads the vault config (and optionally a preset zip)
- Copies `_bases/` and `.obsidian/` into the target directory
- Fixes paths in `.obsidian/plugins/vault-cms/data.json` so they're vault-relative
- Adjusts `Home.base` formulas, `app.json`, and Explorer Focus config based on whether you installed at project root vs. `src/content`
- Updates `.gitignore` with the standard Vault CMS entries
Returns a structured result with `modifiedPaths`, `gitignore` action, and the captured installer log.
The tool **refuses by default** if it detects an existing Obsidian vault without the vault-cms plugin — prevents an agent from silently clobbering an older Obsidian-authored setup. Pass `force: true` to override after the user explicitly confirms.
### What the server intentionally doesn't do
- **No GUI launches.** The interactive CLI offers to open Obsidian after install; the MCP server returns a hint string instead. Reason: agents shouldn't trigger windows the user didn't ask for.
- **No automatic Git commits.** The Git plugin runs locally inside Obsidian; the MCP doesn't drive it.
- **No interactive prompts.** Everything is structured args in, structured data out. The agent does the asking.
## Custom preset registries
Both `list_presets` and `install_vaultcms` default to `davidvkimball/vaultcms-presets`, but you can point them at a fork or a private team registry. Three converging override paths (priority order):
1. **Per-call argument** — agent can pass `source` to `list_presets` or `presets_repo` to `install_vaultcms`
2. **CLI flag** — `npx create-vaultcms --presets-repo owner/repo`
3. **Environment variable** — `VAULTCMS_PRESETS_REPO=owner/repo`
Format is `owner/repo` or `owner/repo@branch`. Branch defaults to `master`. Examples:
```sh
# CLI
npx create-vaultcms --presets-repo acme/vaultcms-presets
# Env var (zero-config — once set, all flows pick it up)
export VAULTCMS_PRESETS_REPO=acme/vaultcms-presets
npx create-vaultcms
```
```jsonc
// MCP arg
{
"tool": "install_vaultcms",
"arguments": {
"target_path": "src/content",
"template": "myth",
"presets_repo": "acme/vaultcms-presets@dev"
}
}
```
:::caution
A custom registry runs code on your machine — `install_vaultcms` downloads a zip and extracts it into your project. Only use registries you trust.
:::
## A typical agent flow
What a good prompt → agent → install loop looks like:
1. **You**: *"Set up Vault CMS in my Astro project at `~/sites/blog` using Slate."*
2. **Agent calls** `detect_project({ path: "~/sites/blog" })` → confirms Astro, pnpm, no Vault CMS yet, no pre-existing Obsidian setup
3. **Agent calls** `list_presets()` → confirms `slate` exists, sees it installs at `src/content`
4. **Agent confirms with you**: *"This is an Astro project using pnpm. I'll install Vault CMS with the Slate preset at `~/sites/blog/src/content`. Proceed?"*
5. **You**: *"Yes."*
6. **Agent calls** `install_vaultcms({ target_path: "~/sites/blog/src/content", template: "slate" })` → returns success with modified paths
7. **Agent tells you**: *"Done. Open Obsidian → 'Open folder as vault' → select `~/sites/blog/src/content`. Then run **Vault CMS: Open Wizard** to finish setup."*
You typed two short messages. The agent handled the rest.
## Safety guards
- **`install_vaultcms` is mutating** — confirm with the user before invoking. The tool description marks it as such, so well-behaved agents will ask first.
- **Existing Obsidian vault protection** — install refuses by default if any `.obsidian/` directory exists in the project root, `src/content/`, or any first-level content collection without the vault-cms plugin. This catches older Obsidian-authored sites that predate the plugin and prevents silent overwrites of workspace, hotkeys, themes, and plugin lists.
- **Custom registries warn the user** — both tool descriptions and the docs explicitly note that custom `presets_repo` values download and execute code from third-party repos.
## Verifying it works
A quick sanity check from your shell:
```sh
# Should boot, log to stderr, and respond on stdin
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"manual","version":"0"}}}' \
| npx -y -p create-vaultcms@latest vaultcms-mcp
```
You should see `vaultcms-mcp ready (stdio)` on stderr and a JSON-RPC response on stdout.
Inside the AI tool itself, ask: *"Use the vaultcms MCP to detect the project at the current directory."* You should get back a structured JSON snapshot.
## Source and reporting issues
- **npm package**: [`create-vaultcms`](https://www.npmjs.com/package/create-vaultcms)
- **Source**: [github.com/davidvkimball/vaultcms](https://github.com/davidvkimball/vaultcms) — `src/mcp.js` and `src/lib/`
- **Bundled spec**: [`MCP.md`](https://github.com/davidvkimball/vaultcms/blob/master/MCP.md) inside the package
- **Issues**: [GitHub Issues](https://github.com/davidvkimball/vaultcms/issues)
---
# Mobile Guide
URL: https://docs.vaultcms.org/guides/mobile-guide/
Description: Using Vault CMS on mobile devices.
## Disabling the Git Plugin
It's recommended to disable the [Git](/plugins/git/) plugin on mobile and use something like [Git Sync](https://github.com/ViscousPot/GitSync) for iOS and Android (or [MGit](https://github.com/maks/MGit) just for Android) instead. The [Git](/plugins/git/) plugin is notoriously buggy on mobile so it's better to use something else.
### How to disable it:
1. On your mobile device, open Obsidian, and open your Astro project's `src/content` folder as a vault.
2. Open the left sidebar and open Settings.
3. Scroll down to community plugins and tap on [Git](/plugins/git/) from the list.
4. Scroll all the way down and select "Disable on this device".
5. Restart Obsidian.
This method is recommended rather than merely disabling the plugin, since if you sync with your desktop it will also get disabled there, too. This way it's disabled per-device.
## Limitations
Aspects of the [UI Tweaker](/plugins/ui-tweaker/) plugin and some [Image Manager](/plugins/image-manager/) features are disabled on mobile.
## Customization
To tweak the mobile-specific experience on the mobile version of Obsidian, you can use the [UI Tweaker](/plugins/ui-tweaker/) plugin's settings and also visit **Toolbar** and **Appearance** in settings.
### Toolbar
Under the **Toolbar** settings, you can set the mobile quick action which is triggered by pulling down from the top of the screen by tapping the "Configure" option. Below that you can adjust what options are available to you on the mobile toolbar.
### Appearance
Under the **Appearance** settings, locate **Interface** and the **Ribbon menu configuration** option's **Manage** button. You can set your preferred quick access item from the list, and customize which items appear on the ribbon menu.
## Conclusion
Assuming you have git working on your phone in another capacity, you now have seamless content sync between your desktop, laptop, tablet, and mobile devices.
---
# Presets
URL: https://docs.vaultcms.org/guides/presets/
Description: Install Vault CMS pre-tuned for Starlight, Chiri, Slate, and other Astro themes.
Presets bundle Vault CMS settings for specific Astro themes so paths, content types, and plugin config match the theme without manual tuning.
## Available presets
Examples include **Starlight**, **Chiri**, and **Slate**. The full list is fetched at install time from the [vaultcms-presets](https://github.com/davidvkimball/vaultcms-presets) repository.
## Install with a preset
1. From your Astro project root, run `npx create-vaultcms` (or `npm` / `pnpm` / `yarn create vaultcms`).
2. When asked about a preset, choose **Yes** and pick your theme.
3. Open the installed folder in Obsidian when the CLI offers.
## Skip the prompt
Pass the template name explicitly:
```bash
npx create-vaultcms --template starlight
npx create-vaultcms --template chiri
npx create-vaultcms --template slate
```
You can also pass it as a positional argument:
```bash
npx create-vaultcms starlight
```
## What presets adjust
Typical behavior (exact steps depend on the preset):
- **Install target** — e.g. Starlight may default to `src/content` without an extra prompt.
- **Vault-relative paths** — [Vault CMS plugin](/plugins/vault-cms/) config points at your project root correctly.
- **`_GUIDE.md`** — Pulled from the main Vault CMS repo so the in-vault guide stays current.
- **`.gitignore`** — Obsidian workspace state entries are added so only useful config is committed.
## Astro Modular
[Astro Modular](https://github.com/davidvkimball/astro-modular) is a theme designed for Vault CMS end-to-end. See also [Theme comparison](/themes/comparison/).
## More
- Preset source: [github.com/davidvkimball/vaultcms-presets](https://github.com/davidvkimball/vaultcms-presets)
- General install steps: [Installation](/guides/installation/)
---
# SEO for content
URL: https://docs.vaultcms.org/guides/seo/
Description: Use the SEO plugin and frontmatter to improve search visibility.
The [SEO](/plugins/seo/) plugin analyzes the open note: title, description, keyword usage, headings, and length. Open the panel with `Ctrl/Cmd + Shift + A`.
## What it checks
- Title length and presence of the target keyword
- Meta description length (often ~150–160 characters)
- Keyword in title, first paragraph, and headings
- Enough body content to avoid “thin” pages
- Sensible `##` / `###` structure
## Target keyword
Set your primary phrase in frontmatter:
```yaml
targetKeyword: "astro blog tutorial"
```
Use it naturally in the title, opening paragraph, and at least one heading.
## Meta description
The `description` field feeds the meta description. Keep it focused, include the keyword when it fits, and stay within a short snippet length.
```yaml
description: "Learn how to set up an Astro blog with Vault CMS and publish from Obsidian."
```
## Before you publish
Run the SEO check while `draft: true`, fix flagged items, then clear the draft flag when you push live.
## Practices
- **Titles** — Clear, specific; keyword toward the front when natural.
- **First paragraph** — Mention the topic early.
- **Headings** — Use `##` / `###` to outline the page.
- **Depth** — Prefer thorough coverage over very short posts if you care about rankings.
Full plugin behavior: [SEO plugin](/plugins/seo/).
---
# Theme & UI
URL: https://docs.vaultcms.org/guides/theme-and-ui/
Description: The visual identity of Vault CMS powered by Oxygen.
## Oxygen Theme
The visual identity of Vault CMS is built on the [Oxygen](https://github.com/davidvkimball/obsidian-oxygen) theme, which is based on the [Minimal theme system](https://minimal.guide/home). It provides a slick, highly customizable color scheme designed for long-form writing and content management.
For granular control over the theme, the [Oxygen Theme Settings](https://github.com/davidvkimball/obsidian-oxygen-settings) plugin is installed by default. This allows you to define your own color scheme presets and adjust the visual experience to your exact preferences.
## UI Plugins
In addition to the theme, several plugins work together to create a focused and efficient user interface:
- [UI Tweaker](/plugins/ui-tweaker/): Hide and adjust specific UI elements.
- [Explorer Focus](/plugins/explorer-focus/): Keep your file tree clean and relevant.
- [Zen Mode](/plugins/zen-mode/): Remove all distractions for a pure writing experience.
- [Editing Toolbar](/plugins/editing-toolbar/): A WYSIWYG toolbar for easier formatting.
If you desire even more control, you can install the [Style Settings](https://github.com/mgmeyers/obsidian-style-settings) plugin to unlock further customization options within Oxygen.
---
# Common issues
URL: https://docs.vaultcms.org/guides/troubleshooting-common-issues/
Description: Fixes for typical installation and day-to-day problems with Vault CMS.
### Installation: "No Astro project found"
The installer expects `astro.config.mjs` (or `.ts`) at or above the target path. Run it from your **Astro project root** (next to `package.json`). Default install target is usually `src/content`. If the vault landed in the wrong place, run `npx create-vaultcms` again from the correct root.
### Home base is empty or wrong
1. Confirm Obsidian opened the folder that contains `.obsidian` (often `src/content`).
2. Under **Settings → Community plugins**, ensure **Bases CMS** and **Home Base** are enabled.
3. Open **Home** in the tab bar or `_bases/Home.base` from the file explorer.
4. If you installed at the **project root**, base formulas may filter on `src/content/`. Open `Home.base` and check paths; re-run the installer from the root if formulas look wrong.
### Push fails: Git not configured
Run `git remote -v` in the project. You need a remote and working auth (SSH or HTTPS). Configure credentials under **Settings → Community plugins → Git**.
### Frontmatter is not inserting automatically
In **Settings → Astro Composer**, enable **Auto-insert Properties** (or equivalent). Ensure a content type matches the folder you are in. Re-run **[Vault CMS: Open Wizard](/plugins/vault-cms/)** if types are missing.
### Wiki links appear in Astro output
Use **Astro Composer: Convert Wikilinks to Astro** from the command palette. Optionally enable background wikilink processing in Astro Composer settings.
### Wizard detected the wrong content folder
Run **Vault CMS: Open Wizard** again and adjust the install target and content types.
### After manual install, Home base does not work
Copy **both** `.obsidian/` and `_bases/`, and `_GUIDE.md` if you want the in-vault guide. Open the folder with **Open folder as vault**, not single files.
### Community plugins will not load
**Settings → Community plugins → Turn on community plugins**, then enable each needed plugin (Vault CMS, Astro Composer, Git, etc.).
:::tip
Still stuck? [Discord](https://discord.gg/gyrNHAwHK8) · [GitHub Issues](https://github.com/davidvkimball/vaultcms/issues) · [FAQ](/guides/troubleshooting-faq/)
:::
---
# FAQ
URL: https://docs.vaultcms.org/guides/troubleshooting-faq/
Description: Common questions about Vault CMS, Obsidian, and the Astro workflow.
### Does Vault CMS work with any Astro theme?
Yes. Vault CMS is headless: it manages Markdown in your content folder and does not change theme templates. For **Starlight**, **Chiri**, **Slate**, and others, use a [preset](/guides/presets/) when the installer asks, or pass `--template`.
### Do I need Obsidian?
Yes. Vault CMS is a preconfigured Obsidian vault plus plugins. Download Obsidian at [obsidian.md](https://obsidian.md).
### Is Vault CMS free?
Yes. Vault CMS is open source (MIT). Some bundled plugins from the same author offer optional [Patreon](https://patreon.com/davidvkimball) support.
### Where is my content stored?
As `.md` files in your Astro content directory (often `src/content/`). No Vault CMS database—files on disk and in Git.
### Can I use Vault CMS on multiple machines?
Yes. Clone the repo, run the installer on each machine if needed, and open the same vault path in Obsidian.
### How do I update Vault CMS?
From your project directory:
```bash
npx create-vaultcms
```
This refreshes `.obsidian` and `_bases`. Your Markdown content in collections is not removed by that process—still use Git and backups as usual.
### Does Vault CMS support MDX?
The workflow targets `.md`. Astro Composer can expose `.mdx` in the explorer via settings; you can still author MDX manually if your theme uses it.
### What is `_bases`?
It contains `Home.base`, which powers the CMS-style home grid. Do not delete `_bases` if you want that view.
### Can I use Vault CMS without Git?
You can edit locally without Git, but one-click publish from Obsidian expects a remote. Without Git, copy or deploy files by another path.
### How do I reopen the setup wizard?
`Ctrl/Cmd + P` → **Vault CMS: Open Wizard**.
### Where can I get help?
- [Discord](https://discord.gg/gyrNHAwHK8)
- [GitHub Issues](https://github.com/davidvkimball/vaultcms/issues)
- [Common issues](/guides/troubleshooting-common-issues/)
---
# Vault Hotkeys
URL: https://docs.vaultcms.org/guides/vault-hotkeys/
Description: A guide to the default hotkeys in Vault CMS.
Here's a guide for some important hotkeys set especially for this theme:
| Action | Hotkey |
| :--- | :--- |
| Toggle left side panel | `CTRL + ALT + Z` |
| Toggle right side panel | `CTRL + ALT + X` |
| Toggle tab bar | `CTRL + ALT + S` |
| Navigate back | `ALT + ←` |
| Navigate forward | `ALT + →` |
| Open homepage | `CTRL + M` |
| Add a new property | `CTRL + ;` |
| Toggle property folding | `CTRL + ALT + P` |
| Toggle reading view | `CTRL + E` |
| Toggle [Editing Toolbar](/plugins/editing-toolbar/) | `CTRL + SHIFT + E` |
| Toggle [Zen mode](/plugins/zen-mode/) | `CTRL + SHIFT + Z` |
| Insert remote image | `CTRL + '` |
| Insert remote image into property | `CTRL + SHIFT + '` |
| Insert callout | `CTRL + SHIFT + C` |
| Rename current content | `CTRL + R` |
| Open [SEO audit](/plugins/seo/) | `CTRL + SHIFT + A` |
| Open Terminal | `CTRL + SHIFT + D` |
| Open Astro config file | `CTRL + SHIFT + ,` |
| Commit and sync with [Git](/plugins/git/) | `CTRL + SHIFT + S` |
| Open [Omnisearch](/plugins/omnisearch/) | `CTRL + SHIFT + O` |
| Toggle minimal focus mode | `CTRL + ALT + F` |
| Toggle ribbon | `CTRL + ALT + A` |
| Reload app | `CTRL + SHIFT + R` |
| Toggle light/dark theme | `CTRL + SHIFT + M` |
If you're on Mac, `CTRL` = `CMD`.
---
# Writing content
URL: https://docs.vaultcms.org/guides/writing-content/
Description: Create and edit posts in Obsidian with Vault CMS defaults.
Vault CMS uses Obsidian as the editor: new notes, formatting, tags, and focus modes are available from the keyboard and toolbar. See [Vault hotkeys](/guides/vault-hotkeys/) for the full list.
## Create a new note
`Ctrl/Cmd + N` creates a file using your default content type; [Astro Composer](/plugins/astro-composer/) can insert frontmatter automatically.
:::tip
New notes often include `draft: true` so you do not publish by accident.
:::
## Home base
The **Home** view is a grid of your content: drafts, metadata, and bulk actions.
- `Ctrl/Cmd + M` — open Home
- Or click the **Home** icon in the tab bar
See [Home Base](/plugins/home-base/) and [Bases CMS](/plugins/bases-cms/).
## Edit vs reading mode
- **Editing** — write with the live toolbar.
- **Reading** — preview rendered Markdown.
Toggle with the book icon or `Ctrl/Cmd + E`.
## Editing toolbar
In edit mode, the [Editing Toolbar](/plugins/editing-toolbar/) offers bold, italic, headings, lists, links, code, and callouts. `Ctrl/Cmd + Shift + C` inserts a callout. `Ctrl/Cmd + Shift + E` toggles the toolbar.
## Tags
Tags live in the properties panel. Use [Tag Wrangler](/plugins/tag-wrangler/) to rename or merge tags across the vault. In frontmatter: `tags: [astro, tutorial]`.
## Markdown links
Vault CMS prefers standard Markdown links for Astro. For `[[wikilinks]]`, run **Astro Composer: Convert Wikilinks to Astro** from the command palette.
## Rename a note
`Ctrl/Cmd + R` runs Astro Composer’s rename flow so links can update with the file.
## Focus writing
`Ctrl/Cmd + Shift + Z` toggles [Zen Mode](/plugins/zen-mode/) to hide chrome and focus on the document.
---
# Content types
URL: https://docs.vaultcms.org/concepts/content-types/
Description: How Vault CMS maps folders and routes to Astro content collections and URLs.
A **content type** in Vault CMS lines up with an [Astro content collection](https://docs.astro.build/en/guides/content-collections/)—a folder under `src/content` where your Markdown lives. Each type has its own folder, frontmatter template, and URL pattern on the site.
## How content types are detected
Run the setup wizard (**Vault CMS: Open Wizard** from the command palette). It scans your Astro project for collections and dynamic routes. The CLI prints similar output during install, for example:
```
📍 Route detection:
posts → /posts/ (from src/pages/posts/[...slug].astro)
pages → / (from src/pages/[...slug].astro)
docs → /docs/ (from src/pages/docs/[...slug].astro)
```
The wizard maps routes under `src/pages` (e.g. `[...slug].astro`) to the collections they use. You normally do not configure this by hand.
## Folder structure
Each type is a subfolder inside the vault, for example:
```
src/content/
├── posts/
├── pages/
├── docs/
├── projects/
└── special/
```
:::note
Which folders exist depends on your project. The wizard only sets up types it detects.
:::
## Default patterns (example)
| Content type | Folder | URL pattern | Example |
|--------------|--------|-------------|---------|
| Posts | `posts/` | `/posts/[slug]` | `/posts/my-first-post` |
| Pages | `pages/` | `/[slug]` | `/about` |
| Docs | `docs/` | `/docs/[slug]` | `/docs/getting-started` |
| Projects | `projects/` | `/projects/[slug]` | `/projects/my-app` |
| Special (home) | `special/` | `/` | `/` |
Exact rules come from your theme and routes. **Home.base** uses a slug formula so you can preview URLs; open `_bases/Home.base` or the **Home** view.
## Home.base columns
Typical columns:
- **Title** — from `title` in frontmatter
- **Path** — computed URL slug for the live site
- **Date** — from `date` or `pubDate`
- **Draft** — whether the file is treated as a draft
## Creating content in a specific type
`Ctrl/Cmd + N` uses your **default** content type (often `posts`). To target another folder, select that folder in the file explorer first, then create the note—or move an existing file into the right folder.
:::tip
[Astro Composer](/plugins/astro-composer/) can apply the right frontmatter template when a content type matches the folder. New notes often start with `draft: true` so nothing goes live by accident.
:::
---
# How it works
URL: https://docs.vaultcms.org/concepts/how-it-works/
Description: How Obsidian, the vault, and Git connect to your Astro site.
Vault CMS is a headless setup built on [Obsidian](https://obsidian.md) for writing and [Git](https://git-scm.com) for publishing. Your content is plain Markdown inside your Astro project. There is no database and no hosted Vault CMS backend—only files.
## The core idea
Your Obsidian vault **is** your Astro content folder. Installing Vault CMS drops a preconfigured `.obsidian` workspace into `src/content` (or your project root). Opening that folder in Obsidian gives you an editor wired to your site’s content collections.
```
your-astro-site/
├── src/
│ └── content/ ← Open this folder as your Obsidian vault
│ ├── .obsidian/ ← Vault config, plugins, and hotkeys
│ ├── _bases/ ← Home.base CMS dashboard view
│ ├── _GUIDE.md ← Quick-start reference
│ ├── posts/
│ ├── pages/
│ └── ...
├── astro.config.mjs
└── package.json
```
## Key pieces
- **The vault** — The folder you open in Obsidian. It lives inside your Astro project so new files are part of your content collections immediately.
- **`.obsidian`** — Pre-built plugin settings, hotkeys, and editor preferences tuned for Astro.
- **`Home.base`** — A [Bases CMS](/plugins/bases-cms/) dashboard: grid of content, filters, and slug previews. Open via **Home** in the tab bar or `Ctrl/Cmd + M`. See [Home Base](/plugins/home-base/).
- **Bundled plugins** — The main workflow is carried by **[Vault CMS](/plugins/vault-cms/)** (wizard), **[Astro Composer](/plugins/astro-composer/)** (frontmatter and links), and **[Git](/plugins/git/)** (obsidian-git) for publishing.
## The publishing workflow
1. **Write in Obsidian** — `Ctrl/Cmd + N` creates a note; Astro Composer can insert frontmatter. Edit in Markdown.
2. **Review in Home.base** — Check the **Path** column for the live URL. Use `draft: true` to keep work off the site until you are ready.
3. **Push with Git** — `Ctrl/Cmd + Shift + S` (or the status bar up-arrow) commits and pushes.
4. **Site rebuilds** — Netlify, Vercel, Cloudflare Pages, etc. detect the push and run your Astro build.
Details: [Publishing](/concepts/publishing/).
## Vault CMS is theme-agnostic
Vault CMS does not control your Astro theme or templates—it only helps you manage Markdown in content collections. Your theme defines what readers see.
For a theme built around Vault CMS, see [Astro Modular](https://github.com/davidvkimball/astro-modular). For theme fit, see [Theme comparison](/themes/comparison/).
---
# Publishing
URL: https://docs.vaultcms.org/concepts/publishing/
Description: Draft workflow, Git push, and how content reaches your live Astro site.
**Publishing** in Vault CMS means committing Markdown and pushing to Git. Your host rebuilds the site; Vault CMS does not host anything itself.
## How it works
The [Git](/plugins/git/) plugin (obsidian-git) stages changes, commits, and pushes from Obsidian. Your platform (Netlify, Vercel, Cloudflare Pages, GitHub Pages, etc.) runs on new commits and builds Astro.
```
Write in Obsidian → Git push → CI/CD build → Live site
```
## Publish steps
1. **Finish the draft** — When the post is ready, set `draft: false` or remove `draft` (see below).
2. **Push** — `Ctrl/Cmd + Shift + S` for **Git: Push**, or use the **up-arrow** in the status bar.
3. **Wait for the build** — Usually tens of seconds to a few minutes; check your host’s dashboard if needed.
Plugin details: [Git](/plugins/git/).
## Draft workflow
New notes often start with `draft: true` so unfinished work does not ship.
```yaml
---
title: "My New Post"
date: 2026-04-03
description: ""
tags: []
draft: true
---
```
To go live, remove `draft` or set `draft: false`. **Home.base** can show draft status for each file.
:::caution
Pushing with `draft: true` still commits the file. Whether it appears publicly depends on your Astro theme and collection schema filtering drafts. Always verify `draft` before you rely on “unpublished.”
:::
## Git setup (if you need it)
Your project should be a Git repo with a `remote` (e.g. `origin`). Quick setup from the project root:
```bash
git init
git add .
git commit -m "initial commit"
```
Create a repo on your host (GitHub, GitLab, Bitbucket), then:
```bash
git remote add origin https://github.com/your-username/your-repo.git
git push -u origin main
```
Connect that repository in Netlify, Vercel, or another host so pushes trigger deploys.
## Tips
- Small, frequent commits are easier to review and revert.
- The CLI adds workspace files to `.gitignore` so personal Obsidian UI state is not committed. See [Installation](/guides/installation/) for the exact entries.
---
# Astro Modular
URL: https://docs.vaultcms.org/themes/astro-modular/
Description: A free, open-source Astro blog theme designed for Obsidian users, with a dedicated settings plugin and full Vault CMS integration.
**Astro Modular** is a free, open-source Astro theme built specifically for Obsidian users. It includes a dedicated settings plugin so you can configure your site from inside Obsidian.
- [Live demo](https://astro-modular.netlify.app)
- [GitHub](https://github.com/davidvkimball/astro-modular)
## Features
### Site Features
- 17 built-in color themes + custom theme generation
- Command palette (Ctrl+K) for search, navigation, and quick actions
- Page transitions (Swup.js)
- Local knowledge graph with D3
- Linked mentions (backlinks)
- Profile card with customizable placement
- Automatic OG image generation
- RSS feed and sitemap
- Multiple deployment platform configs (Netlify, Vercel, Cloudflare, GitHub Pages)
### Content Types
- **Posts** with tags, cover images, reading time, word count, and drafts
- **Pages** for static content
- **Projects** with status badges and links
- **Docs** with category grouping
### Writing Features
- Full Obsidian markdown parity: wikilinks, callouts, highlights, embeds, image sizing
- LaTeX/KaTeX math rendering
- Mermaid diagrams
- Image grids with lightbox
- Code blocks with syntax highlighting
- Giscus comments (optional)
### Astro Modular Settings Plugin
- Dedicated Obsidian plugin that controls all site configuration
- Theme switching, typography, layout, and feature toggles from a UI
- Custom theme generation (extract colors from your Obsidian theme)
- No config.ts editing required
## Getting Started
1. Clone or download the [Astro Modular repo](https://github.com/davidvkimball/astro-modular)
2. Open the `src/content` folder as a vault in Obsidian
3. Vault CMS and the settings plugin are already bundled
4. Start writing
## Frontmatter Properties
| Property | Type | Description |
|----------|------|-------------|
| title | string | Post title |
| description | string | Short description for SEO and previews |
| date | date | Publication date |
| tags | string[] | Tags for categorization |
| draft | boolean | Hide from production builds |
| image | string | Cover image path |
| imageAlt | string | Cover image alt text |
| imageOG | boolean | Use cover image as OG image |
| hideCoverImage | boolean | Hide cover image on the post page |
| hideTOC | boolean | Hide table of contents |
| targetKeyword | string | SEO target keyword |
## License
MIT. Free for personal and commercial use.
---
# Axis
URL: https://docs.vaultcms.org/themes/axis/
Description: A premium Astro theme for personal publishing, built for Vault CMS with a dedicated Obsidian settings plugin.
**Axis** is a premium Astro theme designed for personal publishing. It ships with a dedicated Obsidian settings plugin so you can configure your entire site from inside Obsidian without editing config files.
- [Live demo](https://astro-axis.netlify.app)
- [Purchase Axis ($49)](https://store.davidvkimball.com/checkout/buy/b942a935-bc8b-4389-a50a-c8aada83002f)
## What's Included
- **Axis theme** with 18 built-in color themes + custom theme generation
- **Axis Settings plugin** for Obsidian (controls all config from a UI)
- **Tag Mirror plugin** for Obsidian (keeps Obsidian tags in sync with your site taxonomy)
- Lifetime updates via `pnpm run update`
- Community support via Discord
## Features
### Site Features
- 18 color themes with a live theme selector in the command palette
- Custom theme generation (extract colors from your Obsidian theme, simple and advanced editors)
- Command palette (Ctrl+K) for search, navigation, and quick actions
- Configurable navigation with nested dropdown menus
- External link indicators in the navbar
- Profile card with image, name, and bio
- Multiple homepage layouts (minimal, featured, grid, magazine)
- JSON-LD structured data (BlogPosting, WebPage, WebSite)
- Automatic OG image generation with config-specified fonts
- Full heroicons library (324 icons by exact name)
- RSS feed and sitemap
- Cookie consent (optional)
- Header and footer code snippet injection (analytics, GTM, etc.)
### Content Types
- **Posts** with tags, cover images, reading time, word count, and drafts
- **Pages** for static content
- **Projects** with status badges, repository/demo links, and categories
- **Docs** with category grouping and sidebar navigation
- **Custom content types** defined through the Axis Settings plugin with automatic routing, index pages, and Bases CMS views
- **Redirects** via frontmatter for SEO-safe URL changes
### Writing Features
- Full Obsidian markdown parity: wikilinks, callouts, highlights, embeds, image sizing
- LaTeX/KaTeX math rendering
- Mermaid diagrams
- Footnotes
- Image grids with lightbox
- GitHub card embeds
- Code blocks with syntax highlighting
- Custom callouts with full Obsidian parity (including custom icons and colors via Callout Manager)
- Spotify and Steam embeds
### Post Features
- Table of contents (configurable depth, per-post toggle)
- Related posts (based on links and tags)
- Linked mentions (backlinks)
- Local knowledge graph with no limit on what can be linked (posts, pages, projects, docs, custom types all appear in the graph)
- Per-post graph toggle with hideLocalGraph
- Previous/next navigation
- Cover images with configurable aspect ratios
- Draft support (visible in dev, hidden in production, dimmed in graph view and related posts)
- Posts dated in the future are hidden from the frontend
## Axis Settings Plugin
The Axis Settings plugin gives you full control over your site without opening a config file:
- **General tab:** Site info, OG image, favicons, profile picture, deployment platform
- **Navigation tab:** Page editor with nested children, social links, nav style
- **Layout tab:** Content width, homepage layout, post options, content types, footer
- **Style tab:** Theme selector with color pills, custom theme generation, font picker
- **Features tab:** Toggle every feature on/off, command palette options, graph view settings
- **Advanced tab:** Header/footer code snippets, cookie consent, config file path
All changes are written to `config.ts` using `[CONFIG:KEY]` markers. You never need to edit the file directly.
## Tag Mirror Plugin
Tag Mirror keeps your Obsidian vault tags synchronized with your site's tag taxonomy. When you add or rename tags in Obsidian, the plugin ensures they stay consistent across your content. This is included with your Axis purchase.
## Updates
Run `pnpm run update` in your Axis project directory. The first time, it will ask for your license key (from your purchase receipt). The key is saved to `.env` so you only enter it once. Updates are delivered from `releases.davidvkimball.com`.
## License
One-time purchase. Unlimited personal and commercial projects. Lifetime updates. Cannot resell or redistribute. See the full [license terms](https://davidvkimball.com/terms) for details.
---
# Chiri
URL: https://docs.vaultcms.org/themes/chiri/
Description: A minimal, free Astro blog theme. Great for beginners getting started with Vault CMS.
**Chiri** is a minimal, free Astro blog theme. It's one of the simplest ways to get a blog online with Vault CMS.
- [Live demo](https://astro-chiri.netlify.app)
- [GitHub](https://github.com/mhyfritz/astro-chiri)
## Overview
Chiri is a lightweight blog theme with a clean design. It supports basic blog features without the overhead of more complex themes. Vault CMS has a dedicated preset for Chiri that configures everything automatically.
## Features
- LaTeX/KaTeX math rendering
- RSS feed
- Sitemap
- OG image support
- Minimal, fast, and accessible
## Content Structure
- **File-based posts** in `src/content/posts/`
- Frontmatter: `title`, `pubDate`, `image`
- Drafts via filename prefix (`_my-draft.md`)
## Getting Started with Vault CMS
### Manual Install (Beginner-Friendly)
1. Download the Chiri ZIP from GitHub
2. Download the Vault CMS ZIP
3. Combine both into one folder
4. Open the folder as a vault in Obsidian
5. Select the **Chiri preset** when prompted
### CLI Install
```bash
npx create-vaultcms --template chiri
```
## Customizing Your UI
The Chiri preset ships with a minimal Obsidian UI. After installing, you can:
- Switch the Obsidian theme (Settings > Appearance) from Oxygen to Default or any theme you prefer
- Use UI Tweaker's "Reset all to defaults" to restore the standard Obsidian interface
- Enable the Editing Toolbar for a familiar formatting bar
## Limitations
- No tags, search, or table of contents
- No wikilinks, callouts, highlights, or Mermaid support
- No dedicated Obsidian settings plugin (use Vault CMS + Data Files Editor for config changes)
- Single content type (posts only)
## License
Free and open source.
---
# Theme Comparison
URL: https://docs.vaultcms.org/themes/comparison/
Description: Feature comparison of Astro themes that work with Vault CMS.
Vault CMS works with most Astro themes. Some themes have dedicated presets and deeper integration. Here's a comparison of the themes featured in our documentation and course.
All themes listed here support dark mode with a theme toggle.
## Feature Comparison
| Feature | Axis | Astro Modular | Fuwari | Chiri | Slate | Starlight |
|---------|:----:|:-------------:|:------:|:-----:|:-----:|:---------:|
| **Price** | Paid | Free | Free | Free | Free | Free |
| **Best for** | Blog + Portfolio | Blog + Content | Blog | Minimal Blog | Blog | Docs |
| **Dedicated Obsidian plugin** | Yes | Yes | No | No | No | No |
| **Content types** | Posts, Pages, Projects, Docs, Custom | Posts, Pages, Projects, Docs | Posts | Posts | Posts | Docs |
| **Content structure** | File + Folder | File + Folder | File + Folder | File | File | File |
| **Color themes** | 18 + custom | 17 + custom | Default | Default | Default | Starlight defaults |
| **Search** | Yes | Yes | Yes | No | Yes | Yes |
| **Tags** | Yes | Yes | Yes | No | Yes | No |
| **Drafts** | Yes | Yes | Yes | Filename prefix | Filename prefix | No |
| **Cover images** | Yes | Yes | Yes | No | No | No |
| **Table of contents** | Yes | Yes | Yes | No | No | Yes |
| **Reading time** | Yes | Yes | Yes | No | No | No |
| **Related posts** | Yes | No | No | No | No | No |
| **Linked mentions** | Yes | Yes | No | No | No | No |
| **Local graph** | Yes (all types) | Yes (posts only) | No | No | No | No |
| **Page transitions** | Astro View Transitions | Swup.js | Swup.js | No | No | No |
| **Prev/next navigation** | Yes | Yes | Yes | No | No | No |
| **RSS feed** | Yes | Yes | Yes | Yes | Yes | No |
| **Sitemap** | Yes | Yes | Yes | Yes | Yes | Yes |
| **OG image generation** | Dynamic | Dynamic | Dynamic | Static only | No | No |
### Markdown and Content Features
| Feature | Axis | Astro Modular | Fuwari | Chiri | Slate | Starlight |
|---------|:----:|:-------------:|:------:|:-----:|:-----:|:---------:|
| **LaTeX / KaTeX** | Yes | Yes | Yes | Yes | Yes | No |
| **Mermaid diagrams** | Yes | Yes | No | No | No | No |
| **Callouts** | Obsidian + custom | Obsidian-style | GitHub-style | No | Container syntax | Starlight asides |
| **Wikilinks** | Yes | Yes | No | No | No | No |
| **Highlights (==text==)** | Yes | Yes | No | No | No | No |
| **Footnotes** | Yes | Yes | Yes | Yes | No | No |
| **Image grids** | Yes | Yes | No | No | No | No |
| **Media embeds** | Yes | Yes | No | No | No | No |
| **Image size syntax** | Yes | Yes | No | No | No | No |
| **Obsidian comments** | Yes | Yes | No | No | No | No |
| **GitHub cards** | Yes | Yes | Yes | No | No | No |
| **Expressive Code** | No | No | Yes | No | No | Yes |
### Vault CMS Integration
| Feature | Axis | Astro Modular | Fuwari | Chiri | Slate | Starlight |
|---------|:----:|:-------------:|:------:|:-----:|:-----:|:---------:|
| **Preset available** | No (bundled) | No (bundled) | No | Yes | Yes | Yes |
| **Settings plugin** | Axis Settings | Astro Modular Settings | Vault CMS only | Vault CMS only | Vault CMS only | Vault CMS only |
| **Config editing** | Obsidian UI (no files) | Obsidian UI (no files) | Manual / Data Files Editor | Manual / Data Files Editor | Manual / Data Files Editor | Manual / Data Files Editor |
## Choosing a Theme
- **Want a full-featured personal site with zero config file editing?** [Axis](/themes/axis/) or [Astro Modular](/themes/astro-modular/).
- **Want a polished blog with search, transitions, and categories?** [Fuwari](/themes/fuwari/).
- **Want a minimal blog to get started quickly?** [Chiri](/themes/chiri/).
- **Want a clean blog with search?** [Slate](/themes/slate/).
- **Want a documentation site?** [Starlight](/themes/starlight/).
---
# Fuwari
URL: https://docs.vaultcms.org/themes/fuwari/
Description: A free, feature-rich Astro blog theme with page transitions, search, and categories.
**Fuwari** is a free, animated Astro blog theme with a polished design. It includes search, categories, page transitions, and supports both file-based and folder-based content.
- [Live demo](https://fuwari.vercel.app)
- [GitHub](https://github.com/saicaca/fuwari)
## Features
- Page transitions (Swup.js)
- Search (Pagefind)
- Tags and categories
- Drafts
- Cover images
- Reading time
- LaTeX/KaTeX math rendering
- Callouts/admonitions (GitHub-style)
- GitHub card embeds
- Expressive Code (enhanced code blocks)
- Archive page
- RSS feed
- Prev/next post navigation
- Table of contents
## Content Structure
Fuwari supports both **file-based** and **folder-based** content:
- **File-based:** `src/content/posts/my-post.md`
- **Folder-based:** `src/content/posts/my-post/index.md` (with images alongside)
### Frontmatter Properties
| Property | Type | Description |
|----------|------|-------------|
| title | string | Post title (required) |
| published | date | Publication date (required) |
| updated | date | Last updated date |
| draft | boolean | Hide from production |
| description | string | Short description |
| image | string | Cover image path |
| tags | string[] | Tags |
| category | string | Category |
| lang | string | Language code |
## Getting Started with Vault CMS
Fuwari works well with the GitHub template workflow:
1. Go to Fuwari's GitHub repo and click "Use this template"
2. Clone your new repo locally (using SourceTree, GitHub Desktop, or the terminal)
3. Install Vault CMS:
```bash
npx create-vaultcms
```
4. Open the project as a vault in Obsidian
5. Complete the setup wizard
## Limitations
- No wikilinks, highlights (==text==), or image grids
- No Mermaid diagram support
- No linked mentions, related posts, or local graph
- No dedicated Obsidian settings plugin
- Single content type (posts only, plus a spec collection)
## License
Free and open source (MIT).
---
# Slate
URL: https://docs.vaultcms.org/themes/slate/
Description: A clean, free Astro blog theme with tags, search, and dark mode.
**Slate** is a clean, free Astro blog theme with a focus on readability. It supports tags, drafts, search, and dark mode.
- [GitHub](https://github.com/jktrn/slate-blog)
## Overview
Slate is a blog-focused theme with a polished reading experience. It includes search via Algolia DocSearch and supports callout-style containers. Vault CMS has a dedicated preset for Slate.
## Features
- Tags
- Drafts (boolean frontmatter property)
- Search (Algolia DocSearch)
- Callouts (container syntax `:::`)
- LaTeX/KaTeX math rendering
- RSS feed with Follow authentication
- Sitemap
## Content Structure
- **File-based posts** in `src/content/post/`
- Frontmatter: `title`, `description`, `tags`, `draft`, `pubDate`
## Getting Started with Vault CMS
```bash
npx create-vaultcms --template slate
```
Or install manually by downloading both Slate and Vault CMS and combining them.
## Limitations
- No cover images in frontmatter schema
- No table of contents, reading time, or related posts
- No wikilinks, highlights, Mermaid, or image grids
- No dedicated Obsidian settings plugin
- Single content type (posts only)
## License
Free and open source.
---
# Starlight
URL: https://docs.vaultcms.org/themes/starlight/
Description: Astro's official documentation theme. Vault CMS adds Obsidian-powered content management to Starlight docs sites.
**Starlight** is Astro's official documentation theme. It's designed for building fast, accessible documentation sites. Vault CMS has a dedicated preset that lets you manage Starlight content from Obsidian.
- [Starlight docs](https://starlight.astro.build)
## Overview
Starlight is not a blog theme. It's a documentation framework with built-in sidebar navigation, search, dark mode, and internationalization support. When paired with Vault CMS, you can write and manage your docs entirely from Obsidian.
## Features
- Sidebar navigation (auto-generated or manual)
- Built-in search
- Dark mode
- Table of contents (auto-generated from headings)
- Sitemap
- Multiple color schemes
- Internationalization support
- Accessible by default
## Content Structure
- **File-based docs** in `src/content/docs/`
- Uses Starlight's built-in schema (`docsSchema`)
- Frontmatter: `title`, `description`, sidebar options, template, hero configuration
## Getting Started with Vault CMS
```bash
npm create astro@latest -- --template starlight
npx create-vaultcms --template starlight
```
Open the project as a vault in Obsidian. The Starlight preset configures Vault CMS to work with Starlight's content structure.
## Limitations
- Documentation-only (no blog posts, tags, or cover images)
- No RSS feed
- No OG image generation
- No wikilinks, callouts (uses Starlight's own aside syntax), or Obsidian-specific markdown
- No dedicated Obsidian settings plugin
## License
Free and open source (MIT).
---
# Astro Composer
URL: https://docs.vaultcms.org/plugins/astro-composer/
Description: Automating content creation and slug management.

[Astro Composer](https://github.com/davidvkimball/obsidian-astro-composer) is handy for easily creating new notes as Astro content like blog posts or pages.
Just create a new note with `CTRL + N`, type in a title in Title case or with special characters, and the note or folder name generated is a kebab-case version of the title without special characters. This is ideal for automating content page slugs.
### Features
- **New post dialog**: Prompts for a title when creating a new note, auto-generating a kebab-case filename (e.g., "My Blog Post" becomes `my-blog-post.md`).
- **Content types**: Create multiple content types (posts, pages, docs, etc.) with independent folder paths, templates, link base paths, and creation modes. Wildcard folder patterns are supported (e.g., `docs/*`, `docs/*/*`).
- **MDX support**: Can create `.mdx` files and process existing ones. MDX file creation is configurable per content type.
- **Property standardization**: Updates a note's properties to match a customizable template, preserving existing values and adding missing properties in the specified order.
- **Draft management**: Optionally adds an underscore prefix (e.g., `_my-post.md`) to hide drafts from Astro. Configurable draft property, draft logic (true-is-draft or false-is-draft), and automatic date syncing when publishing.
- **Internal link conversion**: Converts Obsidian wikilinks and Markdown links to Astro-friendly links, supporting both file-based and folder-based structures. Optional trailing slash on links.
- **Copy heading link**: Adds a context menu option to copy heading links in either Obsidian or Astro format.
- **Background file processing**: Automatically processes files changed in the background (e.g., via Git pull) when enabled.
- **MDX file explorer visibility**: Optionally makes `.mdx` files visible in the file explorer as Markdown files.
### Commands
- **Rename current content**: Update the title property and automatically rename the file or parent folder in kebab-case. Activate with `CTRL + R`.
- **Standardize properties**: Apply the properties template to the current note.
- **Convert internal links**: Convert Obsidian links to Astro-compatible Markdown links.
- **Open terminal**: Start a terminal in the relevant directory. Activate with `CTRL + SHIFT + D`. Configurable terminal application (Terminal, iTerm, PowerShell, Windows Terminal, gnome-terminal, konsole, xterm).
- **Edit Astro config**: Open your `astro.config.mjs` or `config.ts` file. Activate with `CTRL + SHIFT + ,`.
- **Create new [content type]**: Dynamic commands are created for each enabled content type to quickly create new files.
### Settings
- **Automate post creation**: Enable the title dialog for new notes created via `CTRL + N`.
- **Auto-insert properties**: Automatically apply the properties template when creating new files.
- **Creation mode**: Choose file-based (`my-post.md`) or folder-based (`my-post/index.md`) structure.
- **Posts folder**: Set the folder for blog posts (leave blank for vault root).
- **Use underscore prefix for drafts**: Add `_` prefix to hide drafts from Astro.
- **Draft property**: Custom property name for draft status.
- **Draft logic**: Whether `true` means draft or published.
- **Publish date field**: Property to update when switching from draft to published.
- **Sync draft date**: Automatically update the date property when publishing.
- **Date format**: Set the properties date format (e.g., `YYYY-MM-DD`).
- **Properties template**: Define the template for new posts. Supports `{{title}}`, `{{date}}`, and `{{slug}}` placeholders.
- **Excluded directories**: Directories to exclude from automation, separated by `|`.
- **Copy heading link format**: Choose between Obsidian or Astro link formats.
- **Add trailing slash to links**: Append trailing slash to converted links.
- **Show MDX files in explorer**: Make `.mdx` files visible in the file explorer.
- **Process background file changes**: Automatically process files changed outside the editor.
### Per-Content-Type Settings
Each content type can be independently configured with:
- Folder path (with wildcard support)
- Link base path
- Properties template
- Creation mode (file-based or folder-based)
- Index file name (for folder-based mode)
- Ignore subfolders toggle
- Underscore prefix for drafts toggle
- MDX file extension toggle
- Modified date field
---
# Bases CMS
URL: https://docs.vaultcms.org/plugins/bases-cms/
Description: Managing your content with a grid-based interface.

[Bases CMS](https://github.com/davidvkimball/obsidian-bases-cms) lets you treat a grid of content like a content management system. Requires the [Bases](https://help.obsidian.md/bases) core plugin to be enabled.
### Features
- **Card-based CMS view** — display your base entries as cards with thumbnails, snippets, and property information in a grid layout.
- **Bulk editing** — select multiple items and edit properties at once. Use `Shift + Click` anywhere on a card to toggle selection.
- **Draft toggling** — toggle publish/draft status for multiple files at once with visual indicators on cards.
- **Tag management** — add or remove tags from multiple files simultaneously.
- **Property management** — set or remove properties across multiple files with bulk operations.
- **Inline renaming** — rename content right from the grid view.
- **Smart deletion** — automatically delete parent folders when deleting files with specific names (like `index.md`), and optionally remove unique attachments only used by deleted notes.
- **Quick Edit** — execute Obsidian commands directly from card titles without opening files first. Configure a command and icon to appear on each card.
- **Custom views** — configure the CMS view and add new views to your liking.
- **Static GIF option** — force static images for animated GIFs in card thumbnails.
### Bulk Operations Toolbar
| Button | Description |
| --- | --- |
| Select all | Select all visible cards |
| Clear | Deselect all cards |
| Publish | Remove draft status from selected items |
| Draft | Add draft status to selected items |
| Tags | Open a modal to add or remove tags |
| Set | Set a property value across selected items |
| Remove | Remove a property from selected items |
| Delete | Delete selected items (with optional confirmation) |
Each toolbar button can be individually shown or hidden in settings.
Bases CMS works together with [Home Base](/plugins/home-base/) to provide a directory of all your content.
### Commands
- **Select all visible cards**: Select all cards in the current view.
- **Deselect all cards**: Clear the current selection.
### Settings
- **Confirm bulk operations** — toggle confirmation dialogs for bulk operations.
- **Toolbar buttons** — show or hide individual toolbar buttons.
- **Delete parent folder for specific file name** — enable smart folder deletion (e.g., delete parent folder when deleting `index.md`).
- **Folder deletion file name** — specify the file name that triggers parent folder deletion (default: `index`).
- **Delete associated unique attachments** — automatically delete attachments only used by deleted notes.
- **Confirm deletions** — toggle confirmation dialogs before deleting files.
- **Use home icon for CMS view** — switch between home and blocks icon in the Bases view selector.
- **Enable quick edit** — show quick edit icon on card titles with a configurable command and icon.
- **Embedded view refresh debounce** — delay in milliseconds before refreshing embedded views.
- **Virtual scroll threshold** — number of items before enabling virtual scrolling.
- **Virtual scroll buffer** — number of extra items to render above and below the visible area.
---
# BRAT
URL: https://docs.vaultcms.org/plugins/brat/
Description: Load beta plugins from GitHub repositories.
[BRAT](https://github.com/TfTHacker/obsidian42-brat) (Beta Reviewer's Auto-update Tool) installs and manages beta versions of Obsidian plugins and themes directly from GitHub repositories.
Future versions of this vault will remove BRAT-installed plugins in favor of official releases as they become available.
### Features
- **Install beta plugins** by providing a GitHub repository path.
- **Auto-update** beta plugins and themes at startup.
- **Version freezing** to pin a plugin to a specific release.
- **GitHub token support** for private repositories and higher API rate limits.
### Commands
- **Add a beta plugin for testing**: Install a plugin from a GitHub repository.
- **Check for updates to all beta plugins and update**: Update all tracked plugins.
- **Choose a single plugin version to update**: Update one specific plugin.
- **Restart a plugin**: Reload a plugin without toggling it off and on.
- **Enable/disable a plugin**: Quick toggle for any installed plugin.
- **Open GitHub repository for a plugin**: Open the repo in your browser.
---
# Data Files Editor
URL: https://docs.vaultcms.org/plugins/data-files-editor/
Description: Edit data files like JSON, YAML, and more within Obsidian.
[Data Files Editor](https://github.com/davidvkimball/obsidian-data-files-editor) lets you create and edit non-Markdown file types directly within Obsidian. This is useful for managing configuration files, data files, and other assets in your Astro project without leaving the vault. Originally created by [ZukTol](https://github.com/ZukTol/obsidian-data-files-editor).
### Supported File Types
| File Type | Extensions |
| --- | --- |
| JSON | `.json` |
| YAML | `.yaml`, `.yml` |
| Plain Text | `.txt` |
| XML | `.xml` |
| Astro | `.astro` |
| TypeScript | `.ts` |
| CSS | `.css` |
| HTML | `.html` |
| JavaScript | `.js`, `.mjs` |
### Features
- **Syntax highlighting** for JSON, YAML, and other supported formats.
- **Autosave** to automatically save your edits (enabled by default).
- **Line wrapping** for long lines (enabled by default).
- **Context menu integration** to quickly create new files of any enabled type from the file explorer.
### Settings
Each file type can be individually toggled on or off:
- **Load**: Open files of that type in Data Files Editor.
- **Create**: Add a "New .[ext] file" option to the file explorer context menu.
Changes to load settings require an Obsidian restart to take effect.
---
# Disable Tabs
URL: https://docs.vaultcms.org/plugins/disable-tabs/
Description: Ensure opening any new tab replaces the current one.

[Disable Tabs](https://github.com/davidvkimball/obsidian-disable-tabs) is off by default, but if enabled, opening or closing tabs will always replace the current tab with the new one, even replacing pinned tabs.
This is especially useful when you're hiding the tab bar and don't want multiple tabs cluttering your workspace. If you enable this, you might consider adjusting [UI Tweaker](/plugins/ui-tweaker/) settings under the Hider > Navigation section.
### Settings
| Setting | Default |
| --- | --- |
| Hide mobile tabs icon | Off |
---
# Editing Toolbar
URL: https://docs.vaultcms.org/plugins/editing-toolbar/
Description: A WYSIWYG toolbar for Obsidian.
[Editing Toolbar](https://github.com/PKM-er/obsidian-editing-toolbar) adds a customizable WYSIWYG toolbar to Obsidian for users who prefer visual formatting controls over memorizing markdown syntax or hotkeys.
Click the "toggle editing toolbar" button (added with [UI Tweaker](/plugins/ui-tweaker/)) on the title bar to show or hide it. It's hidden until revealed and completely disabled on mobile by default.
### Features
- **Multiple toolbar positions**: top bar, cursor-following, or fixed bottom grid.
- **Toolbar styles**: glass (blurred), default, tiny, or custom.
- **Format painter** to copy formatting from one selection and apply to others.
- **Text tools** submenu for advanced operations like deduplicating lines, adding prefixes, and converting between lists and tables.
- **Fully customizable** — drag-and-drop to reorder items, add custom commands, or create submenus.
### Toolbar Items
| Category | Items |
| --- | --- |
| Formatting | Bold, italic, strikethrough, underline, highlight |
| Headings | H1 through H6 |
| Lists | Bullet, numbered, checklist, indent/unindent |
| Markdown | Code, code block, wikilink, embed, link, divider |
| Alignment | Left, center, right, justify |
| Other | Blockquote, callout, table, font color, format eraser |
---
# Explorer Focus
URL: https://docs.vaultcms.org/plugins/explorer-focus/
Description: Simplify your file explorer view to the relevant directory.

With [Explorer Focus](https://github.com/davidvkimball/obsidian-explorer-focus), you can simplify your file explorer view to just the directory that's immediately relevant to your currently-open file.
### Focus Modes
| Mode | Description |
| --- | --- |
| Current file only | Focus on just the currently open file |
| Parent folder | Focus on the parent folder of the current file |
| Grandparent folder | Focus two levels up |
| Great grandparent folder | Focus three levels up |
| Custom folder | Focus on a specific folder path regardless of the current file |
When focused, only the focused item, its children, and its ancestors are visible. All other files and folders are hidden.
### Features
- **Right-click menu** — right-click any file or folder in the file explorer to quickly focus on it.
- **File explorer icon button** — add a focus toggle button directly in the file explorer navigation bar.
- **Hide ancestor folders** — option to hide parent folder indentation when focusing, making the focused folder appear at root level.
### Commands
- **Explorer Focus: Toggle focus**: Toggle focus mode on/off based on the configured focus level.
### Settings
- **Focus level** — choose the default focus mode (current file, parent, grandparent, great grandparent, or custom folder).
- **Custom folder path** — specify a folder path for custom folder mode.
- **Show right-click menu** — enable/disable the focus option in the file explorer context menu.
- **Show file explorer icon** — add a focus toggle icon to the file explorer navigation bar.
---
# File Name History
URL: https://docs.vaultcms.org/plugins/file-name-history/
Description: Keep track of old post or page URLs.
[File Name History](https://github.com/davidvkimball/obsidian-file-name-history) helps you keep track of old post or page URLs if you rename your files. Old file names and parent folder names are stored as aliases in the `aliases` property by default, making it ideal for generating redirect rules in your Astro templates.
### Features
- **Automatic file name change tracking** — when a file or parent folder is renamed (for example via [Astro Composer](/plugins/astro-composer/)'s `CTRL + R`), the old file name is stored as an alias (or another history property you define) automatically after a configurable timeout.
- **Parent folder tracking** — optionally stores the old parent folder name as a string when renamed (off by default).
- **Ignore patterns** — skip storing history for file names or folder names matching regex patterns (e.g., `^_` for underscore prefixes, `^Untitled$`). Supports wildcard folder patterns (`/**`, `/*`).
- **Case sensitivity** — toggle to treat case differences (e.g., "Note" vs. "note") as unique list items.
- **Folder filtering** — restrict tracking to specific folders or exclude others.
- **File extension support** — tracks `.md` files by default, with support for custom extensions (e.g., `.mdx`).
- **Auto-create properties** — optionally creates the `aliases` or relevant property if missing (on by default).
### Settings
| Setting | Default |
| ------------------------- | ------------------------------------ |
| History property name | `aliases` |
| Ignore regex patterns | `^_`, `^Untitled$`, `^Untitled \d+$` |
| Timeout seconds | 5 |
| Case sensitive uniqueness | Off |
| Auto-create properties | On |
| Track folder renames | Off |
| File extensions | `md` |
| Include folders | (empty = all) |
| Exclude folders | (empty = none) |
---
# Folder Notes
URL: https://docs.vaultcms.org/plugins/folder-notes/
Description: Simplify your file explorer view for folder-based content.
[Folder Notes](https://github.com/LostPaul/obsidian-folder-notes) is off by default, but is an option for anyone using a folder-based system of content who might want to simplify their file explorer view.
Instead of hunting down the `index.md` or similar file in each folder, each parent folder assumes the name of the content housed within it, and the Markdown file can be opened by simply clicking the folder itself.
---
# Git
URL: https://docs.vaultcms.org/plugins/git/
Description: Publish from Obsidian with obsidian-git—auth, push, commit messages, and auto-push.
Vault CMS bundles the [Git](https://github.com/Vinzent03/obsidian-git) plugin (obsidian-git) so you can commit and push without leaving Obsidian. Pushes trigger your host to rebuild the Astro site. Overview of the publishing chain: [Publishing](/concepts/publishing/).
## Features
- **Status bar** — Git status and changed file count (bottom right).
- **Commit and sync** — Stage, commit, and push in one action (`Ctrl/Cmd + Shift + S` or the status bar **up-arrow**).
- **Automatic backup** — Optional interval-based commits/pushes in plugin settings.
## Prerequisites
- **Git** installed (`git --version`).
- A **remote** (e.g. `origin`) for your Astro repo.
- **Authentication** — SSH key on your host, or HTTPS with a credential helper / personal access token.
## Configure the plugin
1. **Settings → Community plugins → Git** — open the gear icon.
2. **Authentication** — SSH (recommended) with agent and key added on GitHub/GitLab/etc., or HTTPS with username + PAT when prompted (often cached after the first success).
3. **Verify remote** — in a terminal at the project (or vault) root:
```bash
git remote -v
```
If `origin` is missing:
```bash
git remote add origin https://github.com/your-username/your-repo.git
```
:::caution
Pushing without a configured remote fails; fix `git remote` before relying on Obsidian to publish.
:::
## Commit message format
Vault CMS ships with a descriptive auto-commit pattern similar to:
```
Blog update M/D/YYYY h:ma: {{numFiles}} file(s) changed.
```
So history shows when each publish action ran and how many files changed.
## Auto-push on a timer
1. **Settings → Community plugins → Git → Options**
2. Set **Auto push interval** (minutes), e.g. `5`.
Useful for frequent small edits; use manual push when you want explicit control over deploy timing.
**Pull before push** is typically enabled so local branches stay aligned with the remote before a push.
## What gets ignored
Installer adds entries like:
```text
# Vault CMS / Obsidian
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.ref/
```
Workspace JSON is machine-specific (tabs, layout); keep it out of Git to avoid noise and merge conflicts. Plugin **configuration** under `.obsidian` still belongs in the repo per your workflow.
## Deployment
After a successful push, Netlify, Vercel, Cloudflare Pages, etc. build from the repo—no extra Vault CMS step.
**Auto-pull on boot** may be enabled so when Obsidian starts, the vault fetches remote changes (handy when editing from multiple machines).
## Commands
- **Git: Push** / commit-and-sync — `Ctrl/Cmd + Shift + S` or the status bar control.
---
# Home Base
URL: https://docs.vaultcms.org/plugins/home-base/
Description: Set your default screen to a directory of all your content.
[Home Base](https://github.com/davidvkimball/obsidian-home-base) works together with [Bases CMS](/plugins/bases-cms/) so your default screen is a `.base` file that's a directory of all of your content, listed in reverse-chronological order.
### Home Base Types
| Type | Description |
| --- | --- |
| File | Open a specific file (`.md`, `.mdx`, `.canvas`, `.base`, `.kanban`) |
| Workspace | Load a specific workspace layout |
| Random file | Open a random file from your vault |
| Random in folder | Pick a random file from a specific folder |
| Graph view | Open the graph view |
| Daily note | Open today's daily note |
| Weekly note | Open this week's note |
| Monthly note | Open this month's note |
| Quarterly note | Open this quarter's note |
| Yearly note | Open this year's note |
| Journal | Open today's journal entry (requires Journals plugin) |
| Nothing | Default new tab |
### Features
- **Home icon** pinned to your tab bar for quick access. Customizable icon, with option to hide the home tab header when using the sticky icon.
- **Default screen** opens automatically when you launch Obsidian.
- **Configurable view modes**: Choose how files open (Default, Reading view, Source mode, or Live Preview).
- **Opening modes**: Replace all open notes, replace last note, or keep open notes. Separate opening mode for manual activation vs. startup.
- **New tab replacement**: Replace new empty tabs with your home base or a different file entirely. Options for "only when no other tabs are open" or "always replace."
- **Command on open**: Automatically run any Obsidian command when opening the home base.
- **Auto-scroll**: Automatically scroll to the bottom when opening.
- **Revert view**: Restore default view when navigating away from home base.
- **Git sync wait**: Optionally wait for Git sync to complete before opening (configurable timeout).
- **Mobile support**: Separate home page, new tab behavior, and home button configuration for mobile devices.
### Commands
- **Home Base: Open**: Open the home base.
- **Home Base: Set current file as home**: Set the currently active file as your home base.
- **Home Base: Toggle sticky home icon**: Show or hide the sticky home icon in the tab bar.
- **Home Base: Close**: Close the home base tab.
---
# Image Manager
URL: https://docs.vaultcms.org/plugins/image-manager/
Description: Managing images and SEO assets.
[Image Manager](https://github.com/davidvkimball/obsidian-image-manager) allows you to quickly drag and drop image files, insert images with a command, or paste images directly from your clipboard. It unifies functionality from multiple image-related plugins into one cohesive experience.
### Features
- **Local file picker** — select images from your computer using the OS native file explorer.
- **Remote image search** — search and download images from Unsplash, Pexels, and Pixabay with filters for orientation, size, and more.
- **Paste and drop** — paste images from clipboard or drag and drop files directly into notes.
- **Automatic rename dialog** — prompt to rename images when pasted or inserted, with descriptive image naming in kebab-case.
- **Template-based naming** — customize image names using template variables (`{{fileName}}`, `{{dirName}}`, `{{DATE}}`, `{{TIME}}`, etc.).
- **Smart deduplication** — automatically handles duplicate filenames with intelligent numbering.
- **Insert size** — optionally set a default image size when inserting (e.g., `200` for width or `200x100` for width and height).
### Property Integration
- **Paste into properties** — paste images directly into properties with a single action.
- **Multiple link formats** — choose from Obsidian default, path, relative path, wikilink, Markdown link, or custom format.
- **Default property names** — configure which property to use for images (default: `banner`) and icons (default: `icon`).
- **Alt text property** — optionally set a property name for image alt text/descriptions.
- **MDX support** — full compatibility with MDX files in addition to standard Markdown.
- **Referral text** — optionally insert attribution text and backlinks for remote images.
### Remote Image Conversion
- **Auto-convert remote images** — automatically convert remote image URLs to local files.
- **Convert on note open** — process remote images when opening a note (requires auto-convert enabled).
- **Convert on note save** — process remote images when saving a note (requires auto-convert enabled).
- **Batch conversion** — convert all remote images across your entire vault with a single command.
- **Rename during conversion** — show rename dialog for each converted image.
### Banner Images
- **Banner display** — display banner images from properties at the top of notes.
- **Device-specific settings** — configure independently for desktop, tablet, and phone: height, padding, note offset, view offset, fade, rounded corners, and animation.
- **Icon support** — display icons alongside banners with per-device size, background, frame, border, and alignment controls.
- **MDX compatible** — works with both Markdown and MDX files.
- **Static GIF option** — optionally force static images for animated GIFs in banners.
### Commands
- **Insert local image**: Open file picker to select and insert a local image.
- **Insert remote image**: Open remote image search modal. Activate with `CTRL + '`.
- **Insert local image to property**: Insert a local image into a property.
- **Insert remote image to property**: Insert a remote image into a property. Activate with `CTRL + SHIFT + '`.
- **Insert local image to icon property**: Insert a local image into the icon property.
- **Convert remote images**: Convert remote images to local files in the current note.
- **Convert all remote images**: Convert remote images to local files across all notes.
### Settings
- **General**: Enable/disable rename prompts for paste and drop actions, configure supported file extensions.
- **Image Services**: Configure API keys and proxy URLs for Unsplash, Pexels, and Pixabay.
- **Property Insertion**: Set default property names, link format, and alt text property.
- **Conversion**: Configure automatic conversion on note open/save.
- **Rename Options**: Customize name templates and descriptive image prompts.
- **Banner Images**: Configure device-specific banner and icon display settings.
- **Attachment Management**: Follow Obsidian's default, use same folder, subfolder, or a custom path with template variables.
- **Advanced**: Debug mode and supported file extensions.
---
# Nested Properties
URL: https://docs.vaultcms.org/plugins/nested-properties/
Description: Edit nested YAML properties natively in Obsidian's properties panel.
[Nested Properties](https://github.com/mnaoumov/obsidian-nested-properties) adds support for nested YAML structures in Obsidian's properties panel. Originally created by [mnaoumov](https://github.com/mnaoumov).
Some Astro themes use nested properties in their content schemas, for example `hero.image.file` or `sidebar.order`. Without this plugin, Obsidian's properties panel can only display flat key-value pairs, requiring you to edit nested YAML manually with the [Data Files Editor](/plugins/data-files-editor/) plugin.
### What It Does
- Renders nested YAML objects and arrays directly in the properties panel
- Supports expanding and collapsing nested sections
- Allows adding, editing, and removing nested keys without touching raw YAML
- Works alongside Obsidian's built-in property types
### When You Need It
- Your theme uses nested properties (like Starlight's `sidebar.order`, `sidebar.label`, or `hero` object)
- You have content types with complex nested schemas
- You prefer editing properties visually instead of in raw YAML
### Installation
Nested Properties is available as a community plugin. Install it from **Settings > Community Plugins > Browse** and search for "Nested Properties."
If it's not yet available in the community directory, install via [BRAT](/plugins/brat/) using the repository URL: `mnaoumov/obsidian-nested-properties`
---
# Omnisearch
URL: https://docs.vaultcms.org/plugins/omnisearch/
Description: A search engine that just works.
[Omnisearch](https://github.com/scambier/obsidian-omnisearch) is a powerful search engine for your entire vault. Search and find notes based on content, not just titles. Activate it with `CTRL + SHIFT + O` when the quick switcher (`CTRL + O`) isn't enough.
### Features
- **Content-based search** using the BM25 ranking algorithm, weighting filenames, headings, and content.
- **Advanced syntax**: quoted phrases (`"exact match"`), exclusions (`-word`), and file type filters (`.md`, `.pdf`).
- **In-file search** mode to search within the current note.
- **Insert links** directly from search results.
- **Multi-format support** for PDFs, images, and Office documents (requires Text Extractor plugin).
### Commands
- **Open Omnisearch**: Open the search modal. Activate with `CTRL + SHIFT + O`.
- **Toggle in-file / vault search**: Switch between searching the vault or the current note.
- **Insert link from search result**: Insert a `[[link]]` from results.
---
# Oxygen Settings
URL: https://docs.vaultcms.org/plugins/oxygen-settings/
Description: Configure advanced customization options in Oxygen Theme.
[Oxygen Settings](https://github.com/davidvkimball/obsidian-oxygen-settings) provides a settings panel for configuring advanced customization options in the [Oxygen Theme](/guides/theme-and-ui/). Adjust colors, layout, typography, and other visual options to match your preferences.
### Features
- **Color schemes** for light mode (default, all white, low contrast, high contrast) and dark mode (default, low contrast, true black).
- **Custom color presets** you can create, import, and export as JSON.
- **Colorful elements** including headings, window frames, and active states.
- **Typography controls** for body font size, line height, and line width.
- **Layout options** like workspace borders, sidebar indentation guides, and text labels.
- **Animation settings** with personality options (smooth, playful, or off) and speed controls.
- **Media width controls** for images, tables, iframes, and charts.
### Commands
- **Switch between light and dark mode**
- **Cycle between light/dark mode schemes**
- **Create custom color preset**
- **Import custom color preset**
- **Cycle through custom presets** (light/dark mode)
- **Toggle colorful headings**
- **Toggle sidebar borders**
- **Toggle image grids**
- **Increase/decrease body font size**
---
# Property Over File Name
URL: https://docs.vaultcms.org/plugins/property-over-file-name/
Description: Use the title property as a primary label instead of its file name.

[Property Over File Name](https://github.com/davidvkimball/obsidian-property-over-file-name) lets you use a specified property (like `title`) as the primary label instead of the file name when linking, searching, or displaying notes.
Using title properties is more helpful visually and semantically since note file names are actually page slugs in kebab case. Works especially well with [Astro Composer](/plugins/astro-composer/) for managing content slugs.
### Features
- **Link suggester** — type `[[` to see suggestions based on the `title` property. The title is automatically set as the hyperlinked text.
- **Quick switcher** — search notes by title with `CTRL + O`.
- **Tab titles** — tabs display the note's `title` property instead of the file name.
- **Graph view** — nodes display the title property.
- **Backlinks** — backlinks panel shows title properties.
- **Bookmarks** — bookmarks display title properties.
- **Window frame** — browser title bar shows the title property.
- **File explorer** — file explorer shows title properties.
- **Drag-and-drop** — works when dragging notes from file explorer into a note.
- **New note creation** — supports creating new notes via link suggester and quick switcher.
- **Folder note support** — specify filename pattern for folder notes.
- **MDX support** — optionally enable property display for `.mdx` files.
### Settings
| Setting | Default |
| --- | --- |
| Property key | `title` |
| When linking notes | On |
| In Quick Switcher | On |
| In tab titles | On |
| In graph view | On |
| In backlinks | On |
| In bookmarks | On |
| In window frame | On |
| In file explorer | On |
| Drag-and-drop | On |
| Include file name in searches | Off |
| Include aliases in searches | Off |
| Use simple search | Off |
| Enable MDX support | Off |
| Folder note filename | (empty) |
---
# SEO
URL: https://docs.vaultcms.org/plugins/seo/
Description: Auditing your content for search engines and AI.

The [SEO](https://github.com/davidvkimball/obsidian-seo) plugin provides a comprehensive audit of your content for search engine rankings and AI parsing.
### Features
#### Content Quality Checks
- **Content length** — minimum word count threshold.
- **Reading level** — analyzes readability and complexity.
- **Keyword density** — optimal keyword usage (configurable min/max thresholds).
- **Duplicate content** — detects similar content across notes (configurable similarity threshold).
- **Duplicate titles** — identifies duplicate titles across your vault.
- **Duplicate descriptions** — finds duplicate meta descriptions.
#### Technical SEO Checks
- **Title optimization** — proper title length and structure.
- **Meta description** — properties description validation.
- **Keyword in title, description, and slug** — ensures keywords appear where they should.
- **Heading structure** — proper H1–H6 hierarchy (with option to skip H1 check).
- **Media alt text** — missing alt text detection for images, videos, and embeds.
- **Image naming** — SEO-friendly image filename patterns.
#### Link Management
- **Broken links** — detects non-existent internal links.
- **Potentially broken links** — identifies links that may be broken.
- **External links** — validates external link accessibility (optional, requires internet).
- **Naked links** — identifies unformatted URLs.
- **Broken embeds** — detects potentially broken embedded content.
### Commands
| Command | Description |
| --- | --- |
| Open current note audit | Open the current note audit panel |
| Open vault audit | Open the vault-wide audit panel |
| Run current note audit | Open panel and run audit on current note. Activate with `CTRL + SHIFT + A`. |
| Run vault audit | Open panel and run audit on all notes |
### SEO Score System
The plugin uses a weighted scoring system:
- **Critical issues** (10x weight): Broken links, missing titles.
- **Important issues** (5x weight): Missing alt text, meta descriptions.
- **Moderate issues** (3x weight): Content length, readability.
- **Minor issues** (1x weight): Warnings and notices.
**Score range**: 40–100 (40 = needs work, 100 = excellent).
### Settings
- **Scan directories** — configure which directories to include in vault-wide audits.
- **Individual checks** — turn off any check you don't care about or tweak scoring logic.
- **External link checking** — disabled by default; enable in settings if desired. All other checks work entirely offline.
- **Ignore underscore files** — skip files with underscore prefix (drafts).
- **MDX support** — enable to include `.mdx` files in audits.
- **Use filename as title/slug** — fallback to filename when properties are missing.
- **Parent folder slug filename** — use parent folder name for slug detection.
- **Title prefix/suffix** — configure title patterns for SEO checks.
- **Use note titles** — use property titles instead of filenames in reports.
- **Skip H1 check** — disable the heading structure H1 requirement.
- **Publish mode** — only audit published (non-draft) content.
- **Show ribbon icon** — toggle the SEO ribbon icon.
- **Default sort** — configure default sort order for audit results.
- **Caching** — first scan builds cache (slower), subsequent scans use cache (faster).
---
# Settings Search
URL: https://docs.vaultcms.org/plugins/settings-search/
Description: Global search for all settings in Obsidian.
[Settings Search](https://github.com/javalent/settings-search) adds a search bar to the top of Obsidian's settings panel, letting you quickly find any setting across core, plugin, and theme configurations.
### Features
- **Fuzzy search** across all setting names and descriptions.
- **Grouped results** organized by their parent settings tab.
- **Direct navigation** — click a result to jump to the setting with a highlight animation.
- **Keyboard navigation** with arrow keys or `CTRL + N` / `CTRL + P` to move between results.
---
# Tag Wrangler
URL: https://docs.vaultcms.org/plugins/tag-wrangler/
Description: Rename, merge, and search tags from the tags view.
[Tag Wrangler](https://github.com/pjeby/tag-wrangler) enhances tag management through a context menu in the tags view. Right-click any tag to access bulk operations.
### Features
- **Rename tags** across your entire vault, including subtags.
- **Search by tag** with options to start a new search, require a tag, or exclude a tag.
- **Tag pages** — `Alt/Option + click` a tag to create a dedicated page for it.
- **Drag-and-drop** to reorganize tag hierarchies.
- **Expand/collapse** tag hierarchies in the tags view.
### Context Menu
Right-click a tag in the tags view to access:
- **Rename #tag** — Rename the tag and all subtags vault-wide.
- **New search for #tag** — Start a global search.
- **Require #tag in search** — Add tag to current search.
- **Exclude #tag from search** — Exclude tag from current search.
- **Open or create a tag page** — Create a dedicated note for the tag.
---
# UI Tweaker
URL: https://docs.vaultcms.org/plugins/ui-tweaker/
Description: Hide and adjust UI elements in Obsidian.
[UI Tweaker](https://github.com/davidvkimball/obsidian-ui-tweaker) lets you hide and adjust UI elements to your liking. Open it up and customize your interface to remove distractions, rearrange elements, or customize icons.
UI Tweaker provides three visibility states for most elements:
- **Show**: Element is always visible (default).
- **Hide**: Element is always hidden.
- **Reveal**: Element is hidden by default but appears on hover/interaction.
### Features
#### Auto-hide Elements (Show/Hide/Reveal)
- Title bar
- File explorer navigation header
- Other navigation headers (tags, backlinks, outline, bookmarks)
- Left and right tab headers
- Vault switcher
- Help button, settings button
#### Navigation Controls
- Tab bar (with "hide when single tab" option)
- New note, new folder, sort order, auto-reveal, collapse all buttons
- Bookmarked button, reading mode button, search settings button
- Window dragging (enables dragging from top when tab bar is hidden)
#### Ribbon
- Collapse ribbon on hover (simple toggle)
#### Tab Icons (Show/Hide/Reveal)
- Tab list icon, new tab icon, tab close button
#### Status & UI Elements
- Status bar, scroll bars (Show/Hide/Reveal)
- Left/right sidebar toggle buttons (Show/Hide/Reveal)
- Tooltips, instructions
#### Properties
- Properties in Reading view
- Deemphasize properties (softens visual prominence, more visible on hover)
- Properties heading, add property button
- Minimal property icons
- Show property menu actions
#### Search
- Search suggestions, search term counts
#### Mobile
- Hide mobile chevrons icon, title, sync icon
- Hide navigation buttons (back, forward, quick switcher, new tab, open tabs, ribbon menu)
- Swap mobile new tab icon with home button
- Customize mobile navigation menu button positions
- Replace sync button with custom command and icon
#### Custom Command Buttons
- **Explorer Tab**: Add custom command buttons to the file explorer navigation area with custom icons, colors, toggle icons, device filtering, and drag-and-drop reordering.
- **Tab Bar Tab**: Add custom command buttons to page headers with the same customization options.
- **Status Bar Tab**: Unified management of existing and custom status bar items — reorder, hide/show, add custom buttons, and customize colors.
#### Native Explorer Button Controls
- Customize native explorer buttons (new note, new folder, sort order, auto-reveal, collapse all) — show/hide, custom colors, and icon overrides.
#### Advanced
- Vault switcher background transparency control
- Replace help button with custom command and icon
- Toggle icon feature with automatic state synchronization
### Commands
Each feature has a corresponding toggle command that can be bound to hotkeys. Some commonly used ones:
- **Toggle left side panel**: `CTRL + ALT + Z`
- **Toggle right side panel**: `CTRL + ALT + X`
- **Toggle tab bar**: `CTRL + ALT + S`
- **Toggle title bar**
- **Toggle file explorer navigation header**
- **Toggle status bar**
- **Toggle ribbon**
Toggle commands cycle between Show and Hide states. Pressing the hotkey again will reveal the element.
### Settings Tabs
| Tab | Description |
| --- | --- |
| Hider | Visibility controls for all UI elements, navigation, tabs, search, and vault profile |
| Explorer | Custom command buttons and native button controls for the file explorer |
| Tab Bar | Custom command buttons for page headers |
| Status Bar | Unified management of status bar items |
| Properties | Property display and icon settings |
| Mobile | Mobile-specific UI controls and navigation |
---
# Vault CMS (Plugin)
URL: https://docs.vaultcms.org/plugins/vault-cms/
Description: The core companion plugin with setup wizard.
[Vault CMS](https://github.com/davidvkimball/obsidian-vault-cms) is the core plugin that coordinates the experience. When you first open the vault, a setup wizard guides you through configuring Obsidian to work with your Astro project.
The wizard auto-detects your Astro project, lets you configure content types and properties, and sets up all the companion plugins. If something seems off during the process, ensure you have copied the vault folder to a location within your Astro project (usually `src/content`).
Once configured, restart Obsidian and start at [Home Base](/plugins/home-base/).
### Commands
- **Open setup wizard**: Re-run the configuration wizard at any time.
- **Check Vault CMS setup**: Run a health check on your installation and configuration.
- **Download and apply preset**: Sync your local configuration with a remote preset repository.
### Setup Wizard
The wizard walks you through 10 steps:
1. **Welcome**: Overview of the setup process.
2. **Project Detection**: Locates your Astro project by identifying config files (`astro.config.mjs`, etc.).
3. **Content Types**: Scans your project to identify and categorize content folders (posts, pages, docs, etc.).
4. **Properties**: Analyzes existing content to map properties (title, date, description, etc.).
5. **Plugin Configuration**: Configures [Bases CMS](/plugins/bases-cms/), [Astro Composer](/plugins/astro-composer/), [SEO](/plugins/seo/), default content type, and editing toolbar preferences in one consolidated step.
6. **Optional Plugins**: Enable or disable recommended ecosystem plugins.
7. **Ignore Files**: Automatically optimizes `.gitignore` and Vite configurations for your project.
8. **Git Integration**: Securely links your project to GitHub (PAT stored in Obsidian Secrets). Can initialize Git, create a repository, and perform the initial push.
9. **Deployment**: Provides deployment instructions tailored to your platform (Netlify, Vercel, Cloudflare, or GitHub Pages).
10. **Finalize**: Review summary and apply the final configuration.
### Bases CMS Folder Detection
The wizard dynamically detects your [Bases CMS](/plugins/bases-cms/) home file. It searches the following folders in order of preference:
| Folder | File names checked |
| --- | --- |
| `_bases` | `Home.base`, `home.base`, `index.base` |
| `bases` | `Home.base`, `home.base`, `index.base` |
| `_home` | `Home.base`, `home.base`, `index.base` |
| `home` | `Home.base`, `home.base`, `index.base` |
| `_base` | `Home.base`, `home.base`, `index.base` |
| `base` | `Home.base`, `home.base`, `index.base` |
If no existing file is found, the wizard defaults to creating `_bases/Home.base`.
### Astro Theme Presets
Vault CMS supports curated configuration presets for popular Astro themes. These presets automatically map content types, properties, and folder structures to match your theme's expectations.
- **Starlight**
- **Slate**
- **Chiri**
Use the **Download and apply preset** command to fetch the latest configurations from the [Vault CMS Presets](https://github.com/davidvkimball/vaultcms-presets) repository.
---
# Zen Mode
URL: https://docs.vaultcms.org/plugins/zen-mode/
Description: Focused writing environment by removing UI distractions.

[Zen Mode](https://github.com/paperbenni/obsidian-zenmode) offers a distraction-free writing environment by hiding all UI elements except your content.
### Features
- **Focused file mode** shows only the active file, hiding all other panes (enabled by default).
- **Full screen** option to automatically enter fullscreen when enabling Zen Mode.
- **Customizable padding** at the top and bottom of your content.
- **Exit button** with configurable visibility (always, mobile only, or never).
- **Escape key** exits Zen Mode (unless editing in Vim mode).
### Commands
- **Toggle zen mode**: Enter or exit Zen Mode. Activate with `CTRL + SHIFT + Z`.
### Settings
| Setting | Default |
| --- | --- |
| Full screen | Off |
| Focused file mode | On |
| Hide properties | Off |
| Hide inline title | Off |
| Hide status bar | Off |
| Hide linked mentions | Off |
| Hide scroll bar | Off |
| Top/bottom padding | 0px |