WEAVATRIX 1.12.0
ENGINE weavatrix-rust 2.12.0 · LOCAL YAML · READ-ONLY

Dify DSL exports, read as repository evidence.

Weavatrix reads the Dify DSL YAML export committed in your repository, after the existing YAML parse, and answers inventory, trace and context questions on the code graph. It is not the Dify console API, not an editor and not a runner.

Engine on GitHubSee the three tools ↓
# engine weavatrix-rust 2.12.0 adds the Dify domain; product pin is still 2.11.0
$ git clone https://github.com/Weavatrix/weavatrix-rust
$ cargo install --path . --locked

Where this runs in the pipeline

The parser is a domain on the existing structured adapters, not a new MCP product, editor or executor. It reads the exported file that is already committed in your repository.

Dify DSL YAMLafter YAML parsecode graphdify_inventorydify_tracedify_context

What the Dify domain actually asserts

Local YAML only. Every statement below is a property of the parser, not a marketing claim.

AppKey is the identity

AppKey is corpus plus origin. The app title is display text and is never used as identity.

References carry source spans

{{#id.field#}} references and selectors are recorded with their source spans, so an agent can point at the exact line.

Iteration is not flattened

Iteration structure stays intact instead of collapsing into one linear path.

Chat mode is recognized

A chat-mode app is reported as recognized, not returned as an empty success.

Secrets are omitted

Credentials and secret values are omitted from the evidence. No console call, no network path.

Product pin is explicit

The engine on GitHub main is weavatrix-rust 2.12.0. The product pin stays 2.11.0 until the crates.io release.

Three read-only tools on the local export

The engine adds dify_inventory, dify_trace and dify_context over the parsed DSL.

dify_inventory

Apps, nodes and modes present in the local DSL, keyed by AppKey rather than by display title.

dify_trace

Node-to-node paths including preserved iteration structure and variable selectors.

dify_context

Exact node configuration with {{#id.field#}} references and their source spans, secrets omitted.

Weavatrix Dify vs dify-mcp vs difyctl

Three different jobs. Weavatrix reads repository evidence; dify-mcp drives the console API; difyctl lints and diffs in CI.

QuestionWeavatrixdify-mcp / difyctl
Source of truthlocal DSL export in the repodify-mcp: console API · difyctl: CI files
Surface3 read-only evidence toolsdify-mcp: 150+ console API tools
Primary purposeevidence for coding agentsdify-mcp: operate apps · difyctl: lint / diff
Network pathnonedify-mcp: HTTP to the console
Identity modelAppKey = corpus + originconsole app id / file paths

Measured speed, not a new benchmark

157.34 mscold, Rust 1.2.0 installed boundary
5,068.22 mscold, weavatrix-js 0.3.15 (32.21x)
7.94 mswarm, Rust 1.2.0
292.55 mswarm, weavatrix-js 0.3.15 (36.85x)

Measured 2026-08-03 at the installed boundary, Rust 1.2.0 against weavatrix-js 0.3.15 on the same JS service repository: cold 157.34 ms vs 5,068.22 ms (32.21x), warm 7.94 ms vs 292.55 ms (36.85x). The Dify domain shares that in-process graph — there is no HTTP hop to Dify — so no separate Dify millisecond figures are claimed here.

FAQ

Does this call the Dify console API?

No. It reads the local DSL YAML export committed in your repository.

What identifies an app?

AppKey, which is corpus plus origin. The title is display text only.

Is iteration flattened?

No. Iteration structure is preserved.

What happens with a chat-mode app?

It is reported as recognized, not as an empty success.

Which version has it?

Engine weavatrix-rust 2.12.0 on GitHub main. The product pin remains 2.11.0 until crates.io.

Read-only, local only. The Dify domain never contacts the Dify console and never writes your DSL. MIT. GitHub · crates.io · MIT license · Both parsers