AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
Local DataWeave Playground - no internet needed
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A local IDE for DataWeave 2.0. Run, test and debug transforms without Anypoint Studio, as a desktop app or a VS Code extension.
Most people don't open Anypoint Studio to check a four-line transform. They open the online playground, because it's one tab and it works, until they need vars or attributes, a bigger payload, or a secure property. The usual next steps are a 2 GB IDE, a commercially licensed Docker image, a CLI, or MuleSoft's VS Code extension with its Java and Maven setup. DataWeave Studio is the playground without those limits, with the engine and Java runtime built in.查看完整 README ↗A local IDE for DataWeave 2.0. Run, test and debug transforms without Anypoint Studio, as a desktop app or a VS Code extension.
Most people don't open Anypoint Studio to check a four-line transform. They open the online playground, because it's one tab and it works, until they need
varsorattributes, a bigger payload, or a secure property. The usual next steps are a 2 GB IDE, a commercially licensed Docker image, a CLI, or MuleSoft's VS Code extension with its Java and Maven setup. DataWeave Studio is the playground without those limits, with the engine and Java runtime built in.
Built with Tauri v2 (Rust), React, TypeScript and Monaco. Ships with a bundled JRE 17 and the DataWeave runtime, so there's no Java to install.
Microsoft Store | VS Code Extension | Download | Releases
Also on the VS Code Marketplace. The same app runs inside VS Code with a bundled Java runtime. Install it from the Marketplace and you're done, which makes it the easy option on locked-down work machines. (This is DataWeave Studio's own extension, not MuleSoft's official one, which is what the comparison below refers to.)
Welcome screen: blank transform, open a workspace, import cURL, snippets or a message flow, each one click away
Workbench: payload and context on the left, script in the middle, live output on the right
Monaco editor with DataWeave highlighting, autocomplete for all 361 functions, signature hints and live output
Step debugger: click the gutter to set a breakpoint, then read the call stack, every variable in scope, and evaluate expressions against the paused frame
Real dw::test suites, with clear failure messages and per-test timings
Config encryption: encrypt every secret in a YAML or .properties file at once. Values already written as ![…] are left alone and comments survive
Message Flow Designer: chain Set Payload, Transform, HTTP, Salesforce and Database steps, then step through them
The Flow Designer in the Paper (light) theme, with a Salesforce connector configured
Function reference: all 361 DataWeave functions, searchable, with signatures and descriptions
OpenAPI / Swagger reader: open a 3.x or 2.0 spec, pick an operation, and get a sample payload plus a matching DataWeave skeleton
cURL importer: paste a cURL command and the payload, headers and a matching transform are filled in
Share links: paste a link and the whole setup comes back, including script, payload, variables and headers
Local MCP server: Claude, Cursor or VS Code can run your transforms and check their own work
Snippets: reusable templates for map, filter, group-by, reduce and more
Secure Properties Tool: encrypt and decrypt values with the same algorithms as MuleSoft's tool
Playground layout: a clean three-pane Input, Script, Output view
Settings: Dusk and Paper themes, five accent colours, Workbench and Playground layouts
The same app inside VS Code, with the same Trace panel and the same ~20 ms runs
Testing DataWeave today means picking one of these:
vars or attributes properly.pom.xml, src/main/dw/, src/test/dw/) and scenario files for every input. (DataWeave Studio's own extension has none of these requirements.)DataWeave Studio puts all of it in one window. Install it and start typing.
1. Share a whole setup as one link Copy a link that carries the script, payload, variables, headers and query params, for one request or the whole workspace. Whoever opens it gets the same setup and can press Run. The hosted playground can't do this.
2. A local MCP server Claude, Cursor or any MCP client can compile and run transforms, so your assistant checks its DataWeave instead of guessing.
3. DataWeave Academy and Practice
New to DataWeave? Nine short lessons start from what a payload is and what mapping means, each with something to try and a check at the end. Then hundreds of problems, from your first map to exam-style multiple choice questions for the MuleSoft Developer certification, each with a worked explanation.
4. Visual Message Flow Designer A drag-and-drop canvas inspired by Anypoint Studio. Chain Set Payload, Transform, Set Variable, HTTP Request, Salesforce, Database and Logger steps, then run them all or step through one node at a time and inspect the payload, variables and attributes at each stage.
5. cURL importer
Paste any curl command from Postman or your browser's devtools. Method, headers, query params and body are filled in, with a matching DataWeave scaffold for JSON, XML, CSV, form-urlencoded or multipart.
6. Secure properties
Paste your real secure-config.yaml with its ![Base64Encrypted...] values, give the key when you run, and scripts see the decrypted values. There's also a standalone encrypt/decrypt tool (AES, Blowfish, DES, DESede, RC2) that matches MuleSoft's secure-properties-tool.jar, so you don't depend on a website that might be down or blocked.
7. SOQL and SQL query modes
Write a SOQL or SQL template with :paramName placeholders, run a script that produces the params, and see the final query. SQL values are quoted JDBC-style.
8. Multi-request workspaces
Postman-style collections. Each request in a .dwstudio workspace has its own script, payload, context, named inputs, tests and query template.
9. DW 1.0 to 2.0 migration
Rewrites legacy scripts in place, converting directives, flowVars, inboundProperties and type syntax, with a diff to review before you accept.
10. Nothing to set up
JRE 17 and the DataWeave runtime ship inside the app. No Java install, no JAVA_HOME, no Maven, no PATH changes.
| Feature | DataWeave Studio | MuleSoft VS Code Ext | Online Playground | Anypoint Studio |
|---|---|---|---|---|
| Setup | Download and run | Java, Maven and a project | Open a browser | 2 GB download |
| Startup time | ~1-2 s first run, instant after | Depends on project indexing | Instant | Minutes |
| Offline | Yes | Yes | No | Yes |
| Java required | No (bundled JRE 17) | Yes (Java 8+ and Maven 3.6+) | No | Yes (bundled) |
| Visual flow designer | Yes | No | No | Yes |
| cURL import | Yes | No | No | No |
| Breakpoint debugging | Yes: breakpoints, call stack, watch, step in/over/out | Yes | No | Yes |
| Every expression's value | Yes, in the Trace panel | No | No | No |
| Go to Definition / Rename | Yes | Yes (LSP) | No | Yes |
| Type inference | Yes | Yes (LSP) | No | Yes |
| Target an older Mule runtime | Yes, 4.1 to 4.12 | No | No | Per project |
| Autocomplete | 361 functions plus fields from your payload | LSP, type-aware | Basic | Full LSP |
| Context (vars, attributes, headers) | Forms in the UI | JSON scenario files | Partial | Full runtime |
Config YAML (${key}) | Yes | No | No | Yes |
Secure config (![encrypted]) | Yes, one value or a whole file | No |
In short: it starts where the playground does, open it and type, and keeps going: real vars and attributes, payloads from disk, secure properties, a step debugger, dw::test suites and practice problems. It skips the Java and Maven setup of MuleSoft's extension and the 2 GB of Studio, and cURL import, the Flow Designer, share links and the MCP server are its own.
payload. lists the fields your payload actually has, and inside a map the lambda parameter knows the element type, so item. suggests that element's fieldslookup, config or schema), each with its own editor and formatattributes.methodapplication.yaml-style config and ${key} placeholders resolve in the script and payload![Base64Value] values and ${secure::key} placeholders${salesforce.username}secure-properties-tool.jarNo input to test with? If your script declares types, the Generate button builds a realistic payload from any of them. The engine's generator reads field names, so email gets a plausible address, phone a formatted number, creditCard a valid-looking card number and a DateTime a real timestamp. Preview it, re-roll it, then apply it.
The bundled engine is DataWeave 2.12 (Mule 4.12). If you deploy to something older, a script can work here and fail there: logInfo needs 2.10, the update operator needs 2.3, and around 30 standard-library functions didn't exist in 2.4.
You pick your target once, when you set the app up, and change it any time from the status bar or Settings → Runtime. The default is "latest", which checks nothing. It's one setting for the whole app, because which Mule you deploy to is about you rather than one script. If you work across two runtimes, Settings → Runtime has a per-workspace option.
With a target set:
@Since metadata as MuleSoft's runtime[3, "a", true] orderBy $ fails with InvalidComparisonException on 2.12 but InvalidBooleanException on 2.9The %dw 2.4 header doesn't do this. The runtime only checks it against its own version, so the target is a separate setting.
:paramName placeholders bound from your script's output, and the final query shown:paramName placeholders and JDBC-style quoting (strings quoted, numbers bare, null becomes NULL)dw::test suites. This is MuleSoft's framework, and dw::test::Tests, dw::test::Asserts and dw::io::file are built inExpected value to be 3 but was 2describedBy blocks shown as a tree
dw::testtests functions, so a suite defines what it tests inline or imports it from the Module library. Older builds had a snapshot runner here instead; snapshot data in existing workspaces is kept but no longer used.
curl command from Postman, browser devtools or anywhere else-F flags, including part names, types and file paths$refs, allOf/oneOf/anyOf, enums and formats, and shows auth, servers, webhooks and callbacks127.0.0.1, so Claude, Cursor or any MCP client can run DataWeavejava! imports, and custom modules sent by a client are scanned before usePOST /run) when you want the engine without an MCP client:
curl -X POST http://127.0.0.1:4675/run -H 'Content-Type: application/json' \
-d '{"script":"%dw 2.0\noutput application/json\n---\n{ n: sizeOf(payload) }","payload":[1,2,3]}'
Send a rows array instead of payload/vars to run one script over many inputs and get one result per row, for example to back-test a transform against a CSV export. The script compiles once, so the first row takes about a second and the rest about 15 ms each.mulesoft/docs-dataweave (BSD-3)npm run docs:refresh pulls the reference, format options and cookbook again from the docs branch that matches the bundled enginedoc:id and UUID values on both sides, so Anypoint Studio's id churn doesn't hide the real change.java sources, compile and run them on the bundled JRE, and call them from DataWeave with import java!.dwl modules and import x from MyModule across workspaces.dwstudio files holding the full project state12 built-in templates: hello world, map, filter, sort, group by, reduce/sum, pluck, conditional output, reading a named input, date formatting, JSON to XML, and variables with functions. Click one to insert it at the cursor.
All 361 DataWeave functions with signatures, descriptions and modules. Click one to insert it at the cursor.
Rewrites legacy scripts in place, converting %dw 1.0 directives, flowVars, inboundProperties and type syntax. A side-by-side diff lets you review the changes before you accept.
import java!Every action is available from Cmd/Ctrl+K, grouped into Run, Workspace, Editor, View, Output, Node Label and Tools.
| Shortcut | Action |
|---|---|
Ctrl+Enter / Cmd+Enter | Run script |
Ctrl+S / Cmd+S | Save workspace |
Ctrl+K / Cmd+K | Command palette |
Ctrl+N / Cmd+N | New workspace |
Ctrl+O / Cmd+O | Open workspace |
Ctrl+D / Cmd+D | Duplicate workspace |
Ctrl+B / Cmd+B | Toggle sidebar |
Ctrl+L / Cmd+L | Snippets |
Ctrl+Shift+I / Cmd+Shift+I | Import |
Ctrl+Shift+E / Cmd+Shift+E | Secure Properties Tool |
Ctrl+Shift+R / Cmd+Shift+R | Toggle auto-run |
Ctrl+Shift+T / Cmd+Shift+T | Toggle theme |
Ctrl+Shift+1 / Cmd+Shift+1 | Workbench layout |
Ctrl+Shift+2 / Cmd+Shift+2 | Playground layout |
Alt+Shift+F | Format script |
Ctrl+. / Cmd+. | Cancel running script |
Ctrl+/ / Cmd+/ | Show shortcuts |
Escape | Close dialogs |
On Windows, the Microsoft Store is the easiest option. Microsoft signs the package, so there's no SmartScreen prompt or Smart App Control block, and updates come through the Store.
Otherwise, download the latest installer from the website or the Releases page:
.exe (installer), .msi, _x64_portable.zip (no install, unzip and run), or _x64-setup.zip (the installer, zipped, for networks that block .exe downloads).dmg for Apple Silicon and Intel.AppImage, .deb or .rpmThe direct downloads aren't code-signed (the Store build is). Signing costs about $99 a year for Apple and $300+ for a Windows EV certificate, which is a lot for a free side project, so your OS will warn about an unverified publisher on first launch. SECURITY.md describes exactly what the app does on your network.
Windows, "Windows protected your PC" (SmartScreen): click More info → Run anyway.
Windows, "Smart App Control has blocked this app": use the
_x64_portable.zipinstead (unzip anywhere and runDataWeave Studio.exe). Smart App Control can't be bypassed for a single app without turning it off.Windows, "Your system administrator has prevented this install" (work laptop): that policy applies to installers, so try the
_x64_portable.zip. If your IT also blocks unapproved.exefiles, they'll need to allow it, or use the VS Code extension.macOS, "is damaged and can't be opened": this is the quarantine flag on unsigned apps.
- Drag DataWeave Studio into Applications.
- Open System Settings → Privacy & Security, scroll down, click Open Anyway, then confirm on the next launch.
- If it still won't open, clear the quarantine flag:
xattr -cr "/Applications/DataWeave Studio.app"(On macOS Sequoia and later, the old right-click → Open trick no longer works for unsigned apps.)
Updates: the desktop app checks for a new version on startup and shows a notice when there is one. Nothing downloads until you click. You can turn the check off in Settings → Advanced → Privacy.
DataWeave Studio has no account, telemetry or analytics, and your scripts never leave your machine. The standalone desktop app's update check is counted by version and platform (the Store and VS Code versions don't make one), and in-app feedback is sent only when you choose to send it. The privacy policy has the details, and SECURITY.md lists every network connection for security reviewers.
# 1. Install dependencies
npm install
# 2. Build the DW server JAR (needs Maven and JDK 17)
cd dw-server && mvn package && cd ..
# Produces src-tauri/resources/dw-server/dwstudio-server.jar
# 3. Set up a JRE in resources (for development, link your system JDK)
# Production builds use jlink to create a minimal JRE
# 4. Run in development mode
npx tauri dev
# 5. Build for production
npx tauri build
DataWeave Studio doesn't start the MuleSoft CLI for each run. Instead:
dwstudio-server.jar) on the bundled JRE 17The VS Code extension uses the same protocol. Its Node host (vscode-extension/src/dwHost.ts) starts the same dwstudio-server.jar, so a script behaves the same in both. A small src/bridge.ts sends the UI's invoke() calls to Tauri on the desktop and to the extension host in VS Code, which is how one React codebase serves both.
src/ # React frontend
components/ # UI components
FlowDesigner.tsx # Message flow designer canvas
PracticeScreen.tsx # Practice mode
Sidebar.tsx # Icon rail with snippets, tools and settings
hooks/ # useDWRunner, useWorkspace, useEditorFont
dataweaveGrammar.ts # Syntax highlighting
dataweaveCompletions.ts # Function autocomplete
dataweaveDocs.ts # Function reference data
dataweaveTheme.ts # Dusk and Paper editor themes
bridge.ts # Routes invoke() to Tauri or the VS Code host
src-tauri/ # Rust backend (desktop)
src/dw_runner.rs # Script execution
src/dw_server.rs # Starts and manages dwstudio-server.jar
src/workspace.rs # Workspace save/load
resources/dw-server/ # Bundled dwstudio-server.jar
resources/jre/ # Bundled minimal JRE 17
vscode-extension/ # VS Code extension, reusing the React UI
src/extension.ts # Extension host: the Tauri commands, in Node
src/dwHost.ts # Starts dwstudio-server.jar
dw-server/ # Scala/Java engine server (Maven)
scripts/practice/ # Practice question pipeline and verifier
licenses/ # Third-party licences
${.Things that work that you might not expect:
import java!java::lang::Math, import java!java::util::UUID and any other standard JDK class, because the runtime is a real JVM.![encrypted]) without the Mule runtime.Features that only exist inside a running Mule app:
| Feature | What to do instead |
|---|---|
p("key") / Mule::p("key") | Use the Config YAML panel; ${key} is substituted before each run |
Mule::lookup("flowName", payload) | No equivalent; move the logic into a named input or a separate script |
Connector types (Salesforce SObject, DB ResultSet) | Use a JSON mock of the data as the payload |
output application/javaworks. The Java object is shown as JSON so you can see its structure.
This application embeds the DataWeave engine published by MuleSoft/Salesforce to repository.mulesoft.org (parser, runtime, core-modules, java-module, yaml-module, tooling-api and related modules, pinned at 2.12.2-20260715). Those artifacts declare the Apache License 2.0. The licence text is in licenses/DATAWEAVE-ENGINE-LICENSE.txt and the attribution notices in licenses/DATAWEAVE-ENGINE-NOTICE.txt.
excel-module, which handles application/xlsx payloads, declares MuleSoft's Main Services Agreement rather than an open-source licence.
The function reference, format options and cookbook are generated from mulesoft/docs-dataweave (BSD 3-Clause). See licenses/docs-dataweave-LICENSE.txt and licenses/mulesoft-cookbook-LICENSE.txt.
DataWeave Studio is not affiliated with, endorsed by or sponsored by MuleSoft or Salesforce. DataWeave, Mule, MuleSoft and Anypoint are trademarks of their respective owners, used here only to describe what this tool works with.
The MIT licence covers the source code. It doesn't cover the name "DataWeave Studio", its logo or its visual identity. You're free to fork it, sell it and build on it, as long as you keep the copyright notice. Please ship it under your own name rather than one that suggests it came from here.
| No |
| Yes |
| SOQL/SQL query rendering | Yes | No | No | Yes |
| Testing | dw::test, run in the app | dw::test | No | MUnit |
| Learn and practice | Beginner lessons, 739 problems | No | Tutorials | No |
| Multi-request workspaces | Yes | One mapping per file | No | Per flow |
| Multipart form-data | Visual builder | No | No | Yes |
| DW 1.0 to 2.0 migration | Yes | No | No | Yes |
| Binary formats (xlsx, avro) | Yes | Yes (via Maven) | No | Yes |
| Publish to Exchange | No | Yes | No | Yes |
| Dependency management | Custom classpath | Maven | No | Maven |
| Themes | Dusk, Paper and 5 accents | VS Code themes | Dark | Dark |
| Footprint | ~100 MB | VS Code, Java and Maven | Browser | 2 GB+ |
| Live preview | Auto-run (toggle) | AutoPreview (opt-in) | Always on | No |
| Execution time display | Yes | No | No | No |
| Cancel a running script | Yes | No | No | No |
| Share a setup as a link | Yes | No | No | No |
| MCP server for your AI assistant | Yes, free and local | No | No | Vibes (subscription) |
| HTTP API | Yes, POST /run | No | No | No |
| Configurable timeout | Yes | No | No | No |