Skip to content
Packages Examples Agents Blog Get started

Compatibility & Dependencies

Every extension package depends only on oridecon and oridecon-contracts. No extension ever depends on another extension.

This rule keeps the dependency graph acyclic and ensures packages can be adopted independently. The core (oridecon) provides the DI container, Application, configuration, and logging. oridecon-contracts defines the protocols extensions implement.

An import linter enforces this. A cross-extension import that type-checks will still fail CI.

A small number of packages are orchestrators or tooling. They may list other Oridecon distributions in pyproject.toml. Application extensions still must not import each other.

PackageMay depend onWhy
oridecon-adminoridecon-ui (hard); auth, cache, events, web, tenancy, monitor, search, tasks as extrasAdmin dashboard; extras are opt-in
oridecon-ai (orchestrator)oridecon-ai-*, oridecon-vector via entry pointsDiscovers and wires AI subsystems
oridecon-multimedia (orchestrator)oridecon-multimedia-* via entry pointsDiscovers multimedia backends
oridecon-testingany extension (optional)Fakes and compliance suites

Verified against current pyproject.toml files on branch dev:

  • oridecon-web does not depend on oridecon-ui. It depends on oridecon, oridecon-contracts, Starlette, and a few HTTP/template libraries.
  • oridecon-events and oridecon-tasks do not depend on oridecon-resilience. Retry and circuit-breaker collaboration goes through contracts in oridecon-contracts.

Adding a new cross-extension hard dependency requires a design review. Prefer a protocol in oridecon-contracts.

  • Python version: 3.11+ required
  • Run the app: oridecon run / oridecon dev (auto-picks granian → uvicorn → hypercorn)
  • ASGI servers: uvicorn, granian, and hypercorn are all valid when you already operate one — see Deployment
  • Package manager: uv (recommended), pip, poetry

The public line is 0.1.1 (alpha 0.1.x). Pin the range:

Terminal window
uv add "oridecon>=0.1,<0.2"
uv add "oridecon-cli>=0.1,<0.2"

Requires an async database driver. Connection strings must use the async variant:

DatabaseDriverConnection string
PostgreSQLasyncpgpostgresql+asyncpg://user:pass@host/db
MySQLaiomysqlmysql+aiomysql://user:pass@host/db
SQLiteaiosqlitesqlite+aiosqlite:///path/to/db
BackendStatus
MongoDBWired — provider is active and configurable
DynamoDBCode exists but not wired — provider class written, not registered
FirestoreCode exists but not wired — provider class written, not registered
BackendStatus
Memory / Redis / RabbitMQ / Kafka / SQSWired — fully configurable
Azure Service Bus / GCP Pub/SubCode exists but not wired — provider classes written, not registered
BackendStatus
Neo4jWired
In-memoryWired — suitable for dev and testing

Install backend-specific dependencies via extras:

PackageExtras
oridecon-sql[postgres], [mysql], [sqlite]
oridecon-cache[redis], [memcached], [semantic]
oridecon-queue[redis], [rabbitmq], [kafka], [sqs], [azure], [gcp]
oridecon-search[elasticsearch], [meilisearch], [algolia]
oridecon-storage[aws], [gcp], [azure]
oridecon-vector[pgvector], [qdrant], [pinecone], [chroma], [weaviate]
oridecon-ai-llm[openai], [anthropic], [ollama], [groq], [mistral], [cohere], [huggingface]
oridecon-web[granian], [uvicorn], [hypercorn], [security], [templates], [websocket]
Terminal window
uv add "oridecon-sql[postgres]"

All 54 packages are alpha (0.1.x). Breaking changes may occur before 1.0. Below 1.0, SemVer treats a minor bump as the breaking signal. Product notes: Changelog. Full log: CHANGELOG.md on branch dev.


See Adoption Paths for a staged guide, and Choosing Backends for which extra to pick.