Deterministic orchestrator for AI agent workflows
Project description
Godel
Deterministic orchestrator for AI agent workflows. Orchestration is plain Python; agents are leaves. Every non-deterministic event is logged to an append-only audit trail that doubles as a replay tape — giving you resume, rewind, and hot-patch for free.
The problem
Most agent frameworks bury orchestration inside the LLM. The agent decides what step comes next by re-reading a plan, occasionally getting it wrong. State survives by luck. When something crashes three agents deep, you start over.
The insight
Agent workflows have two parts: structural decisions (what to do next, when to branch, what state to track) and operational decisions (how to implement a fix, whether a review is valid). The first is deterministic and doesn't need an LLM. The second requires judgment and can't be reduced to code.
Godel draws the line. @workflow functions handle structure. Agents handle judgment. Because the orchestrator is deterministic Python, the runtime can event-source every call — and three primitives fall out:
- Resume — a crashed run picks up from the last durable event. Expensive agent calls are not re-paid.
- Rewind — invalidate any event and replay forward. Back up without discarding prior work.
- Hot-patch — edit the workflow, then
godel resume. New code takes effect on the uncached tail.
No other agent framework ships all three.
Install
pip install godel-py
Quick start
from godel import workflow, step, run
@step
def review(pr_number):
return run(["claude", "-p", f"Review PR #{pr_number} for correctness bugs"])
@step
def apply_fixes(review_output):
return run(["claude", "-p", f"Apply these fixes: {review_output}"])
@workflow
def pr_pipeline(pr_number):
findings = review(pr_number)
if "no issues" not in findings.lower():
apply_fixes(findings)
godel run pr_pipeline.py -- --pr-number 42
Crash at any point. godel resume picks up where it left off — no re-running the review.
How it differs
| Godel | LangGraph / CrewAI | Temporal / DBOS | |
|---|---|---|---|
| Orchestration | Plain Python | Pre-declared graphs / roles | Workflow/Activity split |
| Resume from crash | Built-in (event log) | Build it yourself | Built-in |
| Rewind to any point | Built-in | Not a concept | Not available |
| Hot-patch live run | Built-in | Redeploy | Redeploy |
| Human-in-the-loop | godel pause / godel repair |
Custom | Custom |
| Agent-first primitives | Session state, schema outputs | Varies | Not designed for agents |
Architecture
@workflow function # you write this — plain Python
-> @step calls # each step is an event boundary
-> run() / agent() # shells out to Claude, Copilot, or any CLI
-> event log # append-only, deterministic replay backbone
-> resume / rewind / repair
Documentation
- Why Godel — the thesis in depth
- Getting Started — install, write a workflow, run it
- Concepts — workflows, steps, agents, the audit log, replay
- API Reference — every public symbol
- CLI Reference — the
godelcommand - Examples — annotated walkthroughs
Development
pip install -e ".[dev]"
pytest # 1276 tests across 98 files
Python 3.12+. Conventional commits. CI runs on every push to main.
License
Business Source License 1.1 — see LICENSE. Use Godel freely as a library in your applications, including commercially. The only restriction is offering Godel itself as a competing hosted orchestration service. Each version converts to Apache 2.0 after three years.
Project details
Release history Release notifications | RSS feed
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 godel_py-1.0.0.tar.gz.
File metadata
- Download URL: godel_py-1.0.0.tar.gz
- Upload date:
- Size: 508.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43dfbe9e14b1347219397ac22f3e72c3ef49399d6bb1de65ddde16251d2abdeb
|
|
| MD5 |
93de006b776d29fadb38adab22860912
|
|
| BLAKE2b-256 |
20f72569f071f68c7dbeaa6c33b0f4b7a1d94d40fc7670497cfb77354c595928
|
Provenance
The following attestation bundles were made for godel_py-1.0.0.tar.gz:
Publisher:
publish.yml on atscub/godel-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
godel_py-1.0.0.tar.gz -
Subject digest:
43dfbe9e14b1347219397ac22f3e72c3ef49399d6bb1de65ddde16251d2abdeb - Sigstore transparency entry: 1996460132
- Sigstore integration time:
-
Permalink:
atscub/godel-py@79dab8f1c32008137dd01f6569a89efea59408ad -
Branch / Tag:
refs/heads/main - Owner: https://github.com/atscub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79dab8f1c32008137dd01f6569a89efea59408ad -
Trigger Event:
push
-
Statement type:
File details
Details for the file godel_py-1.0.0-py3-none-any.whl.
File metadata
- Download URL: godel_py-1.0.0-py3-none-any.whl
- Upload date:
- Size: 209.1 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 |
3ee8b3137570fc8ff4a1821e8f6ea8b6cf9d9d75416c932418570b2d4da8075b
|
|
| MD5 |
6002eff773d6af598dda4901772ba74a
|
|
| BLAKE2b-256 |
ac82cc62583b68298711c9d9317ca37fed6eacb10bc325c984d829e4e437962e
|
Provenance
The following attestation bundles were made for godel_py-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on atscub/godel-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
godel_py-1.0.0-py3-none-any.whl -
Subject digest:
3ee8b3137570fc8ff4a1821e8f6ea8b6cf9d9d75416c932418570b2d4da8075b - Sigstore transparency entry: 1996460291
- Sigstore integration time:
-
Permalink:
atscub/godel-py@79dab8f1c32008137dd01f6569a89efea59408ad -
Branch / Tag:
refs/heads/main - Owner: https://github.com/atscub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79dab8f1c32008137dd01f6569a89efea59408ad -
Trigger Event:
push
-
Statement type: