Unboxing Joule Studio: Exploring the jl CLI : Your First Steps
Share

[[{“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 jl CLI is also referred to as the joule command 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; use nvm use 20 if 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

terminal (1).gif

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>'

2026-09-30_17-18-14.png

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:

terminal (2).gif

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

By ali

Leave a Reply