[workspace]
members = [
"daimon-core",
"daimon-macros",
"daimon-provider-bedrock",
"daimon-provider-gemini",
"daimon-provider-azure",
"daimon-plugin-pgvector",
"daimon-plugin-opensearch",
]
[package]
name = "daimon"
version = "0.16.0"
edition = "2024"
rust-version = "1.85"
description = "A Rust-native AI agent framework"
license = "MIT OR Apache-2.0"
repository = "https://github.com/Lexmata/daimon"
homepage = "https://github.com/Lexmata/daimon"
documentation = "https://docs.rs/daimon"
keywords = ["ai", "agent", "llm", "openai", "anthropic"]
categories = ["asynchronous", "api-bindings"]
readme = "README.md"
[features]
default = ["openai", "anthropic", "macros", "ollama"]
macros = ["dep:daimon-macros"]
openai = ["dep:reqwest"]
anthropic = ["dep:reqwest"]
gemini = ["dep:daimon-provider-gemini"]
azure = ["dep:daimon-provider-azure"]
bedrock = ["dep:daimon-provider-bedrock"]
sqs = ["bedrock", "daimon-provider-bedrock/sqs"]
pubsub = ["gemini", "daimon-provider-gemini/pubsub"]
servicebus = ["azure", "daimon-provider-azure/servicebus"]
ollama = ["dep:reqwest"]
sqlite = ["dep:rusqlite"]
redis = ["dep:redis"]
nats = ["dep:async-nats"]
amqp = ["dep:lapin"]
mcp = ["dep:reqwest", "dep:tokio-tungstenite"]
otel = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:tracing-opentelemetry", "dep:tracing-subscriber"]
http-server = ["dep:axum", "dep:tower-http"]
qdrant = ["dep:qdrant-client"]
pgvector = ["dep:daimon-plugin-pgvector"]
opensearch = ["dep:daimon-plugin-opensearch"]
grpc = ["dep:tonic", "dep:prost"]
eval = []
full = ["openai", "anthropic", "gemini", "azure", "bedrock", "ollama", "macros", "mcp", "sqlite", "redis", "nats", "amqp", "otel", "http-server", "qdrant", "pgvector", "opensearch", "grpc", "eval", "sqs", "pubsub", "servicebus"]
[dependencies]
daimon-core = { path = "daimon-core", version = "0.16.0" }
tokio = { version = "1", features = ["full"] }
tokio-util = "0.7"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tracing = "0.1"
futures = "0.3"
pin-project-lite = "0.2"
async-stream = "0.3"
jsonschema = "0.43"
itoa = "1"
ryu = "1"
regex-lite = "0.1"
daimon-macros = { path = "daimon-macros", version = "0.16.0", optional = true }
daimon-provider-bedrock = { path = "daimon-provider-bedrock", version = "0.16.0", optional = true }
daimon-provider-gemini = { path = "daimon-provider-gemini", version = "0.16.0", optional = true }
daimon-provider-azure = { path = "daimon-provider-azure", version = "0.16.0", optional = true }
daimon-plugin-pgvector = { path = "daimon-plugin-pgvector", version = "0.16.0", optional = true }
daimon-plugin-opensearch = { path = "daimon-plugin-opensearch", version = "0.16.0", optional = true }
reqwest = { version = "0.12", features = ["json", "rustls-tls", "stream"], default-features = false, optional = true }
rusqlite = { version = "0.32", features = ["bundled"], optional = true }
redis = { version = "1", features = ["tokio-comp", "aio"], optional = true }
opentelemetry = { version = "0.31", optional = true }
opentelemetry_sdk = { version = "0.31", features = ["rt-tokio"], optional = true }
opentelemetry-otlp = { version = "0.31", features = ["http-proto"], optional = true }
tracing-opentelemetry = { version = "0.32", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter"], optional = true }
axum = { version = "0.8", optional = true }
tower-http = { version = "0.6", features = ["cors"], optional = true }
qdrant-client = { version = "1", optional = true }
tokio-tungstenite = { version = "0.26", features = ["rustls-tls-webpki-roots"], optional = true }
tonic = { version = "0.12", optional = true }
prost = { version = "0.13", optional = true }
async-nats = { version = "0.38", optional = true }
lapin = { version = "2", optional = true }
[build-dependencies]
tonic-build = { version = "0.12", default-features = false, features = ["prost", "transport"] }
[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util"] }
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
proptest = "1"
criterion = { version = "0.5", features = ["async_tokio"] }
[dev-dependencies.cargo-husky]
version = "1"
default-features = false
features = ["user-hooks"]
[[example]]
name = "simple_agent"
path = "examples/simple_agent.rs"
required-features = ["openai"]
[[example]]
name = "with_tools"
path = "examples/with_tools.rs"
required-features = ["openai"]
[[example]]
name = "streaming"
path = "examples/streaming.rs"
required-features = ["openai"]
[[example]]
name = "bedrock_agent"
path = "examples/bedrock_agent.rs"
required-features = ["bedrock"]
[[example]]
name = "gemini_agent"
path = "examples/gemini_agent.rs"
required-features = ["gemini"]
[[example]]
name = "azure_agent"
path = "examples/azure_agent.rs"
required-features = ["azure"]
[[example]]
name = "ollama_agent"
path = "examples/ollama_agent.rs"
required-features = ["ollama"]
[[example]]
name = "tool_macro"
path = "examples/tool_macro.rs"
required-features = ["openai", "macros"]
[[example]]
name = "chain"
path = "examples/chain.rs"
required-features = ["openai"]
[[example]]
name = "mcp_client"
path = "examples/mcp_client.rs"
required-features = ["mcp", "openai"]
[[bench]]
name = "agent_bench"
harness = false