DSL
What is DSL?
DSL is a YAML configuration format that represents an Agent’s full setup, including (depending on type):
metadata (name, description, tags, icon)
prompts / instructions
flows (ChatFlow / JobFlow)
tools and tool parameters
variables and bindings
model configuration
optional capabilities (e.g., file upload, voice)
DSL enables “configuration as code”:
easy backups
easy replication across workspaces
reviewable changes in Git
shareable templates inside your team
Where You Can Use DSL
1) Create from DSL (Agent & Multi-Agent)
When creating a new Agent (or Multi-Agent), you can choose Create from DSL to bootstrap everything from a YAML file.


2) Export DSL (Draft)
From the Agent editor, you can export the current Draft as DSL.

3) Export Config (Published Version)
From Version History, you can export DSL for a specific published Version using Export Config.

4) Import DSL (into an Agent)
You can import a DSL file to load configuration into an Agent.
📌 Important: Depending on your product behavior, importing may:
overwrite the current Draft, or
create a new Agent from the DSL
In this doc, label the behavior exactly as your UI works. If import overwrites Draft, say it explicitly.

Supported Agent Types
DSL supports:
Instruction Agents (system prompt + tools + variables)
ChatFlow Agents
JobFlow Agents
Multi-Agents
The DSL kind field indicates which type it represents (examples below).
DSL Structure Overview
Top-level fields
Most DSL files follow this structure:
kind: the resource type (e.g.,instruction,chatflow,jobflow,multi-agent)version: DSL schema version (e.g.,1.0.0)metadata: identity and display info (name, description, icon, tags, timestamps)spec: the functional definition (prompts, flows, nodes, etc.)model_config: model/provider and generation parameterstools: enabled tools and their parameter schemas/settingsoptional:
abilities,datasets,extend_properties(platform-dependent
Create from DSL (Step-by-step)
Go to Workforce Factory → Agent (or Multi-Agents)
Click Create from DSL
Paste or upload your DSL YAML
Confirm → the system creates an Agent with:
prompts/flows
tools
variables
model config
Review the created Draft
Publish when ready

Export DSL (Draft)
Use this when you want to:
backup work-in-progress
share a configuration with teammates
commit configuration to Git for review
Steps
Open the Agent editor
Click Export as DSL (or equivalent)
Save the YAML file
📌 Reminder: this exports the current Draft (which may not be published yet).
Export Config (Version) — For Auditing & Releases
Use Export Config from Version History when you want a DSL file that represents an immutable released snapshot.
Steps
Open the Agent editor
Open Versions panel
Choose a version → click ⋯ → Export Config
Save the YAML file
This is the best option for:
compliance
production reproducibility
release backups
Import DSL (Step-by-step)
Steps
Open an Agent editor (or creation page, depending on UI)
Click Import DSL
Paste/upload YAML
Confirm import
📌 Behavior to document clearly (choose the one that matches your UI):
Option A — Import overwrites Draft: Import replaces your current Draft configuration.
Option B — Import creates a new Agent: Import generates a new Agent and leaves the original untouched.

Best Practices
Keep DSL in source control
Store exported DSL files in Git to:
track changes over time
review with PRs
compare version snapshots
Use Version export for production baselines
For production releases, export from Versions → Export Config so the artifact matches the published state.
Avoid secrets in DSL
Do not store API keys or secrets in plaintext DSL files.
Use workspace secrets / credentials management (if available)
Reference secrets by name/ID instead of embedding values (recommended)
Watch for portability differences
When importing DSL into another workspace:
tool availability may differ
knowledge bases/datasets may not exist
icon URLs must be accessible
referenced agents/resources may need remapping
Troubleshooting
Import fails due to schema mismatch
Check
versionfield in DSLExport a fresh DSL from a working agent and compare structure
Tools missing after import
Confirm the destination workspace has the same tools enabled
Check tool parameter schemas (required fields)
Variables not bound correctly
Ensure variable keys match the placeholders used in prompts/flows
Rebind variables in the editor if needed
Was this helpful?