Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Vault Cortex

by aliasunderversion 0.56.3i★ –iRuns on your computer
Registry nameio.github.aliasunder/vault-cortex

Install

Overview

Description from the maker (original English)

Standalone MCP server for Obsidian vaults — hybrid search, notes & files, memory, tasks, OAuth 2.1

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: Streamable HTTP
  • Category: Docs, sheets & office work
  • You need to fill in: MCP_AUTH_TOKEN

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: MCP_AUTH_TOKEN, PUBLIC_URL, EMBEDDING_ENABLED, RERANK_MODE, WINDOWS_MODE, MEMORY_ENABLED, FILE_TOOLS_ENABLED, READONLY_MODE, DISABLED_TOOLS, MEMORY_DIR, DAILY_NOTES_FOLDER, DAILY_NOTES_FORMAT, TRUST_PROXY_HOPS, TRUST_FORWARDED_HOPS, TZ, LOG_LEVEL, LOG_DIR, LOG_RETENTION_DAYS, PROTECTED_PATHS, ORPHAN_EXCLUDE_FOLDERS, SERVICE_DOCUMENTATION_URL, MAX_FILE_BYTES, MAX_IMAGE_OUTPUT_BYTES, MAX_PDF_RENDER_PAGES

Values marked secret are keys to your account. Never share them or paste them into a chat.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "vault-cortex": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_AUTH_TOKEN",
        "-e",
        "PUBLIC_URL",
        "-e",
        "EMBEDDING_ENABLED",
        "-e",
        "RERANK_MODE",
        "-e",
        "WINDOWS_MODE",
        "-e",
        "MEMORY_ENABLED",
        "-e",
        "FILE_TOOLS_ENABLED",
        "-e",
        "READONLY_MODE",
        "-e",
        "DISABLED_TOOLS",
        "-e",
        "MEMORY_DIR",
        "-e",
        "DAILY_NOTES_FOLDER",
        "-e",
        "DAILY_NOTES_FORMAT",
        "-e",
        "TRUST_PROXY_HOPS",
        "-e",
        "TRUST_FORWARDED_HOPS",
        "-e",
        "TZ",
        "-e",
        "LOG_LEVEL",
        "-e",
        "LOG_DIR",
        "-e",
        "LOG_RETENTION_DAYS",
        "-e",
        "PROTECTED_PATHS",
        "-e",
        "ORPHAN_EXCLUDE_FOLDERS",
        "-e",
        "SERVICE_DOCUMENTATION_URL",
        "-e",
        "MAX_FILE_BYTES",
        "-e",
        "MAX_IMAGE_OUTPUT_BYTES",
        "-e",
        "MAX_PDF_RENDER_PAGES",
        "ghcr.io/aliasunder/vault-cortex:0.56.3"
      ],
      "env": {
        "MCP_AUTH_TOKEN": "your-value",
        "PUBLIC_URL": "your-value",
        "EMBEDDING_ENABLED": "your-value",
        "RERANK_MODE": "your-value",
        "WINDOWS_MODE": "your-value",
        "MEMORY_ENABLED": "your-value",
        "FILE_TOOLS_ENABLED": "your-value",
        "READONLY_MODE": "your-value",
        "DISABLED_TOOLS": "your-value",
        "MEMORY_DIR": "your-value",
        "DAILY_NOTES_FOLDER": "your-value",
        "DAILY_NOTES_FORMAT": "your-value",
        "TRUST_PROXY_HOPS": "your-value",
        "TRUST_FORWARDED_HOPS": "your-value",
        "TZ": "your-value",
        "LOG_LEVEL": "your-value",
        "LOG_DIR": "your-value",
        "LOG_RETENTION_DAYS": "your-value",
        "PROTECTED_PATHS": "your-value",
        "ORPHAN_EXCLUDE_FOLDERS": "your-value",
        "SERVICE_DOCUMENTATION_URL": "your-value",
        "MAX_FILE_BYTES": "your-value",
        "MAX_IMAGE_OUTPUT_BYTES": "your-value",
        "MAX_PDF_RENDER_PAGES": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add vault-cortex --env MCP_AUTH_TOKEN=your-value --env PUBLIC_URL=your-value --env EMBEDDING_ENABLED=your-value --env RERANK_MODE=your-value --env WINDOWS_MODE=your-value --env MEMORY_ENABLED=your-value --env FILE_TOOLS_ENABLED=your-value --env READONLY_MODE=your-value --env DISABLED_TOOLS=your-value --env MEMORY_DIR=your-value --env DAILY_NOTES_FOLDER=your-value --env DAILY_NOTES_FORMAT=your-value --env TRUST_PROXY_HOPS=your-value --env TRUST_FORWARDED_HOPS=your-value --env TZ=your-value --env LOG_LEVEL=your-value --env LOG_DIR=your-value --env LOG_RETENTION_DAYS=your-value --env PROTECTED_PATHS=your-value --env ORPHAN_EXCLUDE_FOLDERS=your-value --env SERVICE_DOCUMENTATION_URL=your-value --env MAX_FILE_BYTES=your-value --env MAX_IMAGE_OUTPUT_BYTES=your-value --env MAX_PDF_RENDER_PAGES=your-value -- docker run -i --rm -e MCP_AUTH_TOKEN -e PUBLIC_URL -e EMBEDDING_ENABLED -e RERANK_MODE -e WINDOWS_MODE -e MEMORY_ENABLED -e FILE_TOOLS_ENABLED -e READONLY_MODE -e DISABLED_TOOLS -e MEMORY_DIR -e DAILY_NOTES_FOLDER -e DAILY_NOTES_FORMAT -e TRUST_PROXY_HOPS -e TRUST_FORWARDED_HOPS -e TZ -e LOG_LEVEL -e LOG_DIR -e LOG_RETENTION_DAYS -e PROTECTED_PATHS -e ORPHAN_EXCLUDE_FOLDERS -e SERVICE_DOCUMENTATION_URL -e MAX_FILE_BYTES -e MAX_IMAGE_OUTPUT_BYTES -e MAX_PDF_RENDER_PAGES ghcr.io/aliasunder/vault-cortex:0.56.3

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "vault-cortex": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_AUTH_TOKEN",
        "-e",
        "PUBLIC_URL",
        "-e",
        "EMBEDDING_ENABLED",
        "-e",
        "RERANK_MODE",
        "-e",
        "WINDOWS_MODE",
        "-e",
        "MEMORY_ENABLED",
        "-e",
        "FILE_TOOLS_ENABLED",
        "-e",
        "READONLY_MODE",
        "-e",
        "DISABLED_TOOLS",
        "-e",
        "MEMORY_DIR",
        "-e",
        "DAILY_NOTES_FOLDER",
        "-e",
        "DAILY_NOTES_FORMAT",
        "-e",
        "TRUST_PROXY_HOPS",
        "-e",
        "TRUST_FORWARDED_HOPS",
        "-e",
        "TZ",
        "-e",
        "LOG_LEVEL",
        "-e",
        "LOG_DIR",
        "-e",
        "LOG_RETENTION_DAYS",
        "-e",
        "PROTECTED_PATHS",
        "-e",
        "ORPHAN_EXCLUDE_FOLDERS",
        "-e",
        "SERVICE_DOCUMENTATION_URL",
        "-e",
        "MAX_FILE_BYTES",
        "-e",
        "MAX_IMAGE_OUTPUT_BYTES",
        "-e",
        "MAX_PDF_RENDER_PAGES",
        "ghcr.io/aliasunder/vault-cortex:0.56.3"
      ],
      "env": {
        "MCP_AUTH_TOKEN": "your-value",
        "PUBLIC_URL": "your-value",
        "EMBEDDING_ENABLED": "your-value",
        "RERANK_MODE": "your-value",
        "WINDOWS_MODE": "your-value",
        "MEMORY_ENABLED": "your-value",
        "FILE_TOOLS_ENABLED": "your-value",
        "READONLY_MODE": "your-value",
        "DISABLED_TOOLS": "your-value",
        "MEMORY_DIR": "your-value",
        "DAILY_NOTES_FOLDER": "your-value",
        "DAILY_NOTES_FORMAT": "your-value",
        "TRUST_PROXY_HOPS": "your-value",
        "TRUST_FORWARDED_HOPS": "your-value",
        "TZ": "your-value",
        "LOG_LEVEL": "your-value",
        "LOG_DIR": "your-value",
        "LOG_RETENTION_DAYS": "your-value",
        "PROTECTED_PATHS": "your-value",
        "ORPHAN_EXCLUDE_FOLDERS": "your-value",
        "SERVICE_DOCUMENTATION_URL": "your-value",
        "MAX_FILE_BYTES": "your-value",
        "MAX_IMAGE_OUTPUT_BYTES": "your-value",
        "MAX_PDF_RENDER_PAGES": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "vault-cortex": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "MCP_AUTH_TOKEN",
        "-e",
        "PUBLIC_URL",
        "-e",
        "EMBEDDING_ENABLED",
        "-e",
        "RERANK_MODE",
        "-e",
        "WINDOWS_MODE",
        "-e",
        "MEMORY_ENABLED",
        "-e",
        "FILE_TOOLS_ENABLED",
        "-e",
        "READONLY_MODE",
        "-e",
        "DISABLED_TOOLS",
        "-e",
        "MEMORY_DIR",
        "-e",
        "DAILY_NOTES_FOLDER",
        "-e",
        "DAILY_NOTES_FORMAT",
        "-e",
        "TRUST_PROXY_HOPS",
        "-e",
        "TRUST_FORWARDED_HOPS",
        "-e",
        "TZ",
        "-e",
        "LOG_LEVEL",
        "-e",
        "LOG_DIR",
        "-e",
        "LOG_RETENTION_DAYS",
        "-e",
        "PROTECTED_PATHS",
        "-e",
        "ORPHAN_EXCLUDE_FOLDERS",
        "-e",
        "SERVICE_DOCUMENTATION_URL",
        "-e",
        "MAX_FILE_BYTES",
        "-e",
        "MAX_IMAGE_OUTPUT_BYTES",
        "-e",
        "MAX_PDF_RENDER_PAGES",
        "ghcr.io/aliasunder/vault-cortex:0.56.3"
      ],
      "env": {
        "MCP_AUTH_TOKEN": "your-value",
        "PUBLIC_URL": "your-value",
        "EMBEDDING_ENABLED": "your-value",
        "RERANK_MODE": "your-value",
        "WINDOWS_MODE": "your-value",
        "MEMORY_ENABLED": "your-value",
        "FILE_TOOLS_ENABLED": "your-value",
        "READONLY_MODE": "your-value",
        "DISABLED_TOOLS": "your-value",
        "MEMORY_DIR": "your-value",
        "DAILY_NOTES_FOLDER": "your-value",
        "DAILY_NOTES_FORMAT": "your-value",
        "TRUST_PROXY_HOPS": "your-value",
        "TRUST_FORWARDED_HOPS": "your-value",
        "TZ": "your-value",
        "LOG_LEVEL": "your-value",
        "LOG_DIR": "your-value",
        "LOG_RETENTION_DAYS": "your-value",
        "PROTECTED_PATHS": "your-value",
        "ORPHAN_EXCLUDE_FOLDERS": "your-value",
        "SERVICE_DOCUMENTATION_URL": "your-value",
        "MAX_FILE_BYTES": "your-value",
        "MAX_IMAGE_OUTPUT_BYTES": "your-value",
        "MAX_PDF_RENDER_PAGES": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • MCP_AUTH_TOKEN secret required env
    Bearer token for MCP client authentication. Must match the Authorization header sent by clients. Generate with: openssl rand -hex 32
  • PUBLIC_URL env
    Public URL clients use to reach this server. Used as the OAuth issuer URL in discovery metadata. Override when exposing the server outside localhost or on a non-default port.
  • EMBEDDING_ENABLED env
    Enable or disable the embedding pipeline. When false, no ONNX model is downloaded, no vector tables are created, and search uses FTS5 only.
  • RERANK_MODE env
    Cross-encoder reranking mode: blended (position-aware score blending after RRF fusion) or none (skip reranking). Only takes effect when EMBEDDING_ENABLED is true.
  • WINDOWS_MODE env
    Windows bind-mount mode: enables filesystem polling for the file watcher and rename-based moves across the Docker Desktop/WSL2 bridge. Set to true when the vault lives on a Windows drive.
  • MEMORY_ENABLED env
    Enable or disable the structured memory layer. When false, memory tools are hidden, bootstrap is skipped, and server metadata omits memory references.
  • FILE_TOOLS_ENABLED env
    Enable or disable file tools (vault_read_file, vault_list_files). When false, file tools are hidden and server metadata omits file tool references.
  • READONLY_MODE env
    Run the server read-only: every vault-writing tool is hidden, the memory folder is not auto-created, and server metadata omits write references.
  • DISABLED_TOOLS env
    Hide individual tools by name, comma-separated. Subtractive only — it cannot re-enable a tool another setting hides; an unknown tool name stops the server at startup.
  • MEMORY_DIR env
    Vault folder for structured memory files (About Me-style notes). Memory tools are hidden when MEMORY_ENABLED is false, but this value still feeds the defaults for PROTECTED_PATHS and ORPHAN_EXCLUDE_F…
  • DAILY_NOTES_FOLDER env
    Vault folder for daily notes. Overrides the folder configured in Obsidian's daily-notes plugin. When unset, read from the vault's .obsidian/daily-notes.json (an empty folder there follows Obsidian's…
  • DAILY_NOTES_FORMAT env
    Filename date format for daily notes (Moment.js tokens). Overrides the format configured in Obsidian's daily-notes plugin. When unset, read from the vault's .obsidian/daily-notes.json, falling back t…
  • TRUST_PROXY_HOPS env
    Number of trusted reverse-proxy hops used to derive the client IP from X-Forwarded-For for OAuth rate limiting and request logs. With 0, injected forwarding headers are ignored.
  • TRUST_FORWARDED_HOPS env
    How many entries from the end of the RFC 7239 Forwarded header's for= list to count to reach the client IP for OAuth rate limiting and request logs. 0 ignores the header; 1 when the proxy in front wr…
  • TZ env
    IANA timezone for timestamps and daily note resolution.
  • LOG_LEVEL env
    Logging verbosity.
  • LOG_DIR env
    Directory for log files that survive container re-creation. The container's own log is always written but discarded when the container is recreated; date-stamped files under LOG_DIR persist on the da…
  • LOG_RETENTION_DAYS env
    Days to keep log files before automatic cleanup on startup; only applies when LOG_DIR is a path.
  • PROTECTED_PATHS env
    Comma-separated vault folder names blocked from vault_delete_note and vault_move_note. Default: MEMORY_DIR plus the daily notes folder, read from DAILY_NOTES_FOLDER or .obsidian/daily-notes.json (def…
  • ORPHAN_EXCLUDE_FOLDERS env
    Comma-separated vault folder names excluded from vault_find_orphans. Default: the daily notes folder, "Templates", and MEMORY_DIR. DAILY_NOTES_FOLDER wins; otherwise .obsidian/daily-notes.json is rea…
  • SERVICE_DOCUMENTATION_URL env
    Override the OAuth service documentation URL exposed via discovery metadata.
  • MAX_FILE_BYTES env
    Largest file vault_read_file will read, in bytes. Reading a larger file returns an error instead of content.
  • MAX_IMAGE_OUTPUT_BYTES env
    Byte budget for images returned by vault_read_file, in binary bytes before base64 encoding. Images exceeding the budget are downscaled/recompressed server-side to fit; raise for clients that accept l…
  • MAX_PDF_RENDER_PAGES env
    Maximum PDF pages to render as images when raw: true is set on vault_read_file. The per-page byte budget is MAX_IMAGE_OUTPUT_BYTES divided evenly across the rendered pages.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account aliasunder, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Docs, sheets & office worki

  • More stars than 0% of the other 2167 servers in this category
  • Published to the registry more recently than 100% of the other 2167 servers in this category
  • Basic checks equal to or better than 100% of the other 2167 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Vault Cortex safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: MCP_AUTH_TOKEN

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.56.3) reached the registry today.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.

What can I use instead?

In the same category: Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Agent-Native Google Calendar - manage events, sync, and public booking

Runs in the cloud★ 7,620MITUpdated 2 months ago
Install

Excel MCP Server

by haris-musa

Lets AI create and edit Excel files itself, including formulas, charts and PivotTables, without Excel installed.

Runs on your computer★ 4,276MITUpdated 5 days ago
Install

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

Runs on your computer★ 847MITUpdated 3 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

Vault Cortex is a standalone MCP server that gives any AI agent hybrid search, task management, structured memory, and read/write access to your Obsidian vault. No plugins, no running Obsidian, no separate bridge. One Docker container, your vault folder, a full tool suite + guided prompts. Run it on a remote server with Obsidian Sync, and the same vault is accessible from your phone, claude.ai, or any remote MCP client, secured with OAuth 2.1. Deploy it with one click or self-host it; either way, the vault is always yours.

Contents — What you get · Quick Start · How It Works · Hybrid Search · Memory · Tasks · Files · Tools · Prompts · Properties · Config · Daily Notes · Data Integrity · Auth · Deployment · One-click Deploy · Community Deployments

What you get

Search the vault Reason over notes Write back to Obsidian

All three demos run on Claude mobile. The vault is on a remote server, not the phone.

  • [Remote access](#remote-access-from-anywhere) — works from your phone, a remote server, or any MCP client via OAuth 2.1. One click on Render or Railway gets you there with no server to manage; a VPS works too.
  • [Plugin-free](#how-it-works) — Obsidian doesn't need to be running. The server works directly with .md files on disk. Headless sync keeps the vault current.
  • [Hybrid search](#hybrid-search) — FTS5 keyword matching + vector semantic similarity via RRF fusion, refined by cross-encoder reranking for intent-heavy queries. Keywords stay precise on exact terms and jargon; vectors find notes even when your words differ from the vault's.
  • [Structured memory](#memory) — dated, append-only entries accumulate into a personal knowledge layer, auto-initialized for AI personalization. Topic recall answers "what do I think about X?" with the current take and the dated history behind it — evolution included.
  • [Tasks](#tasks) — Kanban-aware task queries and updates: triage by status, dates, or priority, then complete, reprioritize, or move tasks between lanes in one call. Completing a recurring task spawns its next occurrence. Parses both Tasks plugin emoji and Dataview inline-field formats.
  • [Link graph](#tools) — backlinks, outgoing links, and orphan detection across the vault
  • [Files](#files) — read the vault's non-markdown files too: images arrive as actual images (shrunk to fit when needed), PDFs as structured text or rendered pages, canvases as readable outlines, data files as text
  • [Obsidian-native](#properties) — understands frontmatter, wikilinks, tags, headings, and daily notes
  • [Guided workflows](#prompts) — built-in prompts for vault health, memory review, and daily reconciliation — assembled from live vault data each time

Tested across a 15-day trip through Europe. 30+ sessions from a phone, 216 tool calls, zero laptop access needed. Writes in one session were immediately available in the next, across cities and days.


Quick Start

Local (2 minutes — Docker + your vault folder)

Prerequisites: Docker (or a Docker-compatible runtime, e.g. OrbStack, Colima, Podman), Node.js >= 22.12 (only for the CLI — the server itself runs in Docker), and an Obsidian vault (or any folder of .md files).

npx vault-cortex@latest init

That's it — the CLI asks for your vault path, generates the auth token and config files, starts the server, and prints the connection details for your MCP client (CLI reference →).

Set up with the CLI? It manages the server from here on — configure, upgrade, start, restart, logs, down (CLI reference →).

Set up with Compose? Stick with Compose for updates too (docker compose pull && docker compose up -d) — the CLI and Compose manage the container independently.

Manual setup (no Node.js needed)

# 1. Get the quickstart files

curl -O https://raw.githubusercontent.com/aliasunder/vault-cortex/main/deploy/local/docker-compose.yml curl -O https://raw.githubusercontent.com/aliasunder/vault-cortex/main/deploy/local/.env.example

2. Configure

cp .env.example .env

Edit .env — set MCP_AUTH_TOKEN (openssl rand -hex 32) and VAULT_PATH

3. Start

docker compose up

[Full local guide →](./deploy/local/) (includes Windows setup)

Remote (access from anywhere)

Your vault on a server, kept current by Obsidian Sync, reachable from your phone, claude.ai, or any MCP client. The one-click options ask for your vault name and timezone (plus the vault password if your vault is encrypted), then handle HTTPS, restarts, a generated MCP token, and persistent storage. Once deployed, a setup page walks you through signing in to Obsidian Sync in your browser. On your own server the CLI asks for the public URL and vault name, captures the Sync token for you, and generates the MCP token; HTTPS is yours to set up.

RailwayRenderSelf-hosted
[CLI setup →](#self-hosted-your-own-vps)
AccountRailway on the Hobby plan or higher — the 5 GB volume is includedRender with a card on fileA VPS with Docker
CostUsage-metered: typically $20–30 USD/mo for a personal vault — a little under Render for a quiet vault, a little over for a busy oneFlat: about $26 USD/mo for the Standard instance (2 GB) and 5 GB disk, billed by the secondWhatever your VPS costs
Pick it ifYou want the easier start — the template lands you in a configured projectA predictable bill matters more than setup polishYou already run a server or want full control
Guide[Railway guide →](./deploy/railway/)[Render guide →](./deploy/render/)[Remote guide →](./deploy/remote/)

All three need an Obsidian Sync subscription. Whichever you pick, the server is replaceable and your vault isn't — it stays in plain Markdown in Obsidian Sync and on your devices; the container only holds a copy.

The setup page. Deploy without an Obsidian Sync token and the server starts in setup mode: opening its URL in a browser lands on a sign-in page at /setup. Enter your Obsidian account credentials once (two-factor supported) — you sign in with Obsidian directly; the server keeps only the Sync token from that sign-in, restarts, and downloads your vault.

The sign-in page, gated by your MCP token. Each deploy guide walks through the full flow.

Self-hosted: your own VPS

The Vault Cortex CLI sets up the same container on any Linux box you run — you manage the server, the image, and

Only the beginning is shown; read the rest in the repo

Ask PopNx