Quick Start

Get up and running with Dyngle in minutes.

Installation

Dyngle requires Python 3.13 or later.

On MacOS, try:

brew install pipx

Then:

pipx install dyngle

On Debian with Python already installed, try:

python3.13 -m pip install pipx
pipx install dyngle

In containers:

pip install dyngle

After installation, verify that Dyngle is working:

dyngle --help

You should see the command-line help output.

Getting Started

Create a file called .dyngle.yml in your current directory:

dyngle:
  operations:
    hello:
      - echo "Hello world"

Run the operation:

dyngle run hello

You should see:

Hello world

Referencing CLI arguments

Operations can reference arguments passed in to the run command. Update your .dyngle.yml:

dyngle:
  operations:
    hello:
      - echo "Hello {{runtime.args.0}}!"

Run the operation:

dyngle run hello 'Ada'

You should see:

Hello Ada!

Referencing structured data

Command line arguments provide some convenience, but many operations require a more complete data structure. In its simplest form, input data handling can be tried by piping YAML text to the run command.

dyngle:
  operations:
    hello:
      - echo "Hello {{name}}!"

Run the operation:

echo "name: Katherine Johnson" | dyngle run hello

Output:

Hello Katherine Johnson!

Specifying an input data schema

With structured input data, it's possible to specify a schema which is validated when the operation runs. Use accepts: for that, and also move the commands a level down into a steps: entry.

dyngle:
  operations:
    hello:
      accepts:
        full-name:
          required: true
      steps:
        - echo "Hello {{full-name}}!"

This will fail:

echo "name: Jane" | dyngle run hello

But of course this works:

echo "full-name: Jane Goodall" | dyngle run hello

Performing logic with Python

Dyngle supports expressions that use Python, using a limited set of read-only operations.

The basic idea: Python for calculating, steps for doing things.

dyngle: 
  operations:
    hello:
      accepts:
        first-name:
        last-name:
          required: true
      expressions:
        full-name: (first_name if first_name else 'Ms.') + ' ' + last_name
      steps:
        - echo "Hello {{full-name}}!"
echo "last-name: Curie" | dyngle run hello
Hello Ms. Curie!

Creating AI tools

Dyngle includes an MCP server to run its operations. To use it, we need to direct the output from the operation to a variable, and return the variable, so the operation becomes like a function.

dyngle: 
  operations:
    hello:
      accepts:
        first-name:
        last-name:
      expressions:
        full-name: (first_name if first_name else 'Mx.') + ' ' + last_name
      steps:
        - echo "{{full-name}} says 'nice to meet you'." => greeting
      returns: greeting

To try it in Claude Desktop, edit or create ~/Library/Application Support/Claude/claude_desktop_config.json (or equivalent in OS's other than MacOS).

{"mcpServers": {"dyngle": {"command": "dyngle", "args": ["--config", "/absolute/path/to/your/project/.dyngle.mcp.yml", "mcp"]}}}

Then try a prompt:

Say hello to Jennifer Doudna using the Dyngle tool.

Read more