civitas-contrib
Community integrations and extras for Civitas — the production runtime for Python agents.
Everything here needs a third-party runtime dependency (a vendor / driver / framework SDK) or integrates with a specific external product. Core mechanism, protocols, and zero-dependency implementations live in civitas itself; civitas-contrib holds the batteries that pull in someone else's package. (See the contrib boundary rule in the core repo's docs/design/spanstore-and-contrib-boundary.md.)
Install
pip install civitas-contrib # base (pulls in civitas)
pip install "civitas-contrib[openai]" # + a specific integration's deps
Each integration's third-party dependency is an extra, so you only install what you use.
What's inside
| Category | Modules | Extra | Status |
|---|---|---|---|
| LLM provider plugins | plugins.anthropic, plugins.openai, plugins.gemini, plugins.mistral |
matching extra ([anthropic], [openai], [gemini], [mistral]) |
Real, unit-tested (anthropic/openai) |
| Framework adapters | adapters.langgraph, adapters.openai |
[langgraph], [openai] |
Real |
| State stores (driver-backed) | plugins.postgres_store, plugins.mysql_store |
[postgres], [mysql] |
Real, integration-tested against real Postgres/MySQL |
| Span stores (driver-backed) | plugins.postgres_span_store, plugins.mysql_span_store |
[postgres], [mysql] |
Real, integration-tested against real Postgres/MySQL |
| Exporters | plugins.otel, eval.exporters (ArizeExporter, LangfuseExporter, BraintrustExporter, LangSmithExporter, FiddlerExporter) |
[otel], [arize], [langfuse], [braintrust], [langsmith], [fiddler] |
Real |
Not yet implemented, honest placeholders only — importable, but raise NotImplementedError on
instantiation with a link to track progress, matching the same pattern for both:
adapters.crewai.CrewAIAgent— no extra needed (doesn't touch thecrewaiSDK yet).plugins.litellm.LiteLLMProvider— no extra needed (doesn't touch thelitellmSDK yet).
There is no civitas_contrib.plugins.fiddler module — [fiddler] backs eval.exporters.FiddlerExporter (an eval exporter), not a model provider.
The span stores implement civitas's SpanStore protocol (durable, queryable telemetry) and are usable as plugins.exporters of type: postgres / type: mysql. The state stores implement StateStore (type: postgres / type: mysql under plugins.state). Both reuse core's public civitas.observability.normalize_span and match core's SQLiteSpanStore query results exactly.
Moved to core
SQLiteStateStore moved to core civitas (civitas.plugins.sqlite_store) in civitas v0.11.0 — SQLite is stdlib, so it adds no third-party dependency and belongs in core. The old
civitas_contrib.plugins.sqlite_store import path still works via a deprecating re-export shim; update to:
from civitas.plugins.sqlite_store import SQLiteStateStore
YAML type: sqlite state stores already resolve to core and need no change.
License
Apache 2.0.
Metadata
Release files for civitas-contrib 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| civitas_contrib-0.2.0.tar.gz | 20.9 kB | With provenance | Details for civitas_contrib-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| civitas_contrib-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for civitas_contrib-0.2.0-py3-none-any.whl |
Total release size: 49.1 kB
Release files / civitas_contrib-0.2.0.tar.gz
| Download URL | civitas_contrib-0.2.0.tar.gz |
|---|---|
| Size | 20.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3e66334ed2d55403be3b55ede24a3f49d3c2c7edd87717825064ab893e259781
|
|
BLAKE2b-256 checksum How to use checksums |
a9f75345670ac837d544b3521a8267e438b30a1b35a7b335a0109efd3be80ad4
|
| 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 25, 2026.
Transparency logRelease files / civitas_contrib-0.2.0-py3-none-any.whl
| Download URL | civitas_contrib-0.2.0-py3-none-any.whl |
|---|---|
| Size | 28.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5069f880b53934b8ce72b2de365f12bdadcbbb9f7b719c9a78f84b545b0e2412
|
|
BLAKE2b-256 checksum How to use checksums |
5bd72dd7024e17e1a763a8d7a54a091176f12a067c43da070790775181a0439b
|
| 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 25, 2026.
Transparency logSecurity for civitas-contrib 0.2.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for civitas_contrib-0.2.0.tar.gz
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 25, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.