YAML workflows
One file defines global config, named flows, and steps. Version control friendly and easy to review.
Telize is a low-code framework for agent-style pipelines: chain shell commands, file I/O, LLM calls, Python functions, and nested flows in one workflow file—validated before execution, with live progress in your terminal.
pip install telize
config:
model: qwen3.5:4b
entrypoint: main
flows:
main:
steps:
- name: greet
uses: llm
prompt: Say hello in one friendly sentence.
Features
Compose powerful automations without giving up control of your stack, data, or models.
One file defines global config, named flows, and steps. Version control friendly and easy to review.
Mix input, llm, shell, python, flow, and yaml actions in any pipeline.
Wire step outputs together with {{ steps.name.output }} and environment variables at load time.
Iterate LLM steps over split lists with loop, and compose pipelines with nested uses: flow steps.
Pydantic models catch schema errors before any step runs. Use --validate-only in CI.
Progress bars, step panels, and clear errors—built on Rich for a polished terminal experience.
Architecture
From YAML file to executed pipeline in five clear stages.
config.entrypoint runs first.Get started
Python 3.12+ required. Ollama (or compatible API) for LLM steps.
pip install telize
git clone https://github.com/telize-ai/telize.git
cd telize
uv sync
uv pip install -e .
telize --version
ollama pull qwen3.5:4b
hello.yamlconfig:
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.
telize -f hello.yaml
Validate without running: telize -f hello.yaml --validate-only
Documentation
Core schema at a glance. Full details in the README.
| Key | Description |
|---|---|
config | Global settings: entrypoint, model, temperature, api_base_url, system_prompt |
flows | Named flows; config.entrypoint must match one key |
uses)| uses | Description |
|---|---|
input | Read a file or 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); optional input map for the child |
{{ env.VAR }} — expanded when the file is parsed
{{ steps.<name>.output }}, {{ config.model }}, {{ item }} in loops
- name: fetch_data
uses: shell
run: cat ./data.txt
- name: summarize
uses: llm
prompt: |
Summarize this:
{{ steps.fetch_data.output }}
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
Examples
Clone the repo and run these from the project root.
Community
Bug reports, documentation, and pull requests are welcome.
PR guidelines, development setup, and code standards.
Report bugs or discuss features before large changes.
Automated tests on every push—pytest, ruff, mypy.
Release notes and version history.
uv sync
uv run pytest
uv run ruff check .
uv run ruff format .
uv run mypy
Install Telize, point it at a YAML file, and orchestrate agents under your control.