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
- Requirements
- Installation
- Quick start
- How it works
- Workflow reference
- Examples
- CLI
- Development
- Contributing
- License
Features
- YAML workflows — one file defines global config, named flows, and steps
- Composable steps —
input,llm,shell,python,flow, andyamlactions - 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: llmsteps — defaults tohttp://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)
- Telize loads your YAML and validates it against typed models.
- The flow named in
config.entrypointruns first. - Each step executes through a registered action (
input,llm,shell, …). - Later steps can reference earlier outputs via Jinja templates.
- 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.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcdbe2d4a9e825427c02d9e2495da529a029678327fcf2feb110bcfe1bb9b7d8
|
|
| MD5 |
5f56bb5576818f6f2a23c3e04903d25c
|
|
| BLAKE2b-256 |
26b1366d4a8c2671d9f8ba1504f415834f385446b366dfcdc00847bbf01345e4
|
Provenance
The following attestation bundles were made for telize-0.1.0.tar.gz:
Publisher:
publish.yml on telize-ai/telize
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
telize-0.1.0.tar.gz -
Subject digest:
bcdbe2d4a9e825427c02d9e2495da529a029678327fcf2feb110bcfe1bb9b7d8 - Sigstore transparency entry: 1567427757
- Sigstore integration time:
-
Permalink:
telize-ai/telize@dccea498751780e24f0c0ac91e4c77005c6228db -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/telize-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dccea498751780e24f0c0ac91e4c77005c6228db -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb9b3266b738a86ef44d1f2b0773e8b2b3cba49222a79cd13c5a8ead8fe75aed
|
|
| MD5 |
97076e26051bcaa7964cbcc7cd250e09
|
|
| BLAKE2b-256 |
a98cbce522aaa289106dbac22a059d3dd08def6a130760b4b2edc483022bb995
|
Provenance
The following attestation bundles were made for telize-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on telize-ai/telize
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
telize-0.1.0-py3-none-any.whl -
Subject digest:
fb9b3266b738a86ef44d1f2b0773e8b2b3cba49222a79cd13c5a8ead8fe75aed - Sigstore transparency entry: 1567427779
- Sigstore integration time:
-
Permalink:
telize-ai/telize@dccea498751780e24f0c0ac91e4c77005c6228db -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/telize-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dccea498751780e24f0c0ac91e4c77005c6228db -
Trigger Event:
release
-
Statement type: