agentl¶
Agentic ETL for Python. Declare pipelines in YAML where each step is a connector, a function or an LLM agent, and follow every run in a live diagram.
From install to production¶
One file, the whole pipeline¶
name: invoices
llm: { provider: anthropic, model: claude-opus-5-5 }
steps:
- id: invoices
use: csv.read
with: { path: data/invoices.csv }
- id: clients
use: json.read
with: { path: data/clients.json }
- id: matched
use: join
input: [invoices, clients]
with: { left: invoices, right: clients, on: tax_id, how: left }
- id: classify
agent: Classify the expense category and flag unknown clients for review.
input: matched
output: { number: str, client: str?, category: str?, review: bool? }
- id: save
use: sqlite.write
input: classify
with: { db: out/invoices.db, table: invoices }
Why agentl¶
-
Pipelines as YAML
No folder of scripts. One declarative file that is easy to review, diff and version.
-
Agents where judgement is needed
LLM steps run per record with a validated output schema. Bad outputs are rejected, not silently stored.
-
Connectors included
CSV, JSON, Excel, PDF, Word, HTTP and SQLite out of the box. Add your own in a few lines.
-
See every run
A live Mermaid diagram, a local dashboard and per-step events for each execution.
-
Notifications that explain
Slack, webhooks or the console, with rules like
rate > 0.05and an LLM summary of what failed. -
Cheap to re-run
Agent results are cached per record. A crash at record 4,000 resumes from there.
Contributors¶
agentl is built in the open. Thanks to everyone who has contributed code, docs and ideas.
Want to help? Read the contributing guide.
Sponsors¶
agentl is free and MIT licensed. Sponsorship pays for maintenance time, CI and LLM credits for testing real providers.
Your company's logo could be here. Sponsors at any tier are listed on this page and in the README.