Skip to main content

Installing the watsonx Orchestrate Developer Edition

You might encounter errors when installing the watsonx Orchestrate Developer Edition. To address the most common errors, see the following topics for solutions:
  1. Try to log in manually with the following command:
  2. If you manage to log in and the server still fails to start, locate the Docker config file. Usually, you find this file in ~/.docker/config.json. If it doesn’t exist, you can create it.
  3. Add the following content to the file:
    Where BASE64_ENCODED_APIKEY is the base64 encoded string of iamapikey:DOCKER_IAM_KEY.
You get an error message such as the following one:
This issue happens because the Docker daemon runs as a root-owned process that communicates through a Unix socket. You must have the necessary permissions to access this socket.To solve this problem, follow these steps:
  1. Add Docker to the group of users that can use sudo.
  2. Run the following command to log in to a new group:
  3. Check if your user belongs to the docker group:
  4. Try running Docker’s hello-world to check if you’re able to run Docker:
If you encounter an error when starting the server with document processing enabled (--with-doc-processing or -d), such as:
This issue occurs when required document processing Docker images are not available in the registry. This can happen with certain versions or registry configurations.To resolve this issue:
  1. Verify your ADK version: Ensure you’re using the latest version of the ADK CLI:
  2. Update to the latest version if needed:
  3. Reset and restart the server:
  4. Check your registry configuration: If you’re using a custom registry or on-premises setup, verify that all required images are available in your registry. Contact your administrator if images are missing.
  5. Alternative workaround: If document processing is not critical for your current work, start the server without the -d or --with-doc-processing flag:
Note: Document processing requires additional system resources. Ensure your system meets the minimum requirements of 24 GB RAM when using this feature.
When you run orchestrate server start, the ADK pulls Docker images from the IBM Container Registry. If you cannot resolve the registry hostname, the command fails immediately with an error similar to:
Common causes
  • Corporate DNS or web proxy blocking IBM Cloud hostnames
  • VPN split-tunnel configuration dropping traffic to IBM registry endpoints
  • Docker Desktop that uses its own internal DNS resolver rather than the system resolver
  • Cloud VM (AWS EC2, Azure VM, GCP) default DNS not forwarding external hostnames
Step 1 Confirm that DNS resolution is the problemRun the following commands outside of Docker to check whether your system can resolve the hostname at all:
If both commands return NXDOMAIN, no such host, or time out, the problem is with the DNS resolver that you are using. Proceed to the following workarounds.If nslookup succeeds but the ADK still fails, the issue is inside the Docker daemon. Skip to Workaround 3.Step 2 Check whether Docker itself can reach the network
If docker pull hello-world fails, Docker has a general networking problem unrelated to the IBM registry. Reinstall Docker Desktop or check your firewall rules before you continue.Workaround 1 Configure Docker Desktop to use a public DNS serverOn macOS and Windows, Docker Desktop uses its own internal DNS resolver. Override it to use a public resolver such as Google (8.8.8.8) or Cloudflare (1.1.1.1):
  1. Open Docker Desktop.
  2. Go to SettingsDocker Engine.
  3. Add or merge the following JSON into the daemon configuration:
  4. Click Apply & restart.
  5. Retry orchestrate server start.
Workaround 2 Add a static entry to /etc/hosts (Linux / macOS)If DNS resolution consistently fails for the registry hostname, you can pin it to its current IP address as a temporary fix.
  1. Resolve the current IP address from a machine that can reach it (or contact your network team):
  2. Open /etc/hosts with sudo privileges:
  3. Add the following line, replacing <IP> with the address you resolved:
  4. Save the file and retry orchestrate server start.
Static IP entries can become stale if IBM rotates the registry IP. Remove the entry after your DNS issue is resolved and test again with nslookup.
Workaround 3 Configure a corporate proxy for DockerIf your organization routes all outbound traffic through a proxy, you must tell Docker about it so that image pulls can pass through.On macOS and Windows (Docker Desktop):
  1. Open Docker Desktop → SettingsResourcesProxies.
  2. Enable Manual proxy configuration.
  3. Enter your HTTP and HTTPS proxy addresses (for example, http://proxy.company.com:8080).
  4. Add localhost,127.0.0.1 to the No proxy field.
  5. Click Apply & restart.
On Linux, configure the Docker daemon’s systemd drop-in:
Platform-specific notes
For Windows users, you might also encounter containerization issues as Windows systems do not support Docker natively.
If you’re using Windows, you may have created your .env file on your local machine. To make it accessible within your Ubuntu environment in WSL, follow these steps:
  1. Open File Explorer and enter the following path in the address bar, replacing yourUsername with your actual Linux username:
PATH
  1. Open another File Explorer window and navigate to the location where your .env file is saved.
  2. Copy the .env file into your Linux home directory shown in the first window.
If you get an error similar to this:
That’s because you’re using an older version of Docker Compose (v1 instead of v2) that does not support some variable types.To solve this issue, you must install Docker Compose v2.On Ubuntu 24.04, for example, you can simply run the following commands:
Check your distribution repositories for the appropriate packages of Docker Compose v2.
If Homebrew is not installed in your Ubuntu distribution on WSL, you’ll need to install it manually:
  1. Open Ubuntu via the Start Menu
  2. Check if Homebrew is already installed:
BASH
If you get a “command not found” error, proceed to the next step.
  1. Install Homebrew:
BASH
  1. Verify the installation path:
BASH
Note: The default location is usually /home/linuxbrew/.linuxbrew/bin/brew
The ADK supports Python 3.11 to Python 3.14. Follow these steps to configure Python 3.12:
  1. Open Ubuntu via the Start Menu.
  2. Check if Python 3.12 is installed:
BASH
If not installed, continue with the steps below.
  1. Install Python 3.12 using Homebrew:
BASH
  1. Set Python 3.12 as the default:
BASH
  1. Confirm the installation path:
BASH
  1. Verify that Python 3.12 is now the default:
BASH
This should return the installed version of Python 3.12.

Managing connections for Python tools

There are many error messages that may occur when importing a Python tool with credentials (especially one with expected_credentials). Most serve to help guide the user in how to properly define their connections to work with their Python tool.
If no app-id is passed into a tool that has expected_credentials you see the following error:
BASH
To fix this, be sure to pass in the —app-id flag when importing the tool and make sure that the name is correct:
BASH
If you try to pass in a connection that doesn’t exist you see the following:
BASH
To fix this be sure that you create the connection before importing the tool:
BASH
If you specify an app id on a connection that is of a different type than what the tool specifies in expected_credentials you see the following:
BASH
To fix this remove the existing connection with that name and re-create it with the correct type. Or if that connection is used by a different tool that requires that type, create a new connection with a different name (my_app_id_2) and the correct type. Then import using an alias:
BASH

Remote MCP toolkits

The following sections describe errors that can occur when importing or executing remote MCP toolkits.
When you import a remote MCP toolkit that is associated with an SSO/OBO (oauth_auth_on_behalf_of_flow) connection, the import fails with an error similar to the following:
CauseDuring toolkit import, watsonx Orchestrate calls the MCP server’s tools/list endpoint to discover available tools. If the toolkit is bound to an SSO/OBO connection, the platform attempts to obtain an access token from the identity provider. This token exchange requires an authenticated end-user session, which does not exist at import time. The identity provider therefore rejects the request and the import fails.ResolutionConfigure the draft and live environments with different connection kinds. Use key_value for draft (where the import happens) and keep SSO/OBO for live (where tool execution happens with a real user session):
BASH
For more information, see Importing toolkits with SSO/OBO connections.
When a user executes a remote MCP tool through the embedded chat or a Microsoft Teams channel, the call fails. The surface-level error shown to the user is:
The underlying error in platform logs is:
Causewatsonx Orchestrate enforces an 8 KB per-header size limit as part of RFC 6585-compliant header size validation. During remote MCP tool execution with an SSO/OBO connection, the platform propagates the user’s access token in the x-wxo-access-token header. If your application injects many context variables into the JWT, the resulting access token can exceed this limit.ResolutionReduce the size of the JWT payload by removing context variables that are not needed by the agent or MCP tool. Common candidates for removal include internal system values, verbose metadata, or redundant fields added by the identity provider.After pruning, verify that the x-wxo-access-token header stays below 8 KB. You can measure the JWT size by base64-decoding it and checking the payload byte length.
The 8 KB per-header limit applies to each individual header. If your use case requires a larger header, contact IBM support to evaluate configuration options.

Creating agents

When you create an agent on a fresh on-premises (CPD) installation of watsonx Orchestrate, either from the UI or by running orchestrate agents import, the operation fails immediately with:
No additional diagnostic information is provided.CauseThe platform requires at least one LLM model to be registered with the default tag before any agent can be created. On a fresh on-premises installation, no default model exists, so the agent creation request fails.Resolution
  1. Create a model YAML file with the default tag:
    default-model.yaml
  2. Import the model into your on-premises environment:
    If the model is already imported without the default tag, remove it and re-import:
  3. Retry agent creation.
This is a one-time post-installation step. Any model that supports tool calling can serve as the default. For more information, see On-premises deployments: a default model is required before creating agents.