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.
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.
| Question | Weavatrix | dify-mcp / difyctl |
|---|---|---|
| Source of truth | local DSL export in the repo | dify-mcp: console API · difyctl: CI files |
| Surface | 3 read-only evidence tools | dify-mcp: 150+ console API tools |
| Primary purpose | evidence for coding agents | dify-mcp: operate apps · difyctl: lint / diff |
| Network path | none | dify-mcp: HTTP to the console |
| Identity model | AppKey = corpus + origin | console app id / file paths |
Measured speed, not a new benchmark
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