[[{“value”:”
SAP’s Joule Studio ships with two development paths: a visual, browser-based low-code builder and a terminal-driven pro-code flow. The jl CLI is the engine behind the latter — giving developers full control over the entire capability lifecycle from the command line.
What Is the Joule Studio CLI?
The Joule Studio CLI (jl) is a globally installed npm package that lets you scaffold, validate, compile, deploy, and manage custom Joule capabilities without ever opening a browser. It’s the tool of choice for developers who prefer working directly with YAML, want to integrate Joule into CI/CD pipelines, or need a headless, automation-friendly workflow. SAP Architecture Center
The
jlCLI is also referred to as thejoulecommand in some SAP documentation and samples — both point to the same package.
Prerequisites
Before you install the CLI, you’ll need:
- Node.js v22.10.0 – v26.x (verify with
node --version; usenvm use 20if you manage versions via nvm) - npm (bundled with Node.js)
- Access to a Joule Studio environment on SAP BTP
Installation
Install the CLI globally from npm:
npm install -g @sap/joule-work-dev-cli-early-adopters@latest
Verify the installation:
jl version
# or
jl -V
The Help Output — At a Glance
Running jl help gives you the full command surface in one shot:
Usage: jl [options] [command]
Solution Management CLI
Options:
-h, --help display help for command
Commands:
solution|s Manage solutions
asset|a Manage assets
mcp Manage MCP servers
a2a Agent-to-agent communication
init [options] [agent] [path] Initialise a directory for an AI coding agent
skills Manage agent skills
login [url] Log in to a backend
logout [url] Log out from the current backend
info [options] Show CLI version and active backend connection
version|v Show the jl client version number
help [command] display help for command
ASSET TYPES
agent Agent asset — AI agent with container and health probe configuration
agent-extension Agent extension asset — extends a base agent with additional capabilities
base-ui Base UI asset — AppRouter-based frontend web application (Next.js, React, etc.)
cap-app CAP application asset — Node.js CAP service with container and health probe configuration
data-product Data product asset — data consumption and production with governance configuration
domain-model-extension Domain model extension asset — adds custom fields to existing CAP entities
mcp-server MCP server asset — API-to-MCP tool mapping (type: mcp-translation, asset.yaml + translation.json + api-spec.json)
n8n-workflow n8n workflow asset — n8n automation workflow integration
vercel-app Vercel app asset — Vercel-deployed frontend application
Names must be DNS-compatible: lowercase letters, digits, and hyphens only (1–63 chars).
SHORTCUTS
s → solution
a → asset
v → version
EXAMPLES
jl login 'https://my-backend.cfapps.eu12.hana.ondemand.com?issuerUrl=https://myias.accounts.cloud.sap&clientId=<id>&appTid=<tid>'
jl solution create --name my-solution
jl solution build
jl solution deploy
jl solution deploy ./build/my-solution-1.0.0.zip
jl solution list
jl solution deploy status
jl solution deploy logs --tail 100
jl mcp tools n8n-mcp
jl mcp call n8n-mcp validate-n8n-workflow workflow="..."
jl mcp call n8n-mcp validate-n8n-workflow --params args.json
jl asset create agent --name my-agent
jl asset create cap-app --name my-service
jl asset create mcp-server --name my-mcp
jl asset delete my-agent
jl solution validate
jl info
Command Groups — What Each One Does
jl login / logout
Authentication is the first step in every session. You pass your landscape URL (including IAS issuer, client ID, and app tenant ID) directly in the command:
jl login 'https://my-backend.cfapps.eu12.hana.ondemand.com?issuerUrl=https://myias.accounts.cloud.sap&clientId=<id>&appTid=<tid>'
This initiates an OAuth 2.0 auth-code flow and stores credentials locally for subsequent commands. Use jl logout to clear them.
jl solution (shortcut: jl s)
The solution command group is the heart of the workflow — it handles the full lifecycle of a Joule solution:
jl solution create --name my-solution # Scaffold a new solution
jl solution validate # Check solution artifacts for errors
jl solution build # Compile into a deployable .zip
jl solution deploy # Deploy to your connected backend
jl solution deploy ./build/my-solution-1.0.0.zip # Deploy a specific build artifact
jl solution list # List deployed solutions
jl solution deploy status # Check deployment status
jl solution deploy logs --tail 100 # Stream the last 100 deployment log lines
jl asset (shortcut: jl a)
Assets are the building blocks that compose a solution. The CLI supports nine distinct asset types:
Asset Type Description
agent |
AI agent with container and health probe configuration |
agent-extension |
Extends a base agent with additional capabilities |
base-ui |
AppRouter-based frontend (Next.js, React, etc.) |
cap-app |
Node.js CAP service with container and health probe config |
data-product |
Data consumption and production with governance config |
domain-model-extension |
Adds custom fields to existing CAP entities |
mcp-server |
API-to-MCP tool mapping (asset.yaml + translation.json + api-spec.json) |
n8n-workflow |
n8n automation workflow integration |
vercel-app |
Vercel-deployed frontend application |
Asset names must be DNS-compatible: lowercase letters, digits, and hyphens only (1–63 characters).
jl asset create agent --name my-agent
jl asset create cap-app --name my-service
jl asset create mcp-server --name my-mcp
jl asset delete my-agent
jl mcp
The mcp command lets you inspect and interact with MCP (Model Context Protocol) servers wired into your solution — useful for testing tool bindings before deploying:
jl mcp tools n8n-mcp # List available tools on the MCP server
jl mcp call n8n-mcp validate-n8n-workflow workflow="..." # Call a tool directly
jl mcp call n8n-mcp validate-n8n-workflow --params args.json # Call with params from a file
jl a2a
The a2a command manages Agent-to-Agent (A2A) communication — the protocol layer used when agents need to delegate work to, or orchestrate, other agents across a Joule landscape.
jl init
Initialises a directory for a specific AI coding agent (e.g., Claude Code, OpenCode). This sets up the local environment so the agent understands the project structure and can invoke jl commands on your behalf via MCP.
jl init [agent] [path]
jl skills
Manages agent skills — the modular, reusable capability units that agents expose to end users through Joule.
jl info
A quick diagnostic command that shows the currently active CLI version and the backend connection it’s authenticated against:
jl info
The Pro-Code Development Lifecycle
Putting it all together, a typical end-to-end flow looks like this:
# 1. Authenticate
jl login '<your-landscape-url>'
# 2. Scaffold a new solution
jl solution create --name my-solution
# 3. Add the assets you need
jl asset create agent --name my-agent
jl asset create cap-app --name my-service
# 4. Author and iterate in your IDE
# 5. Validate before building
jl solution validate
# 6. Build the deployable artifact
jl solution build
# 7. Deploy
jl solution deploy
# 8. Monitor the rollout
jl solution deploy status
jl solution deploy logs --tail 100
CI/CD Integration
The CLI is designed to be fully scriptable, making it a natural fit for automated pipelines. SAP explicitly positions it for headless environments and DevOps workflows — you can drive the full lint → compile → deploy cycle from a GitHub Actions job, a GitLab CI stage, or any other CI runner. Capability artifacts follow a Git-based workflow: everything lives in source control, and your pipeline calls the CLI commands as standard build steps. SAP News
Because every command is non-interactive and scriptable, the CLI drops cleanly into any pipeline runner. A minimal GitHub Actions step might look like:
- name: Deploy Joule Solution
run: |
jl login '${{ secrets.JOULE_BACKEND_URL }}'
jl solution validate
jl solution build
jl solution deploy
Working with AI Coding Agents via MCP
In the pro-code flow, the CLI pairs with an AI coding agent (such as Claude Code or OpenCode) connected to your project via the Model Context Protocol (MCP). The coding agent can read your YAML definitions, suggest changes, and invoke jl commands — while you stay in control of what gets deployed. MCP handles the agent-to-tool connection; A2A (Agent-to-Agent) handles orchestration when multiple agents need to collaborate across a workflow. SAP Architecture Center
CLI vs. Low-Code: When to Use Which
| Low-Code (Browser) | Pro-Code (jl CLI) |
|
| Setup required | None | Node.js + npm |
| Authoring | Visual drag-and-drop | YAML in any IDE |
| Git integration | Limited | Full |
| CI/CD support | No | Yes |
| Best for | Business configurators, rapid prototyping | Developers, DevOps, automation |
Both paths produce the same deployable artifact and register it with the same Joule runtime — so you can start low-code and migrate to CLI-driven workflows as your project matures. SAP Joule Studio
Companion: Joule Studio Code Editor (VS Code Extension)
If you prefer a guided experience that still gives you full YAML control, the Joule Studio Code Editor VS Code extension sits alongside the CLI — providing project scaffolding wizards, inline validation, and a visual preview while the CLI handles build and deploy. The two tools share the same project format and can be used interchangeably. SAP Discovery Center
Summary
The jl CLI brings the full Joule capability lifecycle to the terminal. Whether you’re authoring YAML by hand, integrating with an AI coding agent over MCP, or wiring capability deployments into a CI/CD pipeline, the CLI gives you the scriptability and precision that production-grade development demands. It’s the pro-code path for teams that want Joule to fit into the workflows they already run — not the other way around.
“}]]
[[{“value”:”SAP’s Joule Studio ships with two development paths: a visual, browser-based low-code builder and a terminal-driven pro-code flow. The jl CLI is the engine behind the latter — giving developers full control over the entire capability lifecycle from the command line.What Is the Joule Studio CLI?The Joule Studio CLI (jl) is a globally installed npm package that lets you scaffold, validate, compile, deploy, and manage custom Joule capabilities without ever opening a browser. It’s the tool of choice for developers who prefer working directly with YAML, want to integrate Joule into CI/CD pipelines, or need a headless, automation-friendly workflow. SAP Architecture CenterThe jl CLI is also referred to as the joule command in some SAP documentation and samples — both point to the same package.PrerequisitesBefore you install the CLI, you’ll need:Node.js v22.10.0 – v26.x (verify with node –version; use nvm use 20 if you manage versions via nvm)npm (bundled with Node.js)Access to a Joule Studio environment on SAP BTPInstallationInstall the CLI globally from npm:npm install -g @sap/joule-work-dev-cli-early-adopters@latestVerify the installation:jl version
# or
jl -VThe Help Output — At a GlanceRunning jl help gives you the full command surface in one shot:Usage: jl [options] [command]
Solution Management CLI
Options:
-h, –help display help for command
Commands:
solution|s Manage solutions
asset|a Manage assets
mcp Manage MCP servers
a2a Agent-to-agent communication
init [options] [agent] [path] Initialise a directory for an AI coding agent
skills Manage agent skills
login [url] Log in to a backend
logout [url] Log out from the current backend
info [options] Show CLI version and active backend connection
version|v Show the jl client version number
help [command] display help for command
ASSET TYPES
agent Agent asset — AI agent with container and health probe configuration
agent-extension Agent extension asset — extends a base agent with additional capabilities
base-ui Base UI asset — AppRouter-based frontend web application (Next.js, React, etc.)
cap-app CAP application asset — Node.js CAP service with container and health probe configuration
data-product Data product asset — data consumption and production with governance configuration
domain-model-extension Domain model extension asset — adds custom fields to existing CAP entities
mcp-server MCP server asset — API-to-MCP tool mapping (type: mcp-translation, asset.yaml + translation.json + api-spec.json)
n8n-workflow n8n workflow asset — n8n automation workflow integration
vercel-app Vercel app asset — Vercel-deployed frontend application
Names must be DNS-compatible: lowercase letters, digits, and hyphens only (1–63 chars).
SHORTCUTS
s → solution
a → asset
v → version
EXAMPLES
jl login ‘https://my-backend.cfapps.eu12.hana.ondemand.com?issuerUrl=https://myias.accounts.cloud.sap&clientId=<id>&appTid=<tid>’
jl solution create –name my-solution
jl solution build
jl solution deploy
jl solution deploy ./build/my-solution-1.0.0.zip
jl solution list
jl solution deploy status
jl solution deploy logs –tail 100
jl mcp tools n8n-mcp
jl mcp call n8n-mcp validate-n8n-workflow workflow=”…”
jl mcp call n8n-mcp validate-n8n-workflow –params args.json
jl asset create agent –name my-agent
jl asset create cap-app –name my-service
jl asset create mcp-server –name my-mcp
jl asset delete my-agent
jl solution validate
jl infoCommand Groups — What Each One Doesjl login / logoutAuthentication is the first step in every session. You pass your landscape URL (including IAS issuer, client ID, and app tenant ID) directly in the command:jl login ‘https://my-backend.cfapps.eu12.hana.ondemand.com?issuerUrl=https://myias.accounts.cloud.sap&clientId=<id>&appTid=<tid>’This initiates an OAuth 2.0 auth-code flow and stores credentials locally for subsequent commands. Use jl logout to clear them.jl solution (shortcut: jl s)The solution command group is the heart of the workflow — it handles the full lifecycle of a Joule solution:jl solution create –name my-solution # Scaffold a new solution
jl solution validate # Check solution artifacts for errors
jl solution build # Compile into a deployable .zip
jl solution deploy # Deploy to your connected backend
jl solution deploy ./build/my-solution-1.0.0.zip # Deploy a specific build artifact
jl solution list # List deployed solutions
jl solution deploy status # Check deployment status
jl solution deploy logs –tail 100 # Stream the last 100 deployment log linesjl asset (shortcut: jl a)Assets are the building blocks that compose a solution. The CLI supports nine distinct asset types:Asset Type Description agentAI agent with container and health probe configurationagent-extensionExtends a base agent with additional capabilitiesbase-uiAppRouter-based frontend (Next.js, React, etc.)cap-appNode.js CAP service with container and health probe configdata-productData consumption and production with governance configdomain-model-extensionAdds custom fields to existing CAP entitiesmcp-serverAPI-to-MCP tool mapping (asset.yaml + translation.json + api-spec.json)n8n-workflown8n automation workflow integrationvercel-appVercel-deployed frontend applicationAsset names must be DNS-compatible: lowercase letters, digits, and hyphens only (1–63 characters).jl asset create agent –name my-agent
jl asset create cap-app –name my-service
jl asset create mcp-server –name my-mcp
jl asset delete my-agentjl mcpThe mcp command lets you inspect and interact with MCP (Model Context Protocol) servers wired into your solution — useful for testing tool bindings before deploying:jl mcp tools n8n-mcp # List available tools on the MCP server
jl mcp call n8n-mcp validate-n8n-workflow workflow=”…” # Call a tool directly
jl mcp call n8n-mcp validate-n8n-workflow –params args.json # Call with params from a filejl a2aThe a2a command manages Agent-to-Agent (A2A) communication — the protocol layer used when agents need to delegate work to, or orchestrate, other agents across a Joule landscape.jl initInitialises a directory for a specific AI coding agent (e.g., Claude Code, OpenCode). This sets up the local environment so the agent understands the project structure and can invoke jl commands on your behalf via MCP.jl init [agent] [path]jl skillsManages agent skills — the modular, reusable capability units that agents expose to end users through Joule.jl infoA quick diagnostic command that shows the currently active CLI version and the backend connection it’s authenticated against:jl infoThe Pro-Code Development LifecyclePutting it all together, a typical end-to-end flow looks like this:# 1. Authenticate
jl login ‘<your-landscape-url>’
# 2. Scaffold a new solution
jl solution create –name my-solution
# 3. Add the assets you need
jl asset create agent –name my-agent
jl asset create cap-app –name my-service
# 4. Author and iterate in your IDE
# 5. Validate before building
jl solution validate
# 6. Build the deployable artifact
jl solution build
# 7. Deploy
jl solution deploy
# 8. Monitor the rollout
jl solution deploy status
jl solution deploy logs –tail 100CI/CD IntegrationThe CLI is designed to be fully scriptable, making it a natural fit for automated pipelines. SAP explicitly positions it for headless environments and DevOps workflows — you can drive the full lint → compile → deploy cycle from a GitHub Actions job, a GitLab CI stage, or any other CI runner. Capability artifacts follow a Git-based workflow: everything lives in source control, and your pipeline calls the CLI commands as standard build steps. SAP NewsBecause every command is non-interactive and scriptable, the CLI drops cleanly into any pipeline runner. A minimal GitHub Actions step might look like:- name: Deploy Joule Solution
run: |
jl login ‘${{ secrets.JOULE_BACKEND_URL }}’
jl solution validate
jl solution build
jl solution deployWorking with AI Coding Agents via MCPIn the pro-code flow, the CLI pairs with an AI coding agent (such as Claude Code or OpenCode) connected to your project via the Model Context Protocol (MCP). The coding agent can read your YAML definitions, suggest changes, and invoke jl commands — while you stay in control of what gets deployed. MCP handles the agent-to-tool connection; A2A (Agent-to-Agent) handles orchestration when multiple agents need to collaborate across a workflow. SAP Architecture CenterCLI vs. Low-Code: When to Use Which Low-Code (Browser)Pro-Code (jl CLI)Setup requiredNoneNode.js + npmAuthoringVisual drag-and-dropYAML in any IDEGit integrationLimitedFullCI/CD supportNoYesBest forBusiness configurators, rapid prototypingDevelopers, DevOps, automationBoth paths produce the same deployable artifact and register it with the same Joule runtime — so you can start low-code and migrate to CLI-driven workflows as your project matures. SAP Joule StudioCompanion: Joule Studio Code Editor (VS Code Extension)If you prefer a guided experience that still gives you full YAML control, the Joule Studio Code Editor VS Code extension sits alongside the CLI — providing project scaffolding wizards, inline validation, and a visual preview while the CLI handles build and deploy. The two tools share the same project format and can be used interchangeably. SAP Discovery CenterSummaryThe jl CLI brings the full Joule capability lifecycle to the terminal. Whether you’re authoring YAML by hand, integrating with an AI coding agent over MCP, or wiring capability deployments into a CI/CD pipeline, the CLI gives you the scriptability and precision that production-grade development demands. It’s the pro-code path for teams that want Joule to fit into the workflows they already run — not the other way around.”}]] Read More Technology Blog Posts by SAP articles
#SAPCHANNEL