Durable Goals
Durable Goals helps AI agents keep working toward the same goal across long conversations, restarts, and multiple agent threads.
Instead of relying on chat history, it stores the goal, changes to the goal, evidence, and completion rules in the repository. A small DAG can also expose several independent goals so different threads can safely pick up different work.
It does not run agents or choose models. It gives Codex, Claude Code, local scripts, or another harness a shared answer to three questions:
- What is the current goal?
- What work is ready next?
- What evidence proves the goal is complete?
Use it from your agent
If your agent harness discovers the included update-durable-goal skill, you
do not need to memorize the CLI. Just type what you want into the harness:
Add a goal: build the Q4 sales plan, then create the hiring plan needed to
deliver it.
The harness records these as two ordered goals: the hiring plan becomes ready after the sales plan is complete. You can use the same natural language to update goals, record evidence, or connect more work. The skill translates the request into durable files stored in your repository.
The basic convention is simple: an agent reads the goal package's GOAL.md
before acting. The repository remains the source of truth, even when the chat
or process disappears.
Canonical goal records are read-only after creation. Owner changes append a
numbered immutable revision; only gateway.json advances to reference the
latest history. Generated status and temporary workflow claims stay disposable.
Install
Requires Python 3.11 or newer and has no runtime dependencies.
uv tool install durable-goals
Or install it with pip:
python -m pip install durable-goals
Then use the dgoal command anywhere:
dgoal --version
dgoal init goals/my-goal \
--goal-id my-goal \
--objective "Describe what needs to be finished."
Try the example
The repository includes a prebuilt, multi-step model release goal covering quality, safety, rollout, rollback readiness, and approval. The CLI does not perform those tasks; it reads their checked-in evidence and shows how Durable Goals interprets the result.
In the included files, a model scores 0.87 against an active 0.90
requirement. The owner records a new 0.85 requirement, but it remains pending
until activation of the new goal target.
From a clone of this repository, run:
python -m pip install -e .
dgoal validate examples/model-refresh/gateway.json
dgoal status examples/model-refresh/gateway.json
dgoal resolve examples/model-refresh/gateway.json
validatechecks the goal package and its evidence.statussummarizes current progress.resolveshows the active goal, desired goal, and pending changes together.
What is included
- Persistent, versioned goal contracts
- Evidence-backed completion
- Append-only goal amendments and activation records
- DAG dependencies for multi-goal workflows
- Atomic claims so concurrent threads choose different ready goals
- A dependency-free Python CLI and test suite
Learn more
Agents and maintainers should read AGENTS.md for the full
protocol, authority rules, CLI examples, and implementation scope.
Status
This is an early 0.1 release intended for trusted repositories. SHA-256
checks protect integrity, but they do not authenticate authors. Use signed
commits or another trusted transport when writers do not share the same trust
boundary.
Licensed under the MIT License.
Metadata
Release files for durable-goals 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| durable_goals-0.1.1.tar.gz | 32.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| durable_goals-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.0 kB
Release files / durable_goals-0.1.1.tar.gz
| Download URL | durable_goals-0.1.1.tar.gz |
|---|---|
| Size | 32.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e3143c60da28874e6ed2fa3d008e938c145932b9164af8db23a9d86bccb819eb
|
|
BLAKE2b-256 checksum How to use checksums |
74f06fa564071570a142aacee34589f3a9dcf212409f98835a6ea6c4b5bd94b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 13, 2026.
Transparency logRelease files / durable_goals-0.1.1-py3-none-any.whl
| Download URL | durable_goals-0.1.1-py3-none-any.whl |
|---|---|
| Size | 32.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
475fecc541f3872667e276049e3c7cbbc867fb43704e8ae75f4d2a7f45e40bfa
|
|
BLAKE2b-256 checksum How to use checksums |
49afbf4a9db092b5d6800ed8b493ae75ff8d8fd9ec7994d6c6157333a8bc16a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 13, 2026.
Transparency log