Skip to main content

mindyard

Your personal LLM wiki: a git-versioned Markdown vault, served over MCP to Claude.ai, Claude Desktop, Claude Code or any MCP client.

The model reads, searches and edits your wiki through six tools. The server does the bookkeeping that keeps the wiki trustworthy, and no model runs on it:

  • every write is a git commit, applied atomically: a batch of edits lands whole or not at all;
  • no lost updates: editing a page requires the version you read, and a stale one is rejected (optimistic concurrency);
  • write zones: sources in raw/ are create-only, the index, log and schema cannot be deleted, and wiki.yaml (the rules) is read-only for the model, except to define a new vault once, with your agreement;
  • the protocol travels with the server: clients without any skill still get the method through the MCP instructions and tool descriptions;
  • a deterministic linter checks links, orphans, frontmatter and the rules your wiki.yaml declares (required fields, closed status lists, statuses implied by dates).

Status: early release (0.1). Website: mindyard.dev.

Quickstart

uv tool install mindyard        # or prefix each command with `uvx`, or `pip install mindyard`
mindyard init ./data/vaults/garden --demo
mindyard lint ./data/vaults/garden
claude mcp add mindyard -e MINDYARD_DATA_ROOT=$PWD/data -- mindyard serve --stdio

--stdio lets a local client launch the server itself: no port, no token, the vaults of the user who runs it. Claude Desktop takes the same command in claude_desktop_config.json:

{
  "mcpServers": {
    "mindyard": {
      "command": "uvx",
      "args": ["mindyard", "serve", "--stdio"],
      "env": { "MINDYARD_DATA_ROOT": "/home/you/data" }
    }
  }
}

Over HTTP instead, MINDYARD_DATA_ROOT=./data mindyard serve listens on http://127.0.0.1:8787/mcp, without auth and on loopback only; authentication below opens it to Claude.ai and remote clients.

To reach your wiki from Claude.ai on the web and on your phone, deploy it on a server: step-by-step guide for a VPS (Google sign-in, systemd, Caddy or nginx).

mindyard init DIR without --demo creates an empty vault. Every directory under <data root>/vaults/ holding a wiki.yaml is served as one wiki.

A vault

garden/
  wiki.yaml    # enforced: layout, entity kinds, lint rules (read-only for the model)
  schema.md    # advisory: what the wiki is about, conventions, for the model
  index.md     # one line per page
  log.md       # one entry per operation
  raw/         # sources, verbatim, create-only
  wiki/        # distilled pages, linked with [[wikilinks]] (Obsidian-compatible)

Authentication

Set MINDYARD_AUTH:

Value For Notes
none local use refuses to listen beyond loopback
bearer remote Claude Code or Desktop, scripts mindyard token new laptop prints a token once; only its SHA-256 is stored
google Claude.ai (OAuth) needs MINDYARD_BASE_URL, MINDYARD_GOOGLE_CLIENT_ID, MINDYARD_GOOGLE_CLIENT_SECRET, MINDYARD_ALLOWED_EMAILS; an account off the list is refused at sign-in

Claude Code against a remote server, with a bearer token:

claude mcp add --transport http mindyard https://wiki.example.org/mcp \
  --header "Authorization: Bearer $MINDYARD_TOKEN"

Claude.ai custom connectors accept static headers for some accounts only; OAuth (google) is the route that works everywhere.

Configuration

Variable Default
MINDYARD_DATA_ROOT (required) holds vaults/, tokens.yaml, state/
MINDYARD_AUTH none none, bearer, google
MINDYARD_TENANCY single mapped: several tenants, see below
MINDYARD_HOST, MINDYARD_PORT, MINDYARD_PATH 127.0.0.1, 8787, /mcp
MINDYARD_BASE_URL public URL, for OAuth
MINDYARD_ALLOWED_EMAILS comma-separated, verified emails only
MINDYARD_TELEMETRY 1 one log line per tool call; argument values are never logged

state/ holds the OAuth proxy's client registrations and tokens. It is not a cache: deleting it signs every client out.

Several tenants. With MINDYARD_TENANCY=mapped, tenants.yaml maps identities (issuer and subject, never the email) to tenants, whose vaults live under tenants/<tenant>/. A caller only ever sees its own tenant's wikis; no tool takes a tenant argument.

Docker

cp compose.example.yaml compose.yaml   # adjust user, auth, volume
docker compose up -d

Put a TLS reverse proxy in front; the server itself enforces authentication.

Development

uv sync
uv run ruff check && uv run ruff format --check && uv run mypy && uv run pytest

A client skill carrying the editorial method is in skills/mindyard/.

Contributions are welcome: see CONTRIBUTING.md. Contributors sign a license agreement (CLA.md). Security issues: SECURITY.md.

License

AGPL-3.0-or-later. See LICENSE.

Metadata

Release files for mindyard 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mindyard 0.1.4
File Size Uploaded Provenance Actions
mindyard-0.1.4.tar.gz 207.2 kB With provenance Details for mindyard-0.1.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mindyard 0.1.4
File Interpreter ABI Platform Actions
mindyard-0.1.4-py3-none-any.whl Python 3 none any Details for mindyard-0.1.4-py3-none-any.whl

Total release size: 290.0 kB

Release files / mindyard-0.1.4.tar.gz

Download URL mindyard-0.1.4.tar.gz
Size 207.2 kB
Tags Source
SHA-256 checksum
How to use checksums
739e63c58ceb7a1f4eed9e274b36a56f7ca8439eccfd8f69df97984a5f8d745c
BLAKE2b-256 checksum
How to use checksums
2b9ab3c73f542f90cbd4f3ba2d2cd9f73499b969ee6fcf5be28ca50f70cfba05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.

Transparency log

Release files / mindyard-0.1.4-py3-none-any.whl

Download URL mindyard-0.1.4-py3-none-any.whl
Size 82.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dd9daafd879adbbf4da6fb9eaec214836d5fd39f41efb7713d8458ef7ef1202a
BLAKE2b-256 checksum
How to use checksums
722c069387973ba82d8f451566d30020fc693521946bc20436cf447d0affe721
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.

Transparency log

Security for mindyard 0.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mindyard-0.1.4.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page