4.2 KiB
4.2 KiB
Dependencies
This document lists key dependencies across the AITBC project, including versions, purposes, and notes on compatibility.
Package Management
- Poetry (recommended) – dependency resolution, virtualenv, packaging.
- pip – can be used as fallback.
Each package/service has its own pyproject.toml. Some dependencies are shared.
Core Runtime Dependencies
FastAPI Stack
fastapi– web framework for APIs- Coordinator API, Blockchain Node, AI Provider Daemon
- Version:
>=0.104.0(or latest stable) - Requires
uvicornfor serving
uvicorn[standard]– ASGI server- Important: use
[standard]for performance (uvloop, httptools) - Version:
>=0.24.0
- Important: use
Database
sqlalchemy– ORMsqlmodel– Pydantic-friendly wrapper around SQLAlchemy (used in some packages)aiosqlite– async SQLite driveralembic– migrations (if used)
P2P / Networking
websockets– WebSocket client/server for P2Paiohttp– async HTTP client (used in some modules, e.g., KYC/AML providers)
Redis
redis– Redis client (development broadcast backend)
Blockchain / Cryptography
aitbc-core– internal package: logging utilities, maybe crypto primitivesaitbc-crypto– internal package: wallet cryptography, signingaitbc-sdk– internal package: SDK for interacting with the chain
AI / Inference
ollama– Python client (if used) or direct HTTP calls- Model:
qwen3:8b(default)
Other Utilities
pydantic– data validationnumpy,pandas– analytics (optional)orjson– fast JSON serialization (optional)
Known Version Constraints
Starlette
- Must pin
<0.38becauseBroadcastmodule was removed in 0.38. - In
pyproject.toml:starlette = ">=0.37.2,<0.38" - Reason: Dev broadcast backend depends on it; production will migrate to direct P2P.
Python Version
- Target: Python 3.10+ (3.11 or 3.12 recommended)
- Ensure compatibility of dependencies.
Per-Package Dependencies
CLI (cli/aitbc_cli)
- Depends on packages from
packages/py/(aitbc-core, aitbc-crypto, aitbc-sdk, aitbc-agent-sdk). - May import modules from
apps/coordinator-api/srcvia sys.path hack (temporary). - Minimum dependencies:
aitbc-coreaitbc-cryptoaitbc-sdkaitbc-agent-sdkaiohttp(some commands)rich(if used for pretty output)
Coordinator API (apps/coordinator-api)
- Dependencies:
fastapi,uvicorn,sqlalchemy,sqlmodel,aiosqlite,pydantic,redis,aitbc-core(maybe). - Installed as part of monorepo; not separately packaged.
Blockchain Node (apps/blockchain-node)
- Dependencies:
fastapi,uvicorn,sqlmodel,aiosqlite,websockets,pydantic,orjson,aitbc-core,aitbc-crypto. - Additional:
alembicif using migrations.
AI Provider Daemon
- Depends on
fastapi,uvicorn,ollamaclient. - May use
aitbc-sdkfor payment verification.
Development Dependencies
pytest– testingpytest-asyncio– async test supporthttpx– async HTTP test clientblack– formattingisort– import sortingmypy– type checking (optional)pre-commit– git hooks
Installing Dependencies
For a fresh workspace:
# Install package dependencies (per package)
cd packages/py/aitbc-core && poetry install
cd ../aitbc-crypto && poetry install
# etc.
# Or use a script to install all
# (create install.sh that loops)
# For apps/ and cli/, use their pyproject.toml similarly.
Alternatively, use pip with -e for editable installs after ensuring dependencies are satisfied.
Upgrading Dependencies
- Use
poetry updateto get latest versions within constraints. - Test after upgrading, especially
starlette,fastapi,sqlalchemy. - Pin critical versions in
pyproject.tomlto avoid accidental breakage. - Record breaking changes in
ai-memory/decisions/architectural-decisions.md.
Dependency Health
- Check for security vulnerabilities periodically (e.g.,
safety checkordependabot). - Remove unused dependencies to reduce attack surface.
- Keep internal packages (
aitbc-*) versioned and published consistently.
Maintain this file as dependencies evolve.