Decision intelligence for AI agents.
Better decisions, learned from outcomes.
CyanDoor is building an outcome-trained decision layer for AI agents: connect decision-time evidence and eligible candidate actions with downstream outcomes, then use trustworthy history to guide the next choice.
Current release
Version 0.1.0 is an early, deliberately narrow Decision-Evidence foundation. It provides typed, deterministic candidate-set manifests: describe candidate identities, freeze the ordered set before outcomes are observed, calculate its canonical digest, and verify later that the sealed manifest has not changed.
It does not yet include runtime connectors, persistence, Decision Audit/headroom, policy learning, cloud sync, or automatic agent optimization. Coding agents are the initial evidence environment, not the long-term product boundary.
Install
Requires Python 3.12 or newer.
pip install cyandoor
Real example
from datetime import UTC, datetime
from cyandoor import (
CandidateSetMember,
DraftCandidateSetManifest,
seal_candidate_set,
verify_candidate_set,
)
now = datetime.now(UTC)
draft = DraftCandidateSetManifest(
candidate_set_id="verification-strategies",
candidate_set_version="1",
decision_space_id="execution_strategy",
members=(
CandidateSetMember(
order_index=0,
candidate_id="run-tests-first@1",
action_identity_digest="sha256:" + "1" * 64,
),
CandidateSetMember(
order_index=1,
candidate_id="inspect-failure-first@1",
action_identity_digest="sha256:" + "2" * 64,
),
),
created_at=now,
)
sealed = seal_candidate_set(
draft,
eligibility_rule_id="default",
eligibility_rule_version="1",
evidence_eligibility_cutoff_at=now,
sealed_at=now,
)
assert verify_candidate_set(sealed)
Why Decision Evidence?
Traces reconstruct a run. CyanDoor focuses on the choice inside it: what was available and eligible, what was selected, what evidence existed at the cutoff, and whether that record remains verifiable after the outcome is known.
The long-term relationship is:
decision-time evidence + eligible candidate actions + historical outcomes
-> better next decision
Product breadth belongs in neutral architecture. Public availability belongs only in tested capabilities.
Design principles
- agent-agnostic contracts, with integrations claimed only after validation;
- explicit provenance and evidence-strength states;
- immutable, strictly validated models;
- deterministic canonical serialization and digests;
- no causal or improvement claim without supporting evidence.
The public website and expanded documentation are being developed in cyandoor/cyandoor-web. Until its canonical domain is live, this README remains the release-accurate technical starting point.
Contributing and status
The repository is in early alpha. Use GitHub Issues for focused bug reports and technical discussion.
License
CyanDoor is licensed under the Apache License 2.0.
Evidence is the beginning. Better decisions are the outcome.
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 cyandoor-0.1.0.tar.gz.
File metadata
- Download URL: cyandoor-0.1.0.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eee660f897d33959c713a5fec316296bcf3a424eb5e43a30505a73178a5df423
|
|
| MD5 |
dffb5aac1bfc68821e6ceb430019ec2f
|
|
| BLAKE2b-256 |
b6b5b10209efaedf9d07668f228f8a6593683dfdd4436537d43c0e3394889c22
|
Provenance
The following attestation bundles were made for cyandoor-0.1.0.tar.gz:
Publisher:
publish.yml on cyandoor/cyandoor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cyandoor-0.1.0.tar.gz -
Subject digest:
eee660f897d33959c713a5fec316296bcf3a424eb5e43a30505a73178a5df423 - Sigstore transparency entry: 2743141041
- Sigstore integration time:
-
Permalink:
cyandoor/cyandoor@f6a71b467bd351e18d17924f5d1c8b00777042b6 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/cyandoor
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f6a71b467bd351e18d17924f5d1c8b00777042b6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cyandoor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cyandoor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
476f7e083f61d91c99652a15a7cc53ac6588ff3caaa0fbf48265b9f73e5fda1f
|
|
| MD5 |
ffd772c50a8c00f146a80d1963b293f2
|
|
| BLAKE2b-256 |
f40921d07c22a4b8035105c907899afac8e28230641b675b74e437159cc2715c
|
Provenance
The following attestation bundles were made for cyandoor-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on cyandoor/cyandoor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cyandoor-0.1.0-py3-none-any.whl -
Subject digest:
476f7e083f61d91c99652a15a7cc53ac6588ff3caaa0fbf48265b9f73e5fda1f - Sigstore transparency entry: 2743141172
- Sigstore integration time:
-
Permalink:
cyandoor/cyandoor@f6a71b467bd351e18d17924f5d1c8b00777042b6 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/cyandoor
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f6a71b467bd351e18d17924f5d1c8b00777042b6 -
Trigger Event:
release
-
Statement type: