Better Decision SDK for IT agent actions with BIGHUB.
Project description
BIGHUB SDK
Better decisions for IT agent actions.
Beta release: this is the first public Better Decision SDK beta.
BIGHUB helps AI agents and CI/CD workflows make better IT decisions before execution.
It takes a proposed IT action, builds a Decision Packet, runs DecisionBrain, and returns execution guidance:
- proceed when appropriate
- pause for review
- ask for more context
- advise not to run
- suggest a real
better_actiononly when the backend actually produced one
pip install --pre bighub
For future stable releases, use:
pip install bighub
Python 3.9+. Single dependency: httpx.
Quick Start
from bighub import Bighub
def run(action_to_run):
raise NotImplementedError("Connect this to your executor.")
bighub = Bighub(api_key="your_api_key")
decision = bighub.decide(
action="Roll out billing-api v3.12 to production",
context={
"system": "kubernetes",
"environment": "production",
"service": "billing-api",
"ticket": "CHG-4401",
},
)
if decision.needs_review:
decision.request_review()
elif decision.needs_more_context:
print("More context required:", decision.reason)
elif decision.should_not_run:
print("Do not run:", decision.reason)
elif decision.can_run:
action_to_run = decision.better_action or decision.proposed_action
run(action_to_run)
for factor in decision.salient_factors:
print("Important factor:", factor.get("factor"), factor.get("severity"))
space = decision.responsible_action_space or {}
print("Available actions:", space.get("available", []))
print("Constrained actions:", space.get("constrained", []))
bighub.close()
Recommended flow:
proposed IT action -> Decision Packet -> DecisionBrain -> better_action when real -> execution mode and flags -> review or context when needed
When to use BIGHUB
Use BIGHUB before risky actions such as:
- GitHub Actions, GitLab CI, or Jenkins deploys
terraform apply- Argo CD sync or Kubernetes / OpenShift rollout
- Okta or IAM access changes
- credential rotation
- incident updates in Slack
- security gates after Trivy / Syft / SBOM signals
- production actions that may need review or additional context
If your workflow only reads data or performs harmless lookups, you probably do not need BIGHUB.
What a Decision returns
High-value fields most workflows care about:
better_action: a real backend-produced alternative when available, otherwiseNonemode: execution guidance such asautonomous,constrained,review,blocked, orneeds_contextcan_run,needs_review,needs_more_context,should_not_run: direct operational flagsrisk: top-level risk score when provideddecision_path: routing or evaluation path when providedpacket: theDecisionPacketused for the decisionbrain: theDecisionBrainResultwith reasoning summary, confidence, expected regret when provided, and related signalsselected_model: present only when the backend actually selected oneresponsible_action_space: the responsible action space for the current situation, grouped intoavailable,constrained,forbidden, andinformation_gatheringactionssalient_factors: the most important decision-time factors BIGHUB identified, such as weak verifier coverage, unavailable rollback, open obligations, active incidents, irreversibility, or high blast radius
For a smaller stable surface, use decision.brief():
brief = decision.brief()
print(brief.salient_factors)
print(brief.action_space_counts)
if brief.can_run:
run(brief.recommended_action)
elif brief.needs_review:
print("Review required:", brief.reason)
decision.brief() keeps this compact: it exposes salient factor names and action-space counts, while the full Decision object keeps the detailed responsible_action_space and salient_factors payloads.
Honest behavior
The SDK is intentionally strict about what it does and does not invent:
better_actionisNoneunless BIGHUB returned a genuinely distinct recommendationselected_modelisNoneunless the backend actually selected onedecision_pathand model-selection fields stay empty when the backend did not provide them- outcomes are optional and not required for a first integration
- legacy
BighubClientandclient.actions.evaluate(...)remain available for existing integrations
If a backend decision_packet has no packet_sha256, the SDK computes a stable local hash and marks it with packet.packet_sha256_is_local=True.
Optional: outcome reporting
If you want a learning loop later, report what happened after execution:
decision.report_outcome(
status="completed",
evidence={"deployment_id": "dep_123"},
)
Outcome reporting is optional. The primary integration wedge is still the decision before execution.
After outcomes are reported, you can inspect learning impact:
from bighub import BighubClient
client = BighubClient(api_key="your_api_key")
impact = client.learning.impact()
print(impact.get("future_decisions_verdict_changed"))
print(impact.get("avg_regret_reduction"))
metrics = client.learning.disagreement_metrics()
print(metrics.get("avg_regret_reduction"))
client.close()
Learning impact
BIGHUB can also expose post-outcome learning metrics when outcomes and disagreements are available.
from bighub import BighubClient
client = BighubClient(api_key="your_api_key")
impact = client.learning.impact()
print(impact.get("future_decisions_learning_influenced"))
print(impact.get("future_decisions_verdict_changed"))
print(impact.get("avg_regret_reduction"))
disagreements = client.learning.disagreement_metrics()
print(disagreements.get("bighub_regret_reduction_rate"))
print(disagreements.get("avg_regret_reduction"))
client.close()
These metrics are post-outcome signals. They are not required for first integration and are separate from the pre-execution decision returned by bighub.decide(...).
CI/CD and system integrations
You can connect system evidence so BIGHUB sees recent operational context before deciding.
For lower-level resources, BighubClient remains available:
from bighub import BighubClient
client = BighubClient(api_key="your_api_key")
client.systems.save_connection(
"gitlab",
{
"base_url": "https://gitlab.com",
"gitlab_token": "glpat_...",
"project_id": "123",
},
display_name="GitLab production",
)
client.systems.update_poll_schedule("gitlab", enabled=True, interval_seconds=300)
client.systems.poll("gitlab")
world = client.systems.world_state()
client.close()
System providers currently supported by the SDK/API include okta, slack, github, datadog, sentry, aws_cloudtrail, terraform, kubernetes, argocd, gitlab, jenkins, azure, prometheus, grafana, and openshift.
Poll snapshots and histories are redacted before persistence and exposure. They provide best-effort operational context; they are not a replacement for production monitoring.
Typical uses:
- gate a GitHub Actions or GitLab deploy with recent operational context
- inspect Kubernetes, Argo CD, Prometheus, or Grafana state before rollout
- apply IAM or Okta changes with better review posture
- incorporate security and incident signals before execution
Compatibility
The modern entrypoint is bighub.decide(...).
For existing integrations, legacy BighubClient, client.actions.submit(...), and client.actions.evaluate(...) remain supported.
Links
- bighub.io
- GitHub repository
- Python examples
- OpenAI adapter
- MCP server
- PyPI - bighub
- PyPI - bighub-openai
License
MIT
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 bighub-0.1.0b3.tar.gz.
File metadata
- Download URL: bighub-0.1.0b3.tar.gz
- Upload date:
- Size: 52.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67078d97857809ec9d049b53cd084f662d70ee443105dc7f07ca30e98c404656
|
|
| MD5 |
1c27a9c78af8a2456e2f0f51b94042b3
|
|
| BLAKE2b-256 |
c92c3d271bc59399c3115b43a911384556c6deffc927d3a3969aa3dc5600c5a1
|
Provenance
The following attestation bundles were made for bighub-0.1.0b3.tar.gz:
Publisher:
publish-pypi.yml on bighub-io/bighub
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bighub-0.1.0b3.tar.gz -
Subject digest:
67078d97857809ec9d049b53cd084f662d70ee443105dc7f07ca30e98c404656 - Sigstore transparency entry: 1552508706
- Sigstore integration time:
-
Permalink:
bighub-io/bighub@436672c9b0360080038ae31d93f383a1fcc80fa3 -
Branch / Tag:
refs/tags/sdk-python-v0.1.0b3 - Owner: https://github.com/bighub-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@436672c9b0360080038ae31d93f383a1fcc80fa3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file bighub-0.1.0b3-py3-none-any.whl.
File metadata
- Download URL: bighub-0.1.0b3-py3-none-any.whl
- Upload date:
- Size: 60.2 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 |
3cdb2ffbd2e709844dede01f14a9e60056a865b23d4ce68a0acf77b6abe72763
|
|
| MD5 |
88c1d17b5849a54797101d7a8dcc58cb
|
|
| BLAKE2b-256 |
9bae215cb09ee3c3b23f6ccd3aaaa0a3e76de74cb5850cca2412b781df575f9b
|
Provenance
The following attestation bundles were made for bighub-0.1.0b3-py3-none-any.whl:
Publisher:
publish-pypi.yml on bighub-io/bighub
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bighub-0.1.0b3-py3-none-any.whl -
Subject digest:
3cdb2ffbd2e709844dede01f14a9e60056a865b23d4ce68a0acf77b6abe72763 - Sigstore transparency entry: 1552508713
- Sigstore integration time:
-
Permalink:
bighub-io/bighub@436672c9b0360080038ae31d93f383a1fcc80fa3 -
Branch / Tag:
refs/tags/sdk-python-v0.1.0b3 - Owner: https://github.com/bighub-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@436672c9b0360080038ae31d93f383a1fcc80fa3 -
Trigger Event:
push
-
Statement type: