Crate Map
This page documents all nine workspace crates, their roles, feature flags, and dependency relationships.
Workspace Overview
paladin-ai (root umbrella, v0.5.0)
├── paladin-ai-core # Core domain
├── paladin-ports # Port trait contracts
├── paladin-battalion # Orchestration services
├── paladin-llm # LLM adapters
├── paladin-memory # Memory adapters
├── paladin-storage # SQL adapters
├── paladin-notifications # Notification adapters
├── paladin-content # Content adapters
└── paladin-web # HTTP server
Dependency Graph
graph TD
root["paladin-ai (root)"]
core["paladin-ai-core"]
ports["paladin-ports"]
batt["paladin-battalion"]
llm["paladin-llm"]
mem["paladin-memory"]
stor["paladin-storage"]
notif["paladin-notifications"]
cont["paladin-content"]
web["paladin-web"]
root --> core
root --> ports
root --> batt
root --> llm
root --> mem
root --> stor
root --> notif
root --> cont
root --> web
ports --> core
batt --> core
batt --> ports
llm --> core
llm --> ports
mem --> core
mem --> ports
stor --> core
stor --> ports
notif --> core
notif --> ports
cont --> core
cont --> ports
web --> core
web --> ports
Crate Details
paladin-ai-core
Directory: crates/paladin-core/
Layer: Core domain
External deps: serde, uuid, chrono, tokio (runtime only), thiserror
Pure domain types — zero infrastructure dependencies.
Key modules:
src/
├── base/
│ ├── node.rs # Node<T> entity wrapper
│ ├── collection.rs # Paginated collections
│ ├── field.rs # Dynamic field definitions
│ └── message.rs # Inter-agent messages
└── platform/container/
├── paladin.rs # Paladin aggregate
├── paladin_config.rs
├── paladin_error.rs
├── garrison.rs # Garrison domain types
├── garrison_error.rs
├── arsenal/ # Arsenal + ToolDefinition
├── citadel.rs
├── herald.rs
├── sanctum.rs
└── battalion/ # Battalion domain types
paladin-ports
Directory: crates/paladin-ports/
Layer: Application boundary
External deps: paladin-ai-core, async-trait, tokio
Port trait contracts. No infrastructure SDKs.
Key modules:
src/output/
├── llm_port.rs # LlmPort
├── garrison_port.rs # GarrisonPort
├── sanctum_port.rs # SanctumPort
├── arsenal_port.rs # ArsenalPort
├── citadel_port.rs # CitadelPort
├── file_storage_port.rs # FileStoragePort
├── notification_port.rs # NotificationPort
├── queue_port.rs # QueuePort
├── embedding_port.rs # EmbeddingPort
└── …
paladin-battalion
Directory: crates/paladin-battalion/
Layer: Application services
External deps: paladin-ai-core, paladin-ports, tokio, serde
All eight orchestration patterns + Commander router.
Key modules:
src/
├── formation_service.rs # Sequential N→N+1
├── phalanx_service.rs # Concurrent parallel
├── campaign_service.rs # DAG / graph
├── chain_of_command_service.rs # Hierarchical delegation
├── conclave_execution_service.rs # Expert synthesis
├── council_service.rs # Multi-agent discussion
├── grove_service.rs # Semantic routing
├── maneuver/ # Flow DSL
└── commander.rs # Strategy auto-router
paladin-llm
Directory: crates/paladin-llm/
Layer: Infrastructure (LLM adapters)
External deps: paladin-ai-core, paladin-ports, reqwest, serde_json, tokio
Feature flags:
| Flag | Default | Enables |
|---|---|---|
openai | yes | OpenAIAdapter, OpenAIEmbeddingAdapter |
anthropic | no | AnthropicAdapter |
deepseek | no | DeepSeekAdapter |
mock | yes | MockLlmAdapter, MultiStepMockLlmPort |
openai-embeddings | no | Embedding API |
vision | no | Vision / multimodal extensions |
Key modules: src/openai/, src/anthropic/, src/deepseek/, src/mock.rs
paladin-memory
Directory: crates/paladin-memory/
Layer: Infrastructure (memory adapters)
External deps: paladin-ai-core, paladin-ports, optionally sqlx, qdrant-client, tiktoken-rs
Feature flags:
| Flag | Default | Enables |
|---|---|---|
sqlite | no | SqliteGarrison |
qdrant | no | QdrantSanctumAdapter |
content-processing | no | TiktokenCounter, TokenCounter |
Key modules:
src/
├── garrison/
│ ├── in_memory.rs # InMemoryGarrison (always)
│ └── sqlite.rs # SqliteGarrison (feature: sqlite)
├── sanctum/
│ ├── in_memory.rs # InMemorySanctum (always)
│ └── qdrant.rs # QdrantSanctumAdapter (feature: qdrant)
└── services/
├── memory_extraction_service.rs
└── rag_retrieval_service.rs
paladin-storage
Directory: crates/paladin-storage/
Layer: Infrastructure (SQL repositories)
External deps: paladin-ai-core, paladin-ports, optionally sqlx, mysql
Feature flags: sqlite, mysql
paladin-notifications
Directory: crates/paladin-notifications/
Layer: Infrastructure (notification adapters)
Feature flags: email (lettre + handlebars), push (stub), system
paladin-content
Directory: crates/paladin-content/
Layer: Infrastructure (content processing)
Provides HTTP/file content fetcher, RSS/news ingestion, document parsing, and LLM-powered content analysis pipelines.
paladin-web
Directory: crates/paladin-web/
Layer: Infrastructure (HTTP server)
External deps: actix-web, axum, tokio, serde
User management REST API, RBAC middleware, content delivery endpoints.
paladin-ai (root umbrella)
Directory: / (workspace root)
Feature flags:
| Flag | Default | Enables |
|---|---|---|
llm-openai | yes | OpenAI adapter |
redis-queue | no | Redis task queue |
s3-storage | no | MinIO / S3 storage |
openai-embeddings | no | Embedding API |
qdrant | no | Qdrant vector DB |
Adding a New Crate
- Create
crates/my-new-crate/withCargo.toml+src/lib.rs - Add to
[workspace.members]in the rootCargo.toml - Set the layer: depend only on crates at the same or inner layers
- Add to the root
paladin-aiumbrella via an optional dependency - Document in this crate map
See Also
- Crate Map & Feature Flags (API Reference) — consumer/dependency view with copy-paste
Cargo.tomlprofiles. - Architecture Overview
- Hexagonal Design
- Domain Model