Skip to content

Releases: byenzyme/enzyme

Enzyme local model: catalyst-135m-v3

Choose a tag to compare

@jshph jshph released this 12 Aug 03:38

Catalyst 135M v3

catalyst-135m-v3 is Enzyme's small on-device model for generating retrieval
catalysts from a user's own Markdown vault. It is a task-specific SmolLM2-135M
fine-tune, distributed as an IQ4_NL GGUF with an in-domain importance matrix.

Intended use

The model is intended to run inside Enzyme's grammar-constrained local engine.
It generates short questions and tensions that Enzyme embeds for semantic
retrieval. It is not a general-purpose assistant or factual reference model.

Enzyme applies a constrained JSON grammar, a compact local prompt, an 8,192
token context window, and bounded per-entity context. Using the checkpoint
without those serving constraints can produce malformed or low-quality output.

Provenance and privacy

The checkpoint was trained for catalyst generation from pseudonymized examples.
The training dataset is not distributed with the weights. The public checkpoint
was cleared after the project's pseudonym review.

Base model and license

The checkpoint derives from SmolLM2-135M. Users must comply with the base
model's license and notices. Enzyme's source code remains licensed separately
under the repository license.

Limitations

  • Generated catalysts can be awkward, repetitive, or misleading.
  • The model should not be used for factual, medical, legal, or safety-critical advice.
  • Output quality depends on the selected vault excerpts and does not imply that
    the model understands the complete vault.
  • Generated text can reflect biases or errors present in the base model and
    fine-tuning examples.

Artifact

  • File: enzyme-catalyst-135m-v3.gguf
  • Size: 91,727,072 bytes
  • SHA-256: 710a79eea9a84b22cc18b8626b9d893e1a5a2de61f8852fcef839099e8138eab
  • Enzyme install name: catalyst-135m-v3

Install with:

enzyme model install catalyst-135m-v3

enzyme v0.7.2

Choose a tag to compare

@jshph jshph released this 07 Aug 04:44

Enzyme release notes - v0.7.2

Short version

Enzyme now reads a single growing log file — a journal, a running draft file, a
day-sectioned transcript — as the timeline it actually is, instead of one note
pinned to one date. Recognized logs are recorded as log: lines in
config.toml, where you can see what Enzyme noticed and correct it by editing
one line; a recorded log becomes its own retrieval anchor with catalysts drawn
from across its real date span. Date detection now handles weekday-prefixed
headers (Monday, February 16, 2026), the standard export style. The release
also carries the v0.7.1-cycle fixes: symlinked .enzyme dirs survive setup,
the web UI note-save 422 is fixed, and failed background epoch builds surface
in enzyme status.

What shipped

Append-log timelines (range: v0.7.1..v0.7.2, 56c4296)

  • Per-entry chunk dates - chunks cut from a dated log entry carry that
    entry's date (chunks.entry_date), and catalyst context selection uses them,
    so one long journal spreads across its real eras instead of collapsing onto
    its file date. A one-time backfill upgrades already-indexed logs, rewriting
    legacy paragraph-chunked ones and re-queuing them for embedding.
  • Config-declared log entities - enzyme scan --write-config records each
    recognized log as a sorted, deterministic log: line in the vault's
    config.toml entities list. Indexing promotes exactly the recorded logs to
    first-class entities with one occurrence per dated entry (replace semantics —
    re-indexing never inflates frequency). Removing a line removes the entity on
    the next refresh; adding a line promotes an unchanged, already-indexed file.
  • Broader log detection - date headers may be ISO, numeric, prose
    month-name, or weekday-prefixed (Monday, February 16, 2026 /
    Tue 2026-02-17); an arbitrary leading word still correctly blocks
    detection. Validated on a 6,791-doc vault: 17 logs recognized (4 journals,
    13 day-sectioned transcripts), zero false positives — metrics tables,
    backlink scaffolds, and date-citing essays all correctly rejected by the
    entries-with-real-bodies gate.

Workspace-setup skill (ed15ab3)

  • Anchors reveal - setup conversation now leads with what Enzyme anchored
    on in the user's vault (their folders, tags, logs, in their vocabulary),
    paired with questions each anchor makes answerable; health verdicts are the
    footnote, not the headline.
  • Log recognition is a settings edit, never a note edit - the skill no
    longer instructs type: log frontmatter stamping; recognition lives in the
    log: config lines the user can read, narrate, and delete. (This lands the
    wiring the 2026-07-30 skill reviews required before documenting config-based
    log labeling.)
  • Capture coaching - a new bounded section for vaults whose retrieval
    handles do not exist yet: at most two future-capture habits, each tied to a
    concrete finding and the question it would unlock.

v0.7.1-cycle fixes included in this range

  • Symlinked .enzyme dirs preserved and repaired during setup (issue #6,
    3b488e9) - re-setup no longer destroys an iCloud/symlink arrangement.
  • Web UI note save no longer 422s (issue #7, 49145c9) - UI payload
    aligned with the API; legacy shape still accepted.
  • Failed background epoch builds are visible (issue #11, 54f0c1a) -
    enzyme status surfaces a failed background refresh instead of silently
    reporting the stale epoch.

Why this matters

A vault's healthiest capture habit — many dated notes — was always legible to
Enzyme, but its second-most-common shape, the single file that grows by dated
entries, was invisible as a timeline: retrieval saw one blob on one date.
Rather than asking users (or agents) to stamp metadata into their notes, the
recognition is written where the user already curates Enzyme's attention:
config.toml. Detection decides how a file is parsed; only the visible,
user-editable config decides what becomes a retrieval anchor. That split is
also why detection improvements are now low-risk to ship — a wrong recognition
is one deletable line, not silent behavior.

Measured improvements

  • Log timeline coverage: 4 docs / 98 dated chunks -> 18 docs / 565 dated
    chunks on the 6,791-doc development vault after weekday parsing + backfill
    (sqlite counts, 2026-08-06). Caveat: single vault; shape-dependent.
  • False positives: 0 across 6,791 docs; 14 near-miss files (metrics lists,
    dated scaffolds) correctly gated (detection sweep, 2026-08-06). Caveat:
    single vault.

Feedback we responded to

  • Feedback: Recording a log in config did nothing (log_paths was inert),
    so skill guidance was blocked in review.
    Response: The log: entity grammar ships wired end-to-end: scan writes
    it, indexing consumes it, catalysts generate from it.
    Status: shipped

Upgrade / how to try it

curl -fsSL https://enzyme.garden/install.sh | sh
enzyme -p <vault> status        # applies the entry-date backfill on open
enzyme -p <vault> scan --write-config   # records recognized logs as log: lines
enzyme -p <vault> refresh

Then check ~/.enzyme/config.toml for log: lines and remove any you
disagree with. If an older enzyme binary also runs against the same vault
(automations, watchers), upgrade it too — pre-0.7.2 binaries rewrite log
chunks without entry dates when a log file changes.

Maintainer review checklist

  • Git range and release channel are correct (v0.7.1..v0.7.2, master).
  • Every feature claim maps to a commit (56c4296, ed15ab3, 3b488e9,
    49145c9, 54f0c1a).
  • Every metric has before/after/source/caveat.
  • Private feedback is anonymized (internal review threads paraphrased).
  • No unsupported security, privacy, customer, or benchmark claims.

enzyme v0.7.1

Choose a tag to compare

@jshph jshph released this 04 Aug 21:56

Enzyme release notes - v0.7.1

Short version

This patch completes the Anthropic sampling-compatibility fix from v0.7.0 (issue #11). The omit list now covers all current 5-generation model ids (claude-opus-5, claude-haiku-5, claude-mythos-5 join claude-sonnet-5/claude-fable-5), and — more importantly — the client no longer depends on that list for correctness: any HTTP 400 rejecting a sampling parameter now triggers an automatic retry with sampling parameters stripped, memoized per endpoint+model for the rest of the run. Future Anthropic model ids work without waiting for an Enzyme release.

What shipped

  • Expanded sampling-omit list. claude-opus-5, claude-haiku-5, and claude-mythos-5 (plus dated variants) no longer receive temperature/top_p/top_k on Anthropic's endpoint. v0.7.0 covered opus-4-7/opus-4-8/sonnet-5/fable-5 but sent temperature to opus-5, which 400s. (c894459)
  • Reactive strip-and-retry fallback. If a completion that included sampling parameters fails with a 400 whose body names temperature/top_p/top_k, the client retries once with all sampling parameters omitted and memoizes the outcome per (base_url, model) — subsequent calls in the run omit them up front. Applies to both streaming and non-streaming paths; non-400 errors, unrelated 400s, and already-sampling-free requests are unaffected, so there is no interaction with the 402 handling or pipeline retries beyond one extra request the first time an unknown-rejecting model appears. (c95d932)
  • Models that accept sampling parameters (e.g. claude-opus-4-6 and earlier) are unchanged and keep Enzyme's configured temperature.

Verification

  • v0.7.0's shipped binary was verified against a mock of Anthropic's OpenAI-compat endpoint reproducing issue #11: opus-4-8/sonnet-5/fable-5 omit temperature and generate catalysts; opus-5 still failed (loudly, exit 1) — the gap this patch closes.
  • cargo test -p enzyme-core: 437 passed (+5 covering rejection detection, request stripping, retry eligibility incl. the no-infinite-retry case, and memoization). All 16 enzyme-cli suites green.

Upgrade / how to try it

Standard update. BYOK users on Anthropic (--use-env-llm with OPENAI_BASE_URL=https://api.anthropic.com/v1/) can use any current Claude model id; enzyme status should show catalysts after refresh.

enzyme v0.7.0

Choose a tag to compare

@jshph jshph released this 04 Aug 21:09

Enzyme release notes - v0.7.0

Short version

This release redesigns refresh around catalyst epochs, scales catalyst allocation by vault size, and makes hosted billing honest: credits are now deducted only after catalysts are actually generated, and a provider 402 is never misreported as "top up your Enzyme account" — top-up guidance appears only when your account balance is genuinely the cause. Storage shrinks substantially via int8 embedding quantization and one-time occurrence-context slimming (with automatic disk reclaim), and append-only logs (daily notes, journals) are now detected across common date formats and kept as recency excerpts instead of polluting catalyst context. A new fleet-skew compatibility suite pins the CLI↔server wire contract across upgrade skew.

What shipped

Catalyst refresh and allocation

  • Refresh is rebuilt around catalyst epochs. Refresh generates into a shadow epoch and activates it only when the result passes a quality gate, so a failed or degraded refresh keeps your previous catalysts instead of clobbering them. (54d0a95, with carry-forward hardening in 99b002b)
  • Allocation scales with document count. Catalyst budget now anchors on the 90th-percentile vault size instead of a fixed cliff, removing the 20-vs-3 discontinuity between small and mid-size vaults without collapsing large skewed ones. (99b002b, PR #6)
  • Generation reliability. Empty or unparseable LLM responses are retried, and prior catalysts carry forward when a refresh produces nothing. (99b002b)
  • FolderExclusions is the single source of truth for exclusions, threaded through the live selection path; exclude now means don't-index (feeds the index gate). (4699acb, b0ae8e9, b9dc3e8)

Billing you can trust (hosted mode)

  • Credits are deducted only after successful generation. A hosted run that produces zero catalysts now bills zero — the 3-credit init deduct and 1-credit refresh deduct both moved after the success gate. No refund machinery needed. (9572b14)
  • Billing errors can only come from billing endpoints. Provider/LLM errors are typed (LlmApiError { status, body }) and classified by HTTP status alone: a completion-level 402 stops generation with a neutral capacity message ("try later or --use-env-llm"), and never claims your Enzyme balance is empty. Substring matching on error bodies is gone — a 503 that merely mentions "Insufficient credits", or a quota value containing "402", can no longer trigger a false top-up prompt. BYOK (--use-env-llm) runs never touch billing endpoints at all. (9572b14)
  • A reachable server's 402 is no longer reported as "server unreachable." A free-config 402 now says exactly what it is: insufficient Enzyme credits, with top-up guidance — the one place that message belongs. (9572b14)
  • A corrupt shared api-config cache self-heals (drop, refetch, overwrite) instead of erroring out. (9572b14)

Smaller, cleaner storage

  • Embeddings stored as int8 (int8_v1). Chunk and catalyst embeddings quantize to ~4x smaller on-disk form; consumers still operate on f32. One-time migration converts existing vaults. (1c7574c)
  • Occurrence-context slimming + automatic disk reclaim. Full note bodies that the pipeline could never use are slimmed to bounded excerpts (or nulled), with a single post-migration VACUUM keyed on actual freed space. Migrations are crash-idempotent and run concurrently-safe. (6d5d609, 4790af9, 179162e, 21219cb)

Append-only logs handled as logs

  • Daily notes and journals are auto-detected (≥3 dated entries with real bodies, mostly monotonic dates) and contribute a most-recent-entry excerpt instead of a full-body context that pollutes retrieval. Detection now parses ISO, MM/DD/YYYY, MM-DD-YYYY, month-name ("July 28, 2026", "Jul 28 2026"), and "28 July 2026" headers. (fb50fe6, baa817c)
  • Frontmatter type: override is authoritative. type: log|journal|diary|daily forces log handling; type: note|essay|page|reference suppresses it. Detection runs once and is threaded through the pipeline, so an override on a file with unparseable dates degrades explicitly (generic chunking, no recency excerpt) instead of silently misbehaving. (baa817c)
  • Stub notes don't false-positive. The word-count floor was replaced with a structural gate (entries must have non-empty bodies), so dated wikilink lists and short checklists don't get flagged as logs. (baa817c)

Compatibility and installers

  • Fleet-skew compat suite. Seven e2e suites pin the CLI↔server contract across upgrade skew: old CLI × new server response tolerance, pool-dry 402s, entitlement skew, cache/machine skew, and new-endpoint 404 tolerance. The billing-policy acceptance gates that motivated this release ship green. (059be66, d65da09)
  • Installers preserve Enzyme user data across reinstall. (317dda7)
  • Anthropic sampling compatibility fix in the LLM client. (c4f0d3c)

Why this matters

Two failure modes drove this release. First, refresh could destroy good catalysts on a bad run; epochs make refresh transactional. Second, billing errors were classified by substring-matching provider error text, which misattributed provider capacity problems (including shared-pool exhaustion) to the user's account balance and billed credits up front even when generation failed. The new policy is structural rather than heuristic — billing verdicts can only originate from billing endpoints — which is simpler to maintain and impossible to trip with lookalike error text.

Measured improvements

  • Embedding storage: raw f32 → int8_v1, ~4x smaller embedding blobs on disk (format change; exact vault savings depend on chunk count). Source: crates/enzyme-core/src/embedding/quantize.rs, migration in db/migrations.rs. Caveat: no benchmarked end-to-end vault-size numbers in this range.
  • Test coverage: 432 enzyme-core + 106 enzyme-cli tests green at tag time (16 CLI suites, 0 failures), up from 398/~50 at v0.6.2.

Upgrade / how to try it

Standard update path; migrations (context slim, excerpt backfill, int8) run automatically on first open of an existing vault and are crash-idempotent. After updating, enzyme status should show your vault healthy; a one-time pause on first open of a large vault is the storage migration + VACUUM. Hosted users: if generation stops with a capacity message, that is provider/pool-side — your credits were not deducted for failed runs.

Maintainer review checklist

  • Git range and release channel are correct (v0.6.2..HEAD on master).
  • Every feature claim maps to a commit (hashes inline).
  • Metrics carry source + caveat; no invented benchmarks.
  • No unsupported security, privacy, customer, or benchmark claims.

enzyme v0.6.2

Choose a tag to compare

@jshph jshph released this 06 Jul 01:02

Enzyme release notes - v0.6.2

Short version

This patch release fixes the Claude/Codex setup path so enzyme install claude and enzyme install codex install the workspace setup skill that the public setup docs now tell agents to read. It also turns generated AGENTS.md guidance into routing glue instead of a second setup contract, which reduces drift between local agent instructions and the canonical setup skill. The release adds stronger install and sync checks so future setup regressions are caught before a public binary ships.

What changed

  • Workspace setup skill is installed for Claude and Codex. enzyme install claude now installs both .claude/skills/enzyme/SKILL.md and .claude/skills/enzyme-workspace-setup/SKILL.md; enzyme install codex does the same under .agents/skills/. The install output points agents to the setup skill before running setup commands.
  • Setup skill is the canonical setup contract. Generated AGENTS.md now routes agents to the installed skills and explicitly warns that .enzyme/, AGENTS.md, CLAUDE.md, or existing skill files are evidence, not proof that setup is complete or healthy.
  • Existing vault setup is handled explicitly. The workspace setup skill now covers setup, re-setup, diagnosis, and repair; it tells agents not to skip scan/config/init validation just because .enzyme/ already exists.
  • Public skill fetch uses the root skill path. The CLI fetches https://raw.githubusercontent.com/jshph/enzyme/main/skills/enzyme-workspace-setup/SKILL.md, avoiding stale plugin-subtree raw-cache behavior during public setup.
  • Release checks cover the setup routing path. Install matrix, sync contract, Codex install, and agentic setup checks now assert that the setup skill exists, contains the setup command path, and that AGENTS.md does not duplicate setup workflow details.

Validation

  • cargo build -p enzyme-cli
  • cargo test -p enzyme-cli commands::agents -- --nocapture
  • ENZYME_BIN=/Users/joshuapham/Hacks/enzyme-rust/target/debug/enzyme scripts/test_codex_skill_install.sh
  • ENZYME_BIN=/Users/joshuapham/Hacks/enzyme-rust/target/debug/enzyme scripts/release-checks/10-install-matrix.sh
  • ENZYME_BIN=/Users/joshuapham/Hacks/enzyme-rust/target/debug/enzyme scripts/release-checks/20-sync-contract.sh
  • python3 scripts/sync-workspace-setup-skill.py --check
  • python3 scripts/sync-agent-runtime-skill.py --check

Notes

This release is specifically motivated by a public setup mismatch: the site had already started telling agents that enzyme install <runtime> installs enzyme-workspace-setup, but the released 0.6.1 binary only installed the runtime skill. 0.6.2 makes the released binary match that public setup contract.

enzyme v0.6.1

Choose a tag to compare

@jshph jshph released this 05 Jul 21:32

Enzyme release notes - v0.6.1

Short version

This patch release hardens Enzyme's setup and retrieval path for real agent work: provider-compatible LLM requests, delayed catalyst credential gates, clearer hosted LLM failures, and vector rebuilds when the embedding backend changes. It also adds enzyme doctor, a read-only diagnostic command for explaining what Enzyme sees in a vault, and ships the new Enzyme-native workspace setup skill through both the canonical skill and the Claude/Codex plugin mirror. The plugin release removes stale lifecycle hook claims and adds a release guard so hook files cannot silently reappear in the public sync.

What shipped

More tolerant LLM and catalyst setup

  • LLM provider compatibility policy now normalizes configured URLs and sanitizes request payloads for Anthropic-compatible endpoints, reducing provider-specific request failures in hosted and BYOK setups (b1739e0).
  • Catalyst credential checks are deferred until catalyst work actually needs them, while local --use-env-llm preflights still fail before destructive init or detached refresh work begins (435de5b, f80c1cf).
  • Hosted LLM failures preserve returned detail instead of collapsing them into generic messages, so credit, auth, or provider errors remain actionable (ae48bbe).
  • BYOK and index-only init paths no longer require an Enzyme login before work that does not consume hosted Enzyme credits (c32b3f9).

Safer indexing and refresh behavior

  • Enzyme records the embedding backend used to generate vectors and rebuilds generated vectors when the backend changes, avoiding mixed-backend similarity state (505f2c2).
  • Catalyst similarity recompute now skips the delete-and-recompute cycle when indexing, embeddings, and the catalyst fingerprint are unchanged (ee363c8, c32b3f9).
  • MCP vault freshness now degrades to serving existing catalysts when catalyst refresh fails after local index work succeeds, instead of failing petri/catalyze outright (f80c1cf).
  • ESE model fetches use rustls, removing the system OpenSSL headers requirement from that build path (92e8731).

Diagnostics for vault setup

  • enzyme doctor is now available as a read-only diagnostic command with human and JSON output. It reports coverage, files absent from the DB, frontmatter anomalies, undated docs, embedding-window dropouts, stale index state, duplicate sets, and folder date coverage (b965ce1, 150f6c3, 3a92c56).
  • The abandoned standalone structure command was folded into doctor so structural facts live in one diagnostic surface instead of adding another top-level command (b079ca9, 150f6c3).

Workspace setup and plugin sync

  • The canonical workspace setup skill is now Enzyme-native and validated against dump, healthy-big-inbox, and malformed-YAML fixtures, with enzyme doctor as the factual inspection tool (a8c40d1, 151e1da).
  • The Claude/Codex plugin now ships a byte-identical mirror of plugin/skills/enzyme-workspace-setup/SKILL.md, enforced by make check-workspace-skill / scripts/sync-workspace-setup-skill.py --check (aa63eaf, 985a302).
  • The MCP server now embeds the mirrored workspace setup skill path instead of the deleted legacy plugin skill path, preserving the in-server instructions after the mirror rename.
  • Claude/Codex lifecycle hook claims were removed from plugin metadata, and the release workflow now fails if hook files reappear in the synced plugin payload (29fcdac).
  • Both installers remove the legacy local embedding model cache on install so stale cached model artifacts do not survive upgrades (693b3f2).

Why this matters

The release focuses on making Enzyme less brittle at the boundaries users hit first: provider APIs, login state, install state, and vault diagnosis. The guiding pattern is to make local-only work local, delay hosted-service checks until hosted work is needed, and expose facts instead of judgment when the vault shape is the thing under inspection. The plugin sync changes close a packaging gap where stale hook files could remain in the public marketplace even after the source plugin stopped claiming hook support.

Measured improvements

  • Warm catalyst target recompute: 0.23s -> 0.05s on a 638-file warm run after skipping unchanged similarity recompute (ee363c8). Caveat: commit-recorded local run; not a cross-platform benchmark suite.

Feedback we responded to

  • Feedback: Login and credit checks were blocking local setup modes that do not actually use hosted Enzyme inference.
    Response: BYOK, index-only init, and catalyst refresh now defer or soften hosted credential checks according to the work being performed.
    Status: shipped
  • Feedback: Provider-compatible LLM endpoints could reject requests because Enzyme sent fields or URLs that were acceptable for one provider but not another.
    Response: Enzyme now normalizes provider URLs and sanitizes Anthropic-compatible requests before sending them.
    Status: shipped
  • Feedback: Plugin metadata claimed lifecycle hook behavior that Claude/Codex plugin surfaces do not support.
    Response: The claims were removed and release sync now guards against hook files coming back.
    Status: shipped
  • Feedback: Workspace setup agents needed a factual way to inspect vault health without turning a skill into an over-prescriptive rulebook.
    Response: enzyme doctor now provides the facts, and the workspace setup skill uses those facts for a narrower setup workflow.
    Status: shipped

Upgrade / how to try it

Update through the normal Enzyme install path, then run:

enzyme --version
enzyme doctor --json
enzyme refresh

For Claude/Codex plugin installs, use the v0.6.1 marketplace tag once the release sync finishes. Maintainers should verify that the public jshph/enzyme tag no longer contains hooks/hooks.json or .claude-plugin/hooks/hooks.json.

Maintainer review checklist

  • Git range and release channel are correct: v0.6.0..HEAD from the enzyme-rust source-of-truth repo.
  • Every feature claim maps to a commit, PR, or note in the release range.
  • Every metric has before/after/source/caveat.
  • Private feedback is anonymized.
  • No unsupported security, privacy, customer, or benchmark claims.

enzyme v0.6.0

Choose a tag to compare

@jshph jshph released this 16 Jun 04:02

Enzyme release notes - v0.6.0

Short version

This release removes the first-run login wall and makes Enzyme's runtime tools easier for agents and humans to use. A first vault can initialize through Enzyme's hosted path without forcing the agent to reason about account state up front; if login is actually needed, the CLI says so and the skills recover through the device-login flow. petri and catalyze now present readable tree output in interactive terminals while preserving machine-readable JSON for captured/piped tool use, and presentation style is handled by agent instructions rather than a tool parameter.

What shipped

Lower-friction first setup

  • Hosted enzyme init can proceed without an existing login token for the first configured vault on a machine. The CLI still requires login when it is needed for broader hosted use, refresh, or additional configured vaults.
  • Anonymous hosted init sends a stable local bootstrap id so the server can distinguish a limited first-run bootstrap from account-backed usage.
  • Free-tier credit deduction now only runs when an auth token exists; loginless init skips account-credit preflight instead of failing before setup starts.
  • README, architecture, credit policy, install copy, plugin skill copy, and runtime skill copy were updated to match the new flow.

Cleaner agent-facing auth narrative

  • Runtime and setup skills no longer teach agents the details of hosted bootstrap vs. account credits. They now use one operational rule: let Enzyme decide when auth is needed, and only run device login when a command asks for it.
  • Skills keep the important safety boundary: never ask users to paste API keys/tokens, never print secret values, and never silently spend inherited OPENAI_API_KEY or OPENROUTER_API_KEY values.
  • BYOK remains explicit through --use-env-llm; agents verify only that provider env vars exist before using it.

More readable petri and catalyze output

  • Interactive enzyme petri and enzyme catalyze output now renders as a readable tree instead of raw JSON.
  • Captured or piped output remains JSON so scripts, plugin tools, and MCP clients can continue to parse results.
  • catalyze results now include the catalyst bridge that contributed the strongest score for each result, making it easier to explain why a source surfaced.
  • Top catalyst ordering now prefers contribution count and uses relevance as a tie-breaker, preserving more bridge context for callers.

Simpler retrieval API surface

  • The old register presentation parameter has been removed from MCP/tool schemas, hosted search endpoints, Hermes agent tools, and OpenClaw tool definitions.
  • The CLI keeps --register as a hidden deprecated no-op for compatibility, but presentation posture now lives in the installed agent instructions.
  • Plugin hooks now instruct agents to choose exploration, continuity, or reference/import presentation from the user's task instead of from the catalyze response.

Why this matters

The release moves policy decisions back into the CLI and keeps agent skills operational. Agents should not need to model account state, credit policy, or multiple hosted modes before they can initialize a user's vault. They should run setup, preserve provider safety, and recover if the command asks for login.

The presentation changes follow the same principle: retrieval tools should return grounded source context, while agent instructions decide how to narrate it. That keeps MCP, OpenClaw, Hermes, and CLI behavior aligned without multiplying tool parameters.

Measured improvements

No new benchmark or latency metric is claimed for this release. The release includes behavior and surface-area changes; any performance claims should be validated separately.

Feedback we responded to

  • Feedback: First-time setup felt too account-centric for agents and users who just wanted to see Enzyme work on one vault.
    Response: First hosted init can proceed without preemptive login, and the skills now let the CLI request login only when needed.
    Status: shipped

  • Feedback: Agent-facing setup instructions were carrying too much backend policy.
    Response: The skills now use a single operational auth rule plus provider-safety boundaries.
    Status: shipped

  • Feedback: Raw JSON made direct CLI exploration harder to read.
    Response: Interactive petri and catalyze output now renders as a readable tree while captured output stays JSON.
    Status: shipped

Validation

  • python3 -m py_compile scripts/generate-release-notes.py
  • python3 scripts/generate-release-notes.py --from v0.5.15 --to HEAD >/tmp/enzyme-release-skill-prompt.md
  • cargo fmt --check
  • cargo check
  • cargo build -p enzyme-cli --bin enzyme
  • target/debug/enzyme --versionenzyme 0.6.0
  • cargo test -p enzyme-cli --bin enzyme commands::init::tests
  • cargo test -p enzyme-core llm::client --lib
  • python3 scripts/sync-agent-runtime-skill.py --check
  • bash -n plugin/install.sh
  • bash -n plugin/agent/install.sh
  • scripts/test_codex_skill_install.sh
  • Local runtime install smoke checks for claude, hermes, and openclaw with --source local
  • Critical-path audit: pass with a downstream-sync note that ../enzyme-site/public/install.sh still differs before the source release commit/post-commit sync.

Upgrade / how to try it

Update Enzyme, then from a markdown vault run:

enzyme scan
enzyme scan --write-config
enzyme init --quiet
enzyme petri
enzyme catalyze "a theme from petri"

If Enzyme reports that login is required, run the device login flow and retry the original command. If you intentionally want to use your own OpenAI/OpenRouter/OpenAI-compatible provider, set the provider env vars and pass --use-env-llm.

Maintainer review checklist

  • Git range and release channel are correct: v0.5.15..v0.6.0.
  • Every feature claim maps to a commit or working-tree diff in this release.
  • No unsupported metric or benchmark claim is included.
  • Private feedback is anonymized.
  • No unsupported security, privacy, customer, or benchmark claims are included.

enzyme v0.5.15

Choose a tag to compare

@jshph jshph released this 05 Jun 22:04

Enzyme release notes - v0.5.15

Short version

This release makes Enzyme setup safer and easier to explain: enzyme init and enzyme refresh now default to Enzyme hosted credits/auth instead of silently consuming inherited OpenAI/OpenRouter environment keys. Users who intentionally want to bring their own LLM provider can opt in with --use-env-llm. Runtime and setup skills now explain Enzyme as a compile step that turns ordinary markdown into source-grounded questions agents can search quickly.

What changed

Safer LLM provider defaults for init and refresh

  • enzyme init and enzyme refresh now use Enzyme hosted credits/auth by default and ignore inherited OPENAI_* / OPENROUTER_* LLM keys.
  • New explicit opt-in flag: --use-env-llm for users who want their own OpenAI, OpenRouter, OpenAI-compatible, or local provider.
  • Detached/background init and refresh propagate the same provider choice, so agent/voice flows do not accidentally switch providers mid-run.
  • If --use-env-llm is set without a valid env key, Enzyme fails with a direct explanation instead of falling back silently.

Faster non-local catalyst generation

  • Catalyst generation concurrency now treats only local providers (localhost or ENZYME_LOCAL_MODEL=1) as serial.
  • Direct OpenAI/OpenRouter/OpenAI-compatible remote providers use parallel catalyst generation by default.
  • This addresses slow quiet init runs where direct OpenAI was being treated like a local single-request server.

Clearer agent setup language

  • Runtime and setup skills now explain Enzyme as a compiler for markdown memory: init does the slower interpretive pass once, creates source-grounded questions for recurring ideas, and leaves fast search handles for future agents.
  • Refresh is described as the step that folds new markdown into that compiled map.
  • Setup instructions tell agents not to unset shell variables or silently spend personal API keys; use --use-env-llm only when the user intentionally wants their own provider.

Validation

  • cargo check
  • cargo check -p enzyme-cli
  • cargo test -p enzyme-cli --bin enzyme commands::init::tests
  • cargo test -p enzyme-core llm::client --lib
  • cargo test -p enzyme-core pipeline::catalysts --lib
  • python3 scripts/sync-agent-runtime-skill.py --check
  • Manual sanity checks:
    • default enzyme init --quiet with inherited OPENAI_API_KEY fails on missing Enzyme login, proving the env key is not used by default;
    • enzyme init --quiet --use-env-llm without env keys fails before creating .enzyme.

Notes

The CLI still supports env-based providers for users who want BYOK or local catalyst generation; the change is that using those credentials is now explicit.

enzyme v0.5.14

Choose a tag to compare

@jshph jshph released this 29 May 05:41

Enzyme release notes - v0.5.14

Short version

This release makes first-time setup safer and clearer for agent-mediated Enzyme installs. enzyme scan now gives agents richer structured evidence about a markdown workspace, scan --write-config avoids persisting noisy descendant folders or folder-page children, and runtime instructions consistently guide Codex, Claude, Hermes, and OpenClaw through the same setup path. It also tightens BYOK LLM environment handling and reduces embedding-pipeline overhead during init.

What shipped

Better setup scans for agents

  • enzyme scan now emits richer setup evidence: entity samples, frontmatter samples, tag/folder children, folder page entities, expandable-folder hints, bounded sample files, available catalyst profiles, and current config summaries.
  • enzyme scan --write-config now writes durable parent/base folder selections instead of noisy child-folder lists, while runtime selection can still materialize expandable child page links for catalyst generation.
  • New scan/selection docs explain the split between broad setup suggestions and runtime shortlist materialization so future changes preserve that behavior.

Consistent runtime setup instructions

  • Installer and Homebrew caveat copy now point users toward enzyme install codex|claude|hermes|openclaw from the vault, followed by agent-guided setup.
  • Runtime skill and plugin docs now consistently use the scan-preview flow: inspect existing markdown, confirm a setup stance, run enzyme scan --write-config, review ~/.enzyme/config.toml, then run enzyme init.
  • Release workflow guidance now includes a critical-path consistency audit for install/setup/runtime-skill/docs changes before release success is declared.

Provider and init reliability

  • BYOK resolution now prefers OPENAI_API_KEY with optional OPENAI_BASE_URL / OPENAI_MODEL, keeps OPENROUTER_API_KEY as a supported fallback, and ignores partial base/model-only env config instead of blocking the hosted fallback.
  • Init/provider status handling now uses the unified environment-provider marker for BYOK users.

Embedding hot-path cleanup

  • The embedding service now lets the ESE backend process the full input slice instead of forcing service-level batches.
  • Embedding writeback now uses bulk replacement in a single transaction for changed documents, reducing per-document database overhead.
  • Benchmark helper scripts and examples were added for local native/portable CPU comparisons and catalyze validation during init-latency runs.

Why this matters

The most fragile part of Enzyme is the first mile: an agent has to understand a user's existing markdown structure without inventing a new memory system. This release gives agents more deterministic evidence, avoids noisy persisted config, and makes the public install path line up with the runtime skills that actually guide setup.

Measured improvements

No release-grade before/after benchmark is claimed here. The embedding changes include local benchmark tooling and internal evidence notes, but hardware- and vault-specific throughput varies; treat them as implementation cleanup and benchmarking groundwork rather than a public speed guarantee.

Feedback we responded to

  • Feedback: Setup agents were over-selecting child folders and child page links, making config noisy.
    Response: Scan-written config now folds to parent/base folder selections and exposes folder-page evidence for runtime expansion instead of persistence.
    Status: shipped

  • Feedback: Install/docs copy was inconsistent about whether users should run enzyme init directly or install runtime instructions first.
    Response: Installer, runtime skills, Homebrew caveats, and docs now point to enzyme install <runtime> for agent workflows and keep scan --write-config && init as the terminal-only fallback.
    Status: shipped

  • Feedback: LLM env-var guidance was confusing after the OpenAI-compatible path became canonical.
    Response: The resolver now documents and tests OPENAI_API_KEY first, while preserving OPENROUTER_API_KEY compatibility.
    Status: shipped

Upgrade / how to try it

Install or update the CLI:

curl -fsSL enzyme.garden/install.sh | bash

Then install runtime instructions from your markdown vault:

cd /path/to/your/vault
enzyme install codex      # Codex / Pi / generic .agents
enzyme install claude     # Claude Code
enzyme install hermes     # Hermes
enzyme install openclaw   # OpenClaw

Ask your agent: Set up Enzyme for this vault.

For terminal-only setup:

enzyme scan --write-config
$EDITOR ~/.enzyme/config.toml
enzyme init

Maintainer review checklist

  • Git range reviewed: v0.5.13..HEAD.
  • Install/runtime setup critical path audited.
  • Runtime install smoke tests passed for Codex, Claude, Hermes, and OpenClaw using local templates.
  • Core and CLI targeted/full package tests passed locally.
  • Site setup/docs build passed locally.

enzyme v0.5.13

Choose a tag to compare

@jshph jshph released this 21 May 05:05

Enzyme release notes - v0.5.13

Short version

This release makes Enzyme easier to bring into agent runtimes and faster to use in voice-first setup flows. The CLI now has a direct enzyme install <runtime> path for Hermes, OpenClaw, Codex, and Claude, installing durable runtime skills without requiring the old enzyme agents command shape. Voice-ready initialization can return seed Petri context while the full index continues in the background, and streamed provisional catalysts reduce the time before agents have useful first-turn context. Init also fails more clearly when catalyst generation quality is insufficient, and OpenAI GPT-5 token-limit handling is updated.

What shipped

Runtime skill installation

  • Added enzyme install hermes|openclaw|codex|claude as the primary runtime setup command, with Hermes as the default target.
  • Moved substantial agent behavior into runtime-specific skill files while keeping the workspace AGENTS.md marker small, bounded, and replaceable.
  • Codex and Claude installs write workspace-local skills under .agents/skills/enzyme/SKILL.md and .claude/skills/enzyme/SKILL.md.
  • Hermes and OpenClaw installs write runtime skills under $HERMES_HOME/skills/enzyme or $OPENCLAW_HOME/skills/enzyme, falling back to ~/.hermes and ~/.openclaw.
  • Added an isolated Codex smoke harness that installs the skill in a temporary workspace and can run codex exec against it without writing to the user's real workspace.

Voice-ready initialization

  • Added enzyme init --voice-ready for agents that need early readable context before the full semantic index is complete.
  • Added readiness controls: --voice-entities, --voice-min-catalysts, and --voice-timeout-secs.
  • Added streamed provisional catalyst writes for the detached voice-ready worker, so complete catalyst records can become visible before an entity's full LLM response finishes.
  • Documented the voice-ready contract and the difference between seed Petri readiness and full semantic-search readiness.

Init reliability and model compatibility

  • Added guards around catalyst generation quality so init can fail with clearer progress and diagnostics instead of silently accepting poor catalyst output.
  • Updated OpenAI GPT-5 token-limit handling to use the parameter shape expected by newer OpenAI models.
  • Added benchmark artifacts and a reusable init-latency harness for protecting the voice-ready contract.
  • Tightened the shared release workflow so future releases validate runtime skill installs in isolated homes, handle dirty working trees explicitly, and only require marketplace checks when marketplace/plugin files changed.

Why this matters

Agent setup was doing too much through one workspace file and an older enzyme agents command shape. This release makes runtime setup explicit: install the integration for the agent you are actually using, keep the workspace marker small, and let the runtime skill carry the detailed retrieval/write-back behavior. For voice agents, waiting for a full index before speaking creates a poor first-turn experience; --voice-ready separates early Petri context from full initialization while preserving the normal enzyme init completion contract for non-voice usage.

Measured improvements

  • Full copied-vault baseline before voice-ready: 6,442 markdown files copied; normal full init returned in about 27.5s, with indexing at about 8.8s, first entity at about 12.7s, catalysts at about 21.6s, and similarities at about 27.1s (scripts/benchmark_init_latency.py, copied Obsidian benchmark artifact).
  • Voice-ready smoke benchmark: 200-file smoke, high allocation returned early around 2.07s with seed catalysts visible; detached completion followed about 6.33s later with 115 final catalysts and 5,750 similarity rows.
  • Voice-ready full copied-vault benchmark: full copied Obsidian, high allocation returned early around 10.71s with 21 provisional DB catalysts and 14 Petri-visible catalysts; detached completion followed about 39.42s later with 794 final catalysts, 4,503 chunk embeddings, and 39,700 similarity rows.

Caveat: these are local benchmark artifacts committed with the release work, not cross-platform CI performance guarantees.

Feedback we responded to

  • Feedback: Runtime setup needed a direct command for the active agent instead of the old enzyme agents shape.
    Response: enzyme install <runtime> now supports Hermes, OpenClaw, Codex, and Claude.
    Status: shipped

  • Feedback: Voice agents need useful first-turn context without waiting for full initialization.
    Response: enzyme init --voice-ready returns seed Petri context while a detached worker completes the full index.
    Status: shipped

  • Feedback: Enzyme should layer onto existing markdown and Obsidian structure, not impose a new memory schema.
    Response: Runtime skills now explicitly guide agents to preserve folders, tags, wikilinks, frontmatter, people/company conventions, and existing note structure.
    Status: shipped

Upgrade / how to try it

Install or update Enzyme, then run the runtime setup from your workspace root:

enzyme install hermes
# or
enzyme install openclaw
enzyme install codex
enzyme install claude

For voice-first setup:

enzyme init --voice-ready --voice-entities 3 --voice-min-catalysts 1

For normal setup, continue using:

enzyme scan
enzyme scan --write-config
enzyme init --quiet
enzyme status

Maintainer review checklist

  • Git range and release channel are correct: v0.5.12..HEAD.
  • Every feature claim maps to a commit in the release range.
  • Metrics use committed benchmark artifacts and include caveats.
  • Private feedback is anonymized.
  • No unsupported security, privacy, customer, or benchmark claims.