[package]
edition = "2021"
rust-version = "1.87"
name = "zeroclaw"
version = "0.1.7"
authors = ["theonlyhennygod"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Zero overhead. Zero compromise. 100% Rust. The fastest, smallest AI assistant."
readme = "README.md"
keywords = [
"ai",
"agent",
"cli",
"assistant",
"chatbot",
]
categories = [
"command-line-utilities",
"api-bindings",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/zeroclaw-labs/zeroclaw"
[features]
browser-native = ["dep:fantoccini"]
channel-lark = ["dep:prost"]
channel-matrix = ["dep:matrix-sdk"]
default = []
fantoccini = ["browser-native"]
hardware = [
"nusb",
"tokio-serial",
]
landlock = ["sandbox-landlock"]
memory-postgres = ["dep:postgres"]
observability-otel = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
]
peripheral-rpi = ["rppal"]
probe = ["dep:probe-rs"]
rag-pdf = ["dep:pdf-extract"]
sandbox-bubblewrap = []
sandbox-landlock = ["dep:landlock"]
whatsapp-web = [
"dep:wa-rs",
"dep:wa-rs-core",
"dep:wa-rs-binary",
"dep:wa-rs-proto",
"dep:wa-rs-ureq-http",
"dep:wa-rs-tokio-transport",
"dep:serde-big-array",
"dep:prost",
"dep:qrcode",
]
[lib]
name = "zeroclaw"
path = "src/lib.rs"
[[bin]]
name = "zeroclaw"
path = "src/main.rs"
[[example]]
name = "custom_channel"
path = "examples/custom_channel.rs"
[[example]]
name = "custom_memory"
path = "examples/custom_memory.rs"
[[example]]
name = "custom_provider"
path = "examples/custom_provider.rs"
[[example]]
name = "custom_tool"
path = "examples/custom_tool.rs"
[[test]]
name = "agent_e2e"
path = "tests/agent_e2e.rs"
[[test]]
name = "agent_loop_robustness"
path = "tests/agent_loop_robustness.rs"
[[test]]
name = "channel_routing"
path = "tests/channel_routing.rs"
[[test]]
name = "config_persistence"
path = "tests/config_persistence.rs"
[[test]]
name = "config_schema"
path = "tests/config_schema.rs"
[[test]]
name = "dockerignore_test"
path = "tests/dockerignore_test.rs"
[[test]]
name = "gemini_fallback_oauth_refresh"
path = "tests/gemini_fallback_oauth_refresh.rs"
[[test]]
name = "hooks_integration"
path = "tests/hooks_integration.rs"
[[test]]
name = "memory_comparison"
path = "tests/memory_comparison.rs"
[[test]]
name = "memory_restart"
path = "tests/memory_restart.rs"
[[test]]
name = "openai_codex_vision_e2e"
path = "tests/openai_codex_vision_e2e.rs"
[[test]]
name = "otel_dependency_feature_regression"
path = "tests/otel_dependency_feature_regression.rs"
[[test]]
name = "provider_resolution"
path = "tests/provider_resolution.rs"
[[test]]
name = "provider_schema"
path = "tests/provider_schema.rs"
[[test]]
name = "reply_target_field_regression"
path = "tests/reply_target_field_regression.rs"
[[test]]
name = "telegram_attachment_fallback"
path = "tests/telegram_attachment_fallback.rs"
[[test]]
name = "whatsapp_webhook_security"
path = "tests/whatsapp_webhook_security.rs"
[[bench]]
name = "agent_benchmarks"
path = "benches/agent_benchmarks.rs"
harness = false
[dependencies.anyhow]
version = "1.0"
[dependencies.async-imap]
version = "0.11"
features = ["runtime-tokio"]
default-features = false
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
features = [
"http1",
"json",
"tokio",
"query",
"ws",
"macros",
]
default-features = false
[dependencies.base64]
version = "0.22"
[dependencies.chacha20poly1305]
version = "0.10"
[dependencies.chrono]
version = "0.4"
features = [
"clock",
"std",
"serde",
]
default-features = false
[dependencies.chrono-tz]
version = "0.10"
[dependencies.clap]
version = "4.5"
features = ["derive"]
[dependencies.clap_complete]
version = "4.5"
[dependencies.console]
version = "0.16"
[dependencies.cron]
version = "0.15"
[dependencies.dialoguer]
version = "0.12"
features = ["fuzzy-select"]
[dependencies.directories]
version = "6.0"
[dependencies.fantoccini]
version = "0.22.0"
features = ["rustls-tls"]
optional = true
default-features = false
[dependencies.futures-util]
version = "0.3"
features = ["sink"]
default-features = false
[dependencies.glob]
version = "0.3"
[dependencies.hex]
version = "0.4"
[dependencies.hmac]
version = "0.12"
[dependencies.hostname]
version = "0.4.2"
[dependencies.http-body-util]
version = "0.1"
[dependencies.image]
version = "0.25"
features = [
"jpeg",
"png",
]
default-features = false
[dependencies.lettre]
version = "0.11.19"
features = [
"builder",
"smtp-transport",
"rustls-tls",
]
default-features = false
[dependencies.mail-parser]
version = "0.11.2"
[dependencies.matrix-sdk]
version = "0.16"
features = [
"e2e-encryption",
"rustls-tls",
"markdown",
"sqlite",
]
optional = true
default-features = false
[dependencies.mime_guess]
version = "2"
[dependencies.nanohtml2text]
version = "0.2"
[dependencies.nostr-sdk]
version = "0.44"
features = [
"nip04",
"nip59",
]
default-features = false
[dependencies.opentelemetry]
version = "0.31"
features = [
"trace",
"metrics",
]
optional = true
default-features = false
[dependencies.opentelemetry-otlp]
version = "0.31"
features = [
"trace",
"metrics",
"http-proto",
"reqwest-blocking-client",
"reqwest-rustls-webpki-roots",
]
optional = true
default-features = false
[dependencies.opentelemetry_sdk]
version = "0.31"
features = [
"trace",
"metrics",
]
optional = true
default-features = false
[dependencies.parking_lot]
version = "0.12"
[dependencies.postgres]
version = "0.19"
features = ["with-chrono-0_4"]
optional = true
[dependencies.prometheus]
version = "0.14"
default-features = false
[dependencies.prost]
version = "0.14"
features = ["derive"]
optional = true
default-features = false
[dependencies.rand]
version = "0.10"
[dependencies.regex]
version = "1.10"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
"blocking",
"multipart",
"stream",
"socks",
]
default-features = false
[dependencies.ring]
version = "0.17"
[dependencies.rusqlite]
version = "0.37"
features = ["bundled"]
[dependencies.rust-embed]
version = "8"
[dependencies.rustls]
version = "0.23"
[dependencies.rustls-pki-types]
version = "1.14.0"
[dependencies.schemars]
version = "1.2"
[dependencies.serde]
version = "1.0"
features = ["derive"]
default-features = false
[dependencies.serde-big-array]
version = "0.5"
optional = true
[dependencies.serde_ignored]
version = "0.1"
[dependencies.serde_json]
version = "1.0"
features = ["std"]
default-features = false
[dependencies.sha2]
version = "0.10"
[dependencies.shellexpand]
version = "3.1"
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.42"
features = [
"rt-multi-thread",
"macros",
"time",
"net",
"io-util",
"sync",
"process",
"io-std",
"fs",
"signal",
]
default-features = false
[dependencies.tokio-rustls]
version = "0.26.4"
[dependencies.tokio-serial]
version = "5"
optional = true
default-features = false
[dependencies.tokio-stream]
version = "0.1.18"
features = [
"fs",
"sync",
]
default-features = false
[dependencies.tokio-tungstenite]
version = "0.28"
features = ["rustls-tls-webpki-roots"]
[dependencies.tokio-util]
version = "0.7"
default-features = false
[dependencies.toml]
version = "1.0"
[dependencies.tower]
version = "0.5"
default-features = false
[dependencies.tower-http]
version = "0.6"
features = [
"limit",
"timeout",
]
default-features = false
[dependencies.tracing]
version = "0.1"
default-features = false
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"fmt",
"ansi",
"env-filter",
]
default-features = false
[dependencies.urlencoding]
version = "2.1"
[dependencies.uuid]
version = "1.11"
features = [
"v4",
"std",
]
default-features = false
[dependencies.webpki-roots]
version = "1.0.6"
[dependencies.which]
version = "8.0"
[dev-dependencies.criterion]
version = "0.8"
features = ["async_tokio"]
[dev-dependencies.scopeguard]
version = "1.2"
[dev-dependencies.tempfile]
version = "3.14"
[dev-dependencies.wiremock]
version = "0.6"
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.nusb]
version = "0.2"
optional = true
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.pdf-extract]
version = "0.10"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.probe-rs]
version = "0.31"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.qrcode]
version = "0.14"
optional = true
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.wa-rs]
version = "0.2"
optional = true
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.wa-rs-binary]
version = "0.2"
optional = true
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.wa-rs-core]
version = "0.2"
optional = true
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.wa-rs-proto]
version = "0.2"
optional = true
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.wa-rs-tokio-transport]
version = "0.2"
optional = true
default-features = false
[target.'cfg(any(target_os = "linux", target_os = "macos", target_os = "windows"))'.dependencies.wa-rs-ureq-http]
version = "0.2"
optional = true
[target.'cfg(target_os = "linux")'.dependencies.landlock]
version = "0.4"
optional = true
[target.'cfg(target_os = "linux")'.dependencies.rppal]
version = "0.22"
optional = true
[target."cfg(unix)".dependencies.libc]
version = "0.2"
[profile.dist]
opt-level = "z"
lto = "fat"
codegen-units = 1
panic = "abort"
inherits = "release"
strip = true
[profile.release]
opt-level = "z"
lto = "fat"
codegen-units = 1
panic = "abort"
strip = true
[profile.release-fast]
codegen-units = 8
inherits = "release"