Configuration

Enzyme stores its configuration in ~/.enzyme/config.toml. The file is created automatically on first enzyme init and updated when settings change. You can edit it directly — changes take effect on the next enzyme refresh or enzyme init.

What enzyme init generates

When you run enzyme init in a content directory, Enzyme:

  1. Scans structure — reads tags, links, and folders from your markdown files.
  2. Auto-selects trending entities — picks the most active tags, links, and folders based on recent usage. Defaults: at least 8 tags, 6 links, 6 folders, capped at 30 total.
  3. Writes the config — saves the selected entities and default settings to ~/.enzyme/config.toml.
  4. Generates catalysts — produces cross-cutting questions for each selected entity.

The resulting config looks like this:

[defaults]
minimum_tags     = 8
minimum_links    = 6
minimum_folders  = 6
total_limit      = 30
max_embedding_files = 1024

[vaults."/Users/you/notes"]
entities = ["folder:projects", "#research", "[[Design Principles]]"]

Everything is editable. The auto-selected entities are a starting point — add what’s missing, exclude what doesn’t matter, and run enzyme refresh to regenerate catalysts.

File structure

The config has two sections: [defaults] for global settings and [vaults."<path>"] for per-vault overrides.

[defaults]
minimum_tags     = 8                # minimum trending tag entities to select
minimum_links    = 6                # minimum trending link entities
minimum_folders  = 6                # minimum trending folder entities
total_limit      = 30               # cap on total entities selected
max_embedding_files = 1024          # max docs to embed per run (0 = unlimited)

[vaults."/Users/you/notes"]
entities = ["folder:projects", "[[Design Principles]]", "#research"]
excluded_tags = ["todo", "template"]         # skip these from trending selection
excluded_links = ["Template"]                # skip these links from trending selection
excluded_folders = ["templates"]             # skip these folders from trending selection
targets = ["/Users/you/code/my-app"]         # project catalysts onto external directories
min_top_catalysts = 13                       # minimum catalysts for the largest entity
max_embedding_files = 0                      # override: embed all docs in this vault

Entity reference syntax

Entities in entities and excluded_* fields use this syntax:

# Tags
"#research"
"#enzyme/pmf"            # nested tags

# Wikilinks
"[[Design Principles]]"
"[[Person Name]]"

# Folders
"folder:projects"
"folder:people/contacts"  # nested folders

Entity selection

Enzyme automatically selects trending entities (tags, links, folders) to generate catalysts for. You can override this:

  • entities — The auto-selected entities. These are set on enzyme init and stay fixed across refreshes. You can add or remove entries manually.
  • excluded_tags, excluded_links, excluded_folders — Skip these from automatic selection. Useful for noise like #todo, #template, or utility folders.

Embedding limits

By default, Enzyme embeds the 1,024 most recently created documents per run. For most vaults this covers all active content. For large vaults (10,000+ documents), older documents may be skipped.

To embed all documents regardless of vault size:

# In [defaults] to apply globally:
max_embedding_files = 0

# Or per-vault:
[vaults."/Users/you/large-vault"]
max_embedding_files = 0

The embedding output shows how far back coverage reaches:

  Embedded: back to Mar 2024 (312 docs/sec)

Setting this to 0 means unlimited — every document in the vault gets embedded. This is safe but will increase init time proportionally.

LLM provider setup

Enzyme uses the OpenAI chat completions API format for catalyst generation. Set all three environment variables together:

export OPENAI_API_KEY="sk-..."
export OPENAI_BASE_URL="https://api.openai.com/v1"
export OPENAI_MODEL="gpt-4o"

If none are set, Enzyme uses the default provider for your workspace.

Tested providers

ProviderWorksNotes
OpenRouterYesDefault provider
OpenAIYesDirect API
Azure OpenAIYesUse your Azure endpoint as OPENAI_BASE_URL
Together AIYes
GroqYes
LM StudioYesUse OPENAI_API_KEY="not-needed"
OllamaYesUse OPENAI_API_KEY="not-needed"
vLLMYesUse OPENAI_API_KEY="not-needed"

For local servers that don’t require authentication, set OPENAI_API_KEY to any non-empty string (e.g. "not-needed").

Targets

External directories to project this vault’s catalysts onto:

[vaults."/Users/you/notes"]
targets = ["/Users/you/code/my-app"]

Run enzyme apply /Users/you/code/my-app to index and embed the target directory using your vault’s concept graph. See Apply for details.

File discovery

Enzyme indexes all **/*.md files in the vault, excluding .enzyme/, .obsidian/, .git/, .trash/, and node_modules/. It also respects .gitignore rules.