Workflow Server Manager

The Workflow Server Manager (WFSM) is a command line tool that streamlines the process of wrapping an agent into a container image, starting the container, and exposing the agent functionality through the Agent Connect Protocol (ACP).

The WFSM tool takes an Agent Manifest as input and based on it spins up a web server container exposing the agent through ACP through REST api.

Getting Started

Prerequisites

The utility requires Docker engine, docker, and docker-compose to be present on the host.

To make sure the docker setup is correct on the host, execute the following:

wfsm check

In case the command signals error you can pass the -v flag to display verbose information about the failure.

Installation

Download and unpack the executable binary from the releases page

Alternatively you can execute the installer script by running the following command:

curl -L https://raw.githubusercontent.com/agntcy/workflow-srv-mgr/refs/heads/main/install.sh | bash

The installer script will download the latest release and unpack it into the bin folder in the current directory. The output of the execution looks like this:

 curl -L https://raw.githubusercontent.com/agntcy/workflow-srv-mgr/refs/heads/install/install.sh | bash                                                           [16:05:58]
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1034  100  1034    0     0   2597      0 --:--:-- --:--:-- --:--:--  2597
Installing the Workflow Server Manager tool:

OS: darwin
ARCH: arm64
AG: 0.0.1-dev.23
TARGET: /Users/johndoe/.wfsm/bin
ARCHIVE_URL: https://github.com/agntcy/workflow-srv-mgr/releases/download/v0.0.1-dev.23/wfsm0.0.1-dev.23_darwin_arm64.tar.gz


Installation complete. The 'wfsm' binary is located at /Users/johndoe/.wfsm/bin/wfsm

Listed variables can be overridden by providing the values as variables to the script

Run

Execute the unpacked binary. This outputs the usage string with the available flags and options.

$ wfsm                                                                                                                                                                                   

ACP Workflow Server Manager Tool

Wraps an agent into a web server and exposes the agent functionality through ACP.
It also provides commands for managing existing deployments and cleanup tasks

Usage:
  wfsm [command]

Available Commands:
  check       Checks the prerequisites for the command
  completion  Generate the autocompletion script for the specified shell
  deploy      Build an ACP agent
  help        Help about any command
  list        List an ACP agents running in the deployment
  logs        Show logs of an ACP agent deployment(s)
  stop        Stop an ACP agent deployment

Flags:
  -h, --help      help for wfsm
  -v, --version   version for wfsm

Use "wfsm [command] --help" for more information about a command.

Test the Results

The exposed REST endpoints can be accessed with regular tools (for example, Curl or Postman).

Examples

Example manifests can be found in the WFSM Tool repository.

Note: Paths to the manifests and the paths inside the manifest definitions in the example commands need to be correct on the environment they are executed in!

Expose the Mail Composer LangGraph agent through ACP workflow server

wfsm deploy -m examples/langgraph_manifest.json -e examples/env_vars.yaml

Expose the Email Reviewer llama deploy workflow agent through ACP workflow server

wfsm deploy -m examples/llama_manifest.json -e examples/env_vars.yaml

Expose an agent with dependencies through the ACP workflow server

wfsm deploy -m examples/manifest_with_deps.json -e examples/env_vars_with_deps.yaml

Make sure the url to the manifest of the dependent agent is either an absolute path or a relative path to the directory you are running wfsm tool.

Run agent from docker image

Run deploy with --dryRun to build images.

wfsm deploy -m examples/langgraph_manifest.json -e examples/env_vars.yaml --dryRun

Get the image tag from console athset in the manifest.

    "deployment_options": [

      {
        "type": "docker",
        "name": "docker",
        "image": "agntcy/wfsm-mailcomposer:<YOUR_TAG>"
      }
      ...       
    ]

Run wfsm again now with --deploymentOption=docker:

wfsm deploy -m examples/langgraph_manifest.json -e examples/env_vars.yaml --deploymentOption=docker