Skip to main content

OpenBox CrewAI SDK

openbox-crewai-sdk-python adds OpenBox governance, approvals, guardrails, and OpenTelemetry-backed operational telemetry to CrewAI crews and flows. When an agent is configured with an AIP DID and private key, governance requests are signed per agent.

Use it when you need to:

  • evaluate tasks, LLM calls, and tool operations against OpenBox policy
  • enforce approval flows from OpenBox verdicts
  • apply input and output guardrails
  • attach HTTP, database, and file telemetry to governed runs
  • enable per-agent AIP request signing when DID credentials are configured

Requirements

  • Python >=3.10,<3.14
  • crewai >=1.14.1
  • an OpenBox account with each agent provisioned in the OpenBox Platform

When you provision an agent in the OpenBox Platform you receive:

  • an OpenBox API URL
  • an API key (obx_live_...)
  • an AIP DID and one-time private key

Installation

pip install openbox-crewai-sdk-python

Required environment variables (one set per agent — the prefix matches the env_prefix passed to each OpenBoxAgent):

export OPENBOX_URL="<your OpenBox API URL>"

export OPENBOX_RESEARCHER_API_KEY="obx_live_..."
export OPENBOX_RESEARCHER_DID="did:aip:..."
export OPENBOX_RESEARCHER_PRIVATE_KEY="<base64 32-byte ed25519 seed>"

The DID and private key are returned once at agent creation and cannot be recovered later. If you enable AIP signing, store them with the same care as the API key.

Quick Start

from crewai import Crew, Process, Task
from crewai.agents.agent_builder.base_agent import BaseAgent
from crewai.project import CrewBase, agent, crew, task

from openbox import OpenBoxAgent, OpenBoxTask, create_openbox_engine


@CrewBase
class ResearchCrew:
    agents: list[BaseAgent]
    tasks: list[Task]

    agents_config = "config/agents.yaml"
    tasks_config = "config/tasks.yaml"

    @agent
    def researcher(self) -> OpenBoxAgent:
        return OpenBoxAgent(
            config=self.agents_config["researcher"],  # type: ignore[index]
            env_prefix="OPENBOX_RESEARCHER",
        )

    @task
    def quick_research(self) -> OpenBoxTask:
        return OpenBoxTask(
            config=self.tasks_config["quick_research"],  # type: ignore[index]
            activity_type="research",
        )

    @crew
    def crew(self) -> Crew:
        return Crew(
            name="research-crew",
            agents=self.agents,
            tasks=self.tasks,
            process=Process.sequential,
        )


with create_openbox_engine() as engine:
    governed_crew = engine.govern(ResearchCrew().crew())
    result = governed_crew.kickoff()

create_openbox_engine() is the recommended production entrypoint. It:

  1. resolves and validates SDK configuration
  2. constructs the shared OpenBox runtime and governance config
  3. installs HTTP, database, and (opt-in) file-IO instrumentation
  4. yields an engine that wraps standard CrewAI crews via engine.govern(crew)
  5. tears down instrumentation on context-manager exit

OpenBoxAgent, OpenBoxTask, and engine.govern(crew) opt a crew in to governance. Plain Agent and Task instances skip governance.

Runtime Model

The SDK emits two categories of OpenBox payloads:

  • boundary task events: ActivityStarted, ActivityCompleted
  • signal events: SignalReceived for HITL resume and agent output

It also captures operational spans for:

  • HTTP requests
  • supported database libraries
  • file operations when file instrumentation is enabled
  • LLM calls

Important production behavior:

  • when DID credentials are configured, governance requests are signed with the agent's AIP DID and verified by OpenBox before evaluation
  • on OpenBox API errors the configured fallback policy decides whether execution halts or continues

Configuration Highlights

Most applications only need a small part of the config surface:

Option Default Use it to
api_url required point the SDK at your OpenBox API URL
governance_policy "fail_open" decide whether OpenBox outages should halt execution
governance_timeout 30.0 cap the time the SDK waits for an OpenBox verdict
hitl_enabled True enable approval suspension and polling flows
send_task_start_event True emit ActivityStarted
send_task_completed_event True emit ActivityCompleted
instrument_databases True capture supported database activity
instrument_file_io False enable file operation telemetry when required
debug_log False verbose SDK logging

See docs/configuration.md for the complete surface.

Production Guidance

  • Decide explicitly between fail_open and fail_closed before deployment.
  • Give every agent its own env_prefix — never share API keys or DIDs across agents.
  • If you enable AIP signing, treat the private key with the same care as the API key. It is returned once at provisioning and is unrecoverable; rotate it in the OpenBox Platform if compromised.
  • Keep instrument_file_io disabled until you have a concrete file-governance requirement.

Documentation

Public API Summary

Top-level exports include:

  • create_openbox_engine() and create_openbox_flow()
  • OpenBoxAgent, OpenBoxTask, GovernedCrew, OpenBoxEngine
  • GovernanceConfig, GovernanceResponse, Verdict
  • error types: OpenBoxError, OpenBoxConfigError, OpenBoxAuthError, OpenBoxNetworkError, OpenBoxInsecureURLError, GovernanceAPIError, GovernanceHaltError, GovernanceBlockedError, GovernanceApprovalExpiredError

See docs/api-reference.md for the full reference.

Metadata

Release files for openbox-crewai-sdk-python 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openbox-crewai-sdk-python 1.0.0
File Size Uploaded
openbox_crewai_sdk_python-1.0.0.tar.gz 386.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openbox-crewai-sdk-python 1.0.0
File Interpreter ABI Platform
openbox_crewai_sdk_python-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 447.1 kB

Release files / openbox_crewai_sdk_python-1.0.0.tar.gz

Download URL openbox_crewai_sdk_python-1.0.0.tar.gz
Size 386.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e6abf6ae5aa3ab3d051c018d511692824fe82ac521d5908a1f5f415220ac98f4
BLAKE2b-256 checksum
How to use checksums
aa9f8a79655ef6232d04db81e660578bbdd771d6a538ef7ab416ae8735d15f4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jun 29, 2026.

Transparency log

Release files / openbox_crewai_sdk_python-1.0.0-py3-none-any.whl

Download URL openbox_crewai_sdk_python-1.0.0-py3-none-any.whl
Size 60.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9fdb697611d2933aad1b1d56bbc62a49e9df7063fe93206731f88bfb969e9be4
BLAKE2b-256 checksum
How to use checksums
2952228e47cb5f6ab751f37531da41a6b44b21db3abad0f408f43c03515a855e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Jun 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page