[package]
name = "ijima-server"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "README.md"
description = "HTTP daemon and store backends for the Ijima centralized agentic memory backend"
[features]
default = ["std", "http", "server-auth", "backend-surreal"]
std = []
http = ["dep:axum", "dep:tokio", "dep:tracing", "dep:tracing-subscriber", "ijima-core/serde"]
backend-surreal = ["dep:surrealdb", "ijima-core/serde", "dep:tokio", "dep:sha2"]
backend-sqlite = ["dep:rusqlite", "ijima-core/serde"]
server-auth = ["dep:schubert", "dep:base64", "dep:ed25519-dalek", "dep:sha2"]
rate-limit = ["server-auth", "http"]
cli = ["dep:clap", "dep:reqwest", "dep:ijima-client"]
embeddings-candle = ["dep:candle-core", "dep:candle-nn", "dep:candle-transformers", "dep:tokenizers", "dep:hf-hub", "ijima-core/serde"]
mining = ["dep:ijima-miner", "dep:proserpina-agent", "backend-surreal", "ijima-miner/llm", "proserpina-agent/backend-http"]
tls = ["dep:axum-server", "http"]
federation = ["ijima-core/federation", "http"]
[dependencies]
ijima-core = { workspace = true }
ijima-client = { workspace = true, optional = true }
ijima-miner = { workspace = true, optional = true }
proserpina-agent = { workspace = true, optional = true }
thiserror = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
toml = "1.1"
async-trait = "0.1"
axum = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
tracing = { workspace = true, optional = true }
tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt", "env-filter", "smallvec"], optional = true }
candle-core = { version = "0.11", default-features = false, optional = true }
candle-nn = { version = "0.11", default-features = false, optional = true }
candle-transformers = { version = "0.11", default-features = false, optional = true }
tokenizers = { version = "0.21", optional = true }
hf-hub = { version = "1.0", features = ["blocking"], optional = true }
schubert = { version = "0.5", features = ["std", "crypto", "policy"], optional = true }
base64 = { version = "0.23", optional = true }
surrealdb = { version = "3", default-features = false, features = ["kv-mem", "kv-surrealkv"], optional = true }
rusqlite = { workspace = true, optional = true }
sha2 = { version = "0.11", optional = true }
ed25519-dalek = { version = "2", default-features = false, features = ["rand_core"], optional = true }
axum-server = { version = "0.8", features = ["tls-rustls"], optional = true }
clap = { version = "4", features = ["derive"], optional = true }
regex = "1"
reqwest = { workspace = true, optional = true }
[dev-dependencies]
tokio = { workspace = true, features = ["macros", "rt", "net", "time"] }
tower = { version = "0.5", features = ["util"] }
ijima-client = { workspace = true }
[[bin]]
name = "ijima"
path = "src/main.rs"
required-features = ["http", "server-auth", "backend-surreal", "cli"]