Setup
1. Quick start
Install the CLI, add Enzyme instructions to the agent you use, then ask the agent to set up Enzyme for your markdown vault or project notes. Then for the proof: can the agent prep for a real project or meeting?
- 1 Install Enzyme:
curl -fsSL enzyme.garden/install.sh | bash. - 2 From your vault root, run
enzyme install codexfor Codex/Pi/generic AGENTS.md-aware agents, orenzyme install claudefor Claude Code. Hermes and OpenClaw are experimental; see Supported runtimes. - 3 Ask your agent:
Set up Enzyme for this vault. Read the installed enzyme-workspace-setup skill first.
Catalyst generation uses Enzyme hosted credits/auth by default.
Bring your own OpenAI/OpenRouter/OpenAI-compatible or local
provider only when you intentionally pass --use-env-llm. At query-time, Enzyme retrieves locally from the compiled
index.
2. Prove it worked
A useful first run should help the agent onboard itself to context about a real project or meeting-prep. Enzyme should help your agent recover unresolved commitments, prior decisions, and adjacent notes from your own markdown.
- Success: the setup exposes entities you recognize, identifies real open questions, and cites files/excerpts that help prep for a real project or meeting.
- Failure: obvious keyword matches, generic summaries, files that feel adjacent but not useful. You should give feedback to the agent to help it edit its configuration.
Using Hermes Agent? ▼
Start Hermes from the workspace root that contains the markdown you want Enzyme to index. The Enzyme CLI owns local indexing and refresh; Hermes uses the installed skill to know when to call it.
Install the CLI, then run
enzyme install hermes from the workspace root before starting Hermes.
Ask Hermes to set up Enzyme for the workspace. It should preserve the existing markdown structure and show you when memory is ready to use.
Existing Obsidian conventions matter: inbox folders, daily notes, people/contact pages, tags, wikilinks, and date frontmatter are retrieval signal. Enzyme can propose frontmatter or people-page backfills, but it should show the exact files before changing them.
See Hermes Agent + Enzyme for the exact flow.
What does setup write? ▼
Enzyme builds a local semantic graph for your markdown and exposes a CLI to efficiently query it for context. At setup time, it interprets the structure of your workspace and persists this to a configuration that you can modify.
| Command | Writes |
|---|---|
| install.sh | Installs ~/.local/bin/enzyme,
recreates ~/.enzyme while preserving auth.json and config.toml, may run login. No
note content is sent. |
| enzyme install codex | AGENTS.md plus .agents/skills/enzyme-workspace-setup/SKILL.md and .agents/skills/enzyme/SKILL.md. Use this for Codex and generic AGENTS.md-aware
agents such as Pi. |
| enzyme install claude | AGENTS.md, .claude/skills/enzyme-workspace-setup/SKILL.md, .claude/skills/enzyme/SKILL.md, and a CLAUDE.md import of @AGENTS.md. |
| enzyme install hermes/openclaw | Experimental runtime instructions plus global
skill files under ~/.hermes/skills/enzyme/ or ~/.openclaw/skills/enzyme/. |
See Data flow & trust for reset/uninstall details and provider boundaries, and Supported runtimes for the runtime matrix.
3. Coding agents and terminal setup
$ enzyme install codex
# or: enzyme install claude
# experimental: enzyme install hermes / openclaw
Then ask your agent:
> Set up Enzyme for this vault. Read the installed enzyme-workspace-setup skill first, then diagnose what Enzyme actually sees.
Enzyme installs the runtime instructions; your agent handles the setup flow, shows what it found, and gets you to useful retrieval.
Questions
Does it only work with Obsidian? ▼
No. Obsidian works well because its vaults are plain markdown with links, tags, folders, and timestamps. Enzyme can also index any markdown folder with enough accumulated structure to learn from.
Do I need to organize first? ▼
No. Enzyme works with whatever structure exists — half-used tags, links that go nowhere, inconsistent folders. Incomplete organization is still signal. Even 20-30 documents is enough to compile a useful graph.
When should I not use Enzyme? ▼
Use exact search, grep, or Obsidian search when you know the name, date, tag, filename, or phrase. Use a plain vector/RAG tool when you only need semantic passage search over mostly unstructured documents. Use a managed memory API if your first need is a hosted backend for app-user memories.
Enzyme is strongest when your markdown has enough prose and handles — folders, tags, wikilinks, dates, frontmatter, project notes, meeting notes, or decision logs — for an agent to prep from source-grounded context.
Do I need an account or credits? ▼
By default, enzyme init
and enzyme refresh
use Enzyme hosted credits/auth for catalyst generation. They
ignore inherited OPENAI_*
and OPENROUTER_*
env vars so an existing personal key is not used accidentally.
Bring your own OpenAI/OpenRouter/OpenAI-compatible
provider only when you intend to bill through that
provider: set the env vars and run enzyme init --use-env-llm
or enzyme refresh --use-env-llm.
Query-time retrieval from the compiled index is local. The provider/credit path is for generating catalysts during init or refresh.
What gets sent to the cloud? ▼
During enzyme init or enzyme refresh, selected excerpts are sent to an LLM for catalyst
generation. Your raw files stay on your device. Nothing is
stored on Enzyme's servers.
The default path uses Enzyme hosted credits/auth and
ignores inherited personal LLM env keys. If you explicitly
pass
--use-env-llm
with your own API key, excerpts go directly to the provider
you configure. Hosted-credit excerpts are sent to OpenRouter (a US-based model provider). Enzyme does not store your raw
files or log your note content. See privacy for details.
Using local or self-hosted models ▼
Set OPENAI_API_KEY or OPENROUTER_API_KEY
to use your own provider, then pass
--use-env-llm
on enzyme init
or enzyme refresh. Base URL and model overrides are optional; if you only
set model/base without a key, that is an incomplete
env-provider config.
export OPENAI_API_KEY="sk-..."
enzyme init --use-env-llm
# Custom OpenAI-compatible endpoint
export OPENAI_API_KEY="sk-..."
export OPENAI_BASE_URL="https://openrouter.ai/api/v1"
export OPENAI_MODEL="google/gemini-3-flash-preview"
enzyme init --use-env-llm
For local servers (LM Studio, Ollama, vLLM) that don't require authentication, use a placeholder key:
export OPENAI_API_KEY="not-needed"
export OPENAI_BASE_URL="http://localhost:1234/v1"
export OPENAI_MODEL="qwen/qwen3-8b"
enzyme init --use-env-llm
# Ollama
export OPENAI_API_KEY="not-needed"
export OPENAI_BASE_URL="http://localhost:11434/v1"
export OPENAI_MODEL="qwen3:8b"
enzyme init --use-env-llm
When your env provider is active, enzyme init --use-env-llm prints the resolved model, base URL, and a masked key so you
can confirm it's using your provider. Without
--use-env-llm, Enzyme stays on hosted credits/auth even if those env
vars exist.
Provider compatibility: Enzyme uses the OpenAI chat completions format. Most providers work out of the box. Tested providers include OpenRouter, OpenAI-compatible endpoints, Azure OpenAI, Together AI, Groq, LM Studio, Ollama, and vLLM.