ControlFlow (archived — use marvin)
ARCHIVED. ControlFlow was a PrefectHQ agentic workflow framework. The repository was archived on August 22, 2025. Its engine was merged into marvin v3. Last version on PyPI: 0.12.1 (Feb 2025). Do not use for new projects — use marvin instead. The controlflow package still installs from PyPI but receives no updates.
Warnings
- breaking ControlFlow repository archived August 22, 2025. No more updates, bug fixes, or security patches. The controlflow PyPI package still installs but is dead.
- breaking ControlFlow had a hard dependency on prefect which caused version conflicts with prefect 3.0.0. marvin removes this dependency.
- breaking @cf.flow decorator removed in marvin v3. Replace with marvin.Thread() context manager.
- gotcha ControlFlow used LangChain as its LLM backend. marvin v3 uses Pydantic AI — broader provider support but different configuration patterns.
- gotcha LLMs trained before mid-2025 will generate controlflow code (import controlflow as cf). This is dead code — redirect to marvin.
Install
-
pip install marvin -
pip install controlflow
Imports
- Migration to marvin
import marvin # marvin.run replaces cf.run result = marvin.run('Write a short poem about AI') print(result) # marvin.Task replaces cf.Task from marvin import Task, Agent task = Task(instructions='Summarize this text', result_type=str) # marvin.Thread replaces cf.Flow with marvin.Thread(): marvin.run('step one') marvin.run('step two')
Quickstart
# controlflow is archived — use marvin instead
# pip install marvin
import marvin
# Direct equivalent of controlflow's cf.run
result = marvin.run('Write a short poem about artificial intelligence')
print(result)