Install¶
pip install teff
Python >=\ 3.11. Core runtime depends only on httpx, jsonschema,
pyyaml, and typer.
The CLI¶
The teff CLI ships with the package. Prefer uv? uv installs the package
and the CLI in one step:
uv tool install teff # global `teff` CLI
uvx teff -f workflow.yaml # run on the fly without installing anything
Extras¶
Install only what you need; teff[all] pulls in everything.
| Extra | Provides |
|---|---|
teff[stores-qdrant] |
Qdrant vector store (qdrant-client) |
teff[stores-chroma] |
Chroma vector store (chromadb; heavy — pulls onnxruntime) |
teff[stores-faiss] |
FAISS vector store (faiss-cpu) |
teff[stores-lance] |
LanceDB vector store (lancedb) |
teff[stores-milvus] |
Milvus vector store (pymilvus, includes Milvus Lite) |
teff[stores-weaviate] |
Weaviate vector store (weaviate-client) |
teff[stores-pinecone] |
Pinecone vector store (pinecone) |
teff[stores-pgvector] |
PostgreSQL + pgvector store (asyncpg, pgvector) |
teff[embedding] |
Every vector store at once — alias for all teff[stores-*] (heaviest) |
teff[rag-pdf] |
pypdf — PDF text extraction for RAG |
teff[rag-excel] |
openpyxl — Excel document loading for RAG |
teff[pg-checkpoint] |
asyncpg — PostgreSQL checkpoint backend |
teff[mcp] |
mcp — Model Context Protocol tool bridge (teff.tool.McpTool / mcp_tools, stdio + streamable-http) |
teff[tools] |
Built-in tools that need third-party deps (web fetch, PDF, S3, Slack, SQL, email, Telegram, …) |
teff[fastapi] |
Scaffold templates: fastapi + uvicorn + sse-starlette |
teff[observability] |
Trace dashboard: fastapi + uvicorn (for teff.observability.dashboard_router) |
teff[queue] |
celery[redis] — worker/beat scaffold variant |
teff[docs] |
MkDocs toolchain to build this documentation |
teff[all] |
Everything above except docs |
pip install "teff[stores-qdrant]"
pip install "teff[tools]"
pip install "teff[mcp]"
pip install "teff[all]"
Docker¶
Ready-made images are published to Docker Hub for every v* release tag. They
mirror the extras above, so pick the variant that matches your deployment:
| Image | Contents | Runs |
|---|---|---|
bzdvdn/teff |
core + teff[tools] |
the teff CLI — run/validate/inspect workflows |
bzdvdn/teff-fastapi |
core + teff[fastapi] |
uvicorn — a FastAPI server app |
bzdvdn/teff-worker |
core + teff[queue] |
celery — background workers / beat |
bzdvdn/teff-obs |
core + teff[observability] |
teff obs-server — trace dashboard + ingest |
bzdvdn/teff-rag |
core + teff[stores-qdrant,tools,rag-pdf] |
the teff CLI, slim RAG build |
bzdvdn/teff-all |
every extra except docs |
the teff CLI with the full optional surface |
Run a workflow from a mounted workflow.yaml (plus an optional plugins/
folder) in one shot:
docker run --rm -v "$PWD:/workflow" \
bzdvdn/teff:latest run -f /workflow/workflow.yaml
Serve the trace dashboard (ingest + UI) with the collector image:
docker run -d -p 8001:8001 -v teff-traces:/data \
bzdvdn/teff-obs:latest --db /data/traces.db --host 0.0.0.0
All CLI subcommands and flags work inside the container. Images run as a
non-root user (UID 65534) with durable checkpoints under /data/checkpoints
(see the README).