Skip to main content

Low-code agent framework: define agents and flows in YAML, run them from the CLI.

Project description

Telize

Unleash orchestrated AI agents with superhuman reach—build intricate, multi-stage workflows in YAML and command their power from your terminal, under your complete control.

Telize is a low-code framework for building agent-style pipelines: chain shell commands, file I/O, LLM calls, Python functions, and nested flows in a single workflow file. Configuration is validated before execution, and the CLI shows live progress as each step completes.

CI · Python 3.12+ · License


Table of contents

Features

  • YAML workflows — one file defines global config, named flows, and steps
  • Composable stepsinput, llm, shell, python, flow, and yaml actions
  • Jinja templating — wire step outputs together with {{ steps.name.output }}
  • Loops and sub-flows — iterate LLM steps over split lists; call nested flows with uses: flow
  • Validated upfront — Pydantic models catch schema errors before any step runs
  • Rich CLI output — progress, step panels, and errors in the terminal
  • Local LLM ready — works with Ollama out of the box

Requirements

  • Python 3.12+
  • Ollama (or another endpoint compatible with the Ollama API) for uses: llm steps — defaults to http://localhost:11434
  • Optional: uv for fast local development

Installation

pip install telize

From source:

git clone https://github.com/telize-ai/telize.git
cd telize
uv sync
uv pip install -e .

Check the install:

telize --version

Quick start

1. Start Ollama and pull a model (if you use LLM steps):

ollama pull qwen3.5:4b   # or any model you set in config

2. Create hello.yaml:

config:
  model: qwen3.5:4b
  api_base_url: http://localhost:11434
  entrypoint: main

flows:
  main:
    steps:
      - name: greet
        uses: llm
        prompt: Say hello in one friendly sentence.

3. Run it:

telize -f hello.yaml

Validate the file without executing steps:

telize -f hello.yaml --validate-only

Run the bundled examples:

telize -f examples/hello_simple.yaml
telize -f examples/hello_agent.yaml

How it works

┌─────────────┐     ┌──────────────┐     ┌─────────────────┐
│  workflow   │────▶│  load +      │────▶│  WorkflowRunner │
│  .yaml      │     │  validate    │     │  (entrypoint)   │
└─────────────┘     └──────────────┘     └────────┬────────┘
                                                  │
                     ┌────────────────────────────┼────────────────────────────┐
                     ▼                            ▼                            ▼
                   steps                      loops                       sub-flow
              (step → step)            (split & iterate)              (uses: flow)
  1. Telize loads your YAML and validates it against typed models.
  2. The flow named in config.entrypoint runs first.
  3. Each step executes through a registered action (input, llm, shell, …).
  4. Later steps can reference earlier outputs via Jinja templates.
  5. The CLI prints progress and results as the workflow runs.

Workflow reference

Top-level structure

Key Description
config Global settings: entrypoint, model, temperature, api_base_url, system_prompt
flows Named flows; config.entrypoint must match one of these keys

Flow

Field Description
steps List of steps (unique name per flow), executed in order

Steps (uses)

uses Description
input Read a file or a directory (with glob include)
llm Send a prompt to the configured model; optional output_to, loop
shell Run run commands; optional envs (supports templates)
python Call call (module.function) with args
flow Run another flow via run
yaml Run an external workflow from file (own config and flows); optional input map passed to the child as {{ input.key }}

Templating

Telize uses Jinja2 in step fields.

When What you can use
Load time {{ env.VAR }} — expanded when the file is parsed
Runtime {{ steps.<name>.output }}, {{ config.model }}, {{ input.<key> }}, {{ item }} (inside loops)

Workflow input is provided when invoking Telize from the shell (--input, --input-file, --input-stdin) or by a parent yaml step's input map when running a nested workflow.

Example — chain a shell step into an LLM step:

- name: fetch_data
  uses: shell
  run: cat ./data.txt

- name: summarize
  uses: llm
  prompt: |
    Summarize this:
    {{ steps.fetch_data.output }}

Examples

File What it demonstrates
examples/hello_simple.yaml Minimal pipeline: shell → LLM
examples/hello_agent.yaml Full showcase: input, loops, shell, python, and sub-flows

CLI

usage: telize [-h] [--version] [-f FILE] [--validate-only]

options:
  -h, --help         show help
  --version          show version
  -f, --file FILE    path to workflow YAML
  --validate-only    parse and validate without running steps

Development

uv sync
uv run pytest
uv run ruff check .
uv run ruff format .
uv run mypy

See CONTRIBUTING.md for pull request guidelines and CHANGELOG.md for release notes.

Contributing

Contributions are welcome — bug reports, docs, and pull requests. Please read CONTRIBUTING.md and open an issue before large changes.

License

Apache License 2.0 — see LICENSE.


GitHub · Issues · Changelog

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

telize-0.1.0.tar.gz (107.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

telize-0.1.0-py3-none-any.whl (33.4 kB view details)

Uploaded Python 3

File details

Details for the file telize-0.1.0.tar.gz.

File metadata

  • Download URL: telize-0.1.0.tar.gz
  • Upload date:
  • Size: 107.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for telize-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bcdbe2d4a9e825427c02d9e2495da529a029678327fcf2feb110bcfe1bb9b7d8
MD5 5f56bb5576818f6f2a23c3e04903d25c
BLAKE2b-256 26b1366d4a8c2671d9f8ba1504f415834f385446b366dfcdc00847bbf01345e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for telize-0.1.0.tar.gz:

Publisher: publish.yml on telize-ai/telize

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file telize-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: telize-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 33.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for telize-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fb9b3266b738a86ef44d1f2b0773e8b2b3cba49222a79cd13c5a8ead8fe75aed
MD5 97076e26051bcaa7964cbcc7cd250e09
BLAKE2b-256 a98cbce522aaa289106dbac22a059d3dd08def6a130760b4b2edc483022bb995

See more details on using hashes here.

Provenance

The following attestation bundles were made for telize-0.1.0-py3-none-any.whl:

Publisher: publish.yml on telize-ai/telize

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page