Files
openhuman/src-tauri/Cargo.toml
T

197 lines
6.9 KiB
TOML

[package]
name = "OpenHuman"
version = "0.49.11"
description = "OpenHuman - AI-powered Super Assistant"
authors = ["OpenHuman"]
edition = "2021"
default-run = "OpenHuman"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
# The `_lib` suffix may seem redundant but it is necessary
# to make the lib name unique and wouldn't conflict with the bin name.
# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
name = "openhuman"
crate-type = ["staticlib", "cdylib", "rlib"]
[[bin]]
name = "OpenHuman"
path = "src/main.rs"
[[bin]]
name = "openhuman-core"
path = "src/bin/openhuman-core.rs"
required-features = ["standalone-bins"]
[[bin]]
name = "openhuman-cli"
path = "src/bin/openhuman-cli.rs"
required-features = ["standalone-bins"]
[build-dependencies]
tauri-build = { version = "2", features = [] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
[dependencies]
# Tauri core and plugins
tauri = { version = "2.10", features = ["tray-icon", "macos-private-api"] }
tauri-plugin-opener = "2"
tauri-plugin-deep-link = "2.0.0"
tauri-plugin-os = "2"
# tauri-plugin-autostart moved to desktop-only target section
# tauri-plugin-notification moved to desktop-only target section
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# HTTP client: rustls for cross-platform TLS (Android), native-tls for desktop skill HTTP
# (some APIs/CDNs use TLS configs that rustls can't negotiate — native-tls uses OS TLS stack)
reqwest = { version = "0.12", default-features = false, features = ["json", "blocking", "rustls-tls", "native-tls", "stream", "http2", "multipart", "socks"] }
# Async runtime
tokio = { version = "1", features = ["full", "sync"] }
# keyring moved to desktop-only target section (not supported on Android/iOS)
# Concurrency utilities
once_cell = "1.19"
parking_lot = "0.12"
# Logging
log = "0.4"
env_logger = "0.11"
# AI module dependencies
base64 = "0.22"
aes-gcm = "0.10"
argon2 = "0.5"
rand = "0.9"
dirs = "5"
sha2 = "0.10"
hmac = "0.12"
uuid = { version = "1", features = ["v4"] }
# OpenHuman agent runtime dependencies
anyhow = "1.0"
async-trait = "0.1"
chacha20poly1305 = "0.10"
hex = "0.4"
tokio-util = { version = "0.7", features = ["rt"] }
landlock = { version = "0.4", optional = true }
# V8 JavaScript runtime moved to desktop-only (not available on Android/iOS)
tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
# HTTP streaming support for fetch polyfill
futures = "0.3"
# Embedded SQLite for skill databases
rusqlite = { version = "0.37", features = ["bundled"] }
# Date/time utilities
chrono = { version = "0.4", features = ["serde"] }
# Cron expression parsing for scheduled skill tasks
cron = "0.12"
# Stream/Sink utilities for WebSocket and HTTP streaming
futures-util = "0.3"
# Android uses a simpler approach - no persistent Socket.io (use web socket from frontend)
# OpenHuman config + observability
directories = "6"
toml = "1.0"
shellexpand = "3.1"
schemars = "1.2"
tracing = { version = "0.1", default-features = false }
tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt", "ansi", "env-filter"] }
prometheus = { version = "0.14", default-features = false }
urlencoding = "2.1"
thiserror = "2.0"
ring = "0.17"
prost = { version = "0.14", default-features = false }
postgres = { version = "0.19", features = ["with-chrono-0_4"] }
chrono-tz = "0.10"
dialoguer = { version = "0.12", features = ["fuzzy-select"] }
console = "0.16"
glob = "0.3"
regex = "1.10"
hostname = "0.4.2"
rustls = { version = "0.23", features = ["ring"] }
rustls-pki-types = "1.14.0"
tokio-rustls = "0.26.4"
webpki-roots = "1.0.6"
clap = { version = "4.5", features = ["derive"] }
lettre = { version = "0.11.19", default-features = false, features = ["builder", "smtp-transport", "rustls-tls"] }
mail-parser = "0.11.2"
async-imap = { version = "0.11", features = ["runtime-tokio"], default-features = false }
axum = { version = "0.8", default-features = false, features = ["http1", "json", "tokio", "query", "ws", "macros"] }
tower = { version = "0.5", default-features = false }
tower-http = { version = "0.6", default-features = false, features = ["limit", "timeout"] }
http-body-util = "0.1"
opentelemetry = { version = "0.31", default-features = false, features = ["trace", "metrics"] }
opentelemetry_sdk = { version = "0.31", default-features = false, features = ["trace", "metrics"] }
opentelemetry-otlp = { version = "0.31", default-features = false, features = ["trace", "metrics", "http-proto", "reqwest-client", "reqwest-rustls-webpki-roots"] }
tokio-stream = { version = "0.1.18", features = ["full"] }
url = "2"
tinyhumansai = "0.1.5"
# Optional integrations
matrix-sdk = { version = "0.16", optional = true, default-features = false, features = ["e2e-encryption", "rustls-tls", "markdown"] }
fantoccini = { version = "0.22.0", optional = true, default-features = false, features = ["rustls-tls"] }
serde-big-array = { version = "0.5", optional = true }
nusb = { version = "0.2", default-features = false, optional = true }
tokio-serial = { version = "5", default-features = false, optional = true }
probe-rs = { version = "0.30", optional = true }
pdf-extract = { version = "0.10", optional = true }
wa-rs = { version = "0.2", optional = true, default-features = false }
wa-rs-core = { version = "0.2", optional = true, default-features = false }
wa-rs-binary = { version = "0.2", optional = true, default-features = false }
wa-rs-proto = { version = "0.2", optional = true, default-features = false }
wa-rs-ureq-http = { version = "0.2", optional = true }
wa-rs-tokio-transport = { version = "0.2", optional = true, default-features = false }
[target.'cfg(target_os = "linux")'.dependencies]
rppal = { version = "0.22", optional = true }
[target.'cfg(target_os = "android")'.dependencies]
# Android logging (routes Rust `log` crate to logcat)
android_logger = "0.14"
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
keyring = "3"
tauri-plugin-autostart = "2"
tauri-plugin-notification = "2"
# QuickJS JavaScript runtime (via quickjs-rs)
# Only available on desktop - prebuilt binaries don't exist for Android/iOS
rquickjs = { version = "0.11", features = ["futures", "macro", "loader", "parallel"] }
[dev-dependencies]
tempfile = "3"
[features]
# This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!!
custom-protocol = ["tauri/custom-protocol"]
sandbox-landlock = ["dep:landlock"]
sandbox-bubblewrap = []
# OpenHuman feature flags
hardware = ["dep:nusb", "dep:tokio-serial"]
channel-matrix = ["dep:matrix-sdk"]
peripheral-rpi = ["dep:rppal"]
browser-native = ["dep:fantoccini"]
fantoccini = ["browser-native"]
landlock = ["sandbox-landlock"]
probe = ["dep:probe-rs"]
rag-pdf = ["dep:pdf-extract"]
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", "serde-big-array"]
standalone-bins = []