Skip to content
GitHub

Compatibility & Dependencies

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

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

A small number of cross-extension dependencies exist where the functionality is inherently coupled:

ExtensionDepends OnReason
lexigram-eventslexigram-resilienceEvent buses use retry and circuit breaker
lexigram-taskslexigram-resilienceBackground jobs need retry and timeout policies
lexigram-ai-raglexigram-vectorRAG requires vector storage
lexigram-ai-agentslexigram-ai-llmAgents need an LLM client
lexigram-ai-memorylexigram-ai-llmMemory summarization uses the LLM
lexigram-ai-mcplexigram-ai-llm, lexigram-ai-agentsMCP exposes agents as tools
  • Python version: 3.11+ required
  • ASGI servers: Fully compatible with uvicorn, granian, and hypercorn
  • Package manager: Works with pip, uv, and poetry

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 — production-ready
In-memoryWired — suitable for dev and testing

Install backend-specific dependencies via extras:

PackageExtras
lexigram-sql[postgres], [mysql], [sqlite]
lexigram-cache[redis], [memcached]
lexigram-queue[redis], [rabbitmq], [kafka], [sqs]
lexigram-search[meilisearch], [elasticsearch], [typesense]
lexigram-storage[s3], [gcs], [azure], [r2]
lexigram-vector[pgvector], [qdrant], [pinecone]
lexigram-ai-llm[openai], [anthropic], [google]

All packages are alpha (0.1.x). Breaking changes may occur before the 1.0 release. We follow SemVer — breaking changes increment the minor version while below 1.0.


See Adoption Paths for a staged guide to integrating Lexigram packages.