[package]
edition = "2024"
rust-version = "1.91"
name = "rsclaw"
version = "2026.5.1"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "AI Agent Engine Compatible with OpenClaw"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rsclaw-ai/rsclaw"
[features]
channel-matrix = ["dep:matrix-sdk"]
default = ["openclaw-migrate"]
openclaw-migrate = ["rusqlite"]
tray = [
"dep:tray-icon",
"dep:muda",
]
[lib]
name = "rsclaw"
path = "src/lib.rs"
[[bin]]
name = "rsclaw"
path = "src/main.rs"
[[test]]
name = "acp_integration"
path = "tests/acp_integration.rs"
[[test]]
name = "agent_turn"
path = "tests/agent_turn.rs"
[[test]]
name = "channel_chunker"
path = "tests/channel_chunker.rs"
[[test]]
name = "channel_cli"
path = "tests/channel_cli.rs"
[[test]]
name = "channel_custom"
path = "tests/channel_custom.rs"
[[test]]
name = "channel_dingtalk"
path = "tests/channel_dingtalk.rs"
[[test]]
name = "channel_discord"
path = "tests/channel_discord.rs"
[[test]]
name = "channel_feishu"
path = "tests/channel_feishu.rs"
[[test]]
name = "channel_line"
path = "tests/channel_line.rs"
[[test]]
name = "channel_manager"
path = "tests/channel_manager.rs"
[[test]]
name = "channel_matrix"
path = "tests/channel_matrix.rs"
[[test]]
name = "channel_media"
path = "tests/channel_media.rs"
[[test]]
name = "channel_qq"
path = "tests/channel_qq.rs"
[[test]]
name = "channel_send_retry"
path = "tests/channel_send_retry.rs"
[[test]]
name = "channel_signal"
path = "tests/channel_signal.rs"
[[test]]
name = "channel_slack"
path = "tests/channel_slack.rs"
[[test]]
name = "channel_telegram"
path = "tests/channel_telegram.rs"
[[test]]
name = "channel_transcription"
path = "tests/channel_transcription.rs"
[[test]]
name = "channel_wechat"
path = "tests/channel_wechat.rs"
[[test]]
name = "channel_wecom"
path = "tests/channel_wecom.rs"
[[test]]
name = "channel_whatsapp"
path = "tests/channel_whatsapp.rs"
[[test]]
name = "channel_zalo"
path = "tests/channel_zalo.rs"
[[test]]
name = "config_validation"
path = "tests/config_validation.rs"
[[test]]
name = "cron_execution"
path = "tests/cron_execution.rs"
[[test]]
name = "dm_policy"
path = "tests/dm_policy.rs"
[[test]]
name = "failover_retry"
path = "tests/failover_retry.rs"
[[test]]
name = "gateway_health"
path = "tests/gateway_health.rs"
[[test]]
name = "heartbeat"
path = "tests/heartbeat.rs"
[[test]]
name = "new_features"
path = "tests/new_features.rs"
[[test]]
name = "organic_evolution"
path = "tests/organic_evolution.rs"
[[test]]
name = "provider_anthropic"
path = "tests/provider_anthropic.rs"
[[test]]
name = "provider_gemini"
path = "tests/provider_gemini.rs"
[[test]]
name = "provider_mock"
path = "tests/provider_mock.rs"
[[test]]
name = "provider_openai"
path = "tests/provider_openai.rs"
[[test]]
name = "provider_openai_ollama"
path = "tests/provider_openai_ollama.rs"
[[test]]
name = "provider_registry"
path = "tests/provider_registry.rs"
[[test]]
name = "restart_flow"
path = "tests/restart_flow.rs"
[[test]]
name = "session_lifecycle"
path = "tests/session_lifecycle.rs"
[[test]]
name = "shell_plugin_dispatch"
path = "tests/shell_plugin_dispatch.rs"
[[test]]
name = "skill_distillation"
path = "tests/skill_distillation.rs"
[[test]]
name = "sse_stream"
path = "tests/sse_stream.rs"
[dependencies.aes]
version = "0.8"
[dependencies.anycli]
version = "0.2"
[dependencies.anyhow]
version = "1"
[dependencies.axum]
version = "0.8"
features = [
"ws",
"multipart",
]
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1"
[dependencies.bzip2]
version = "0.6.1"
[dependencies.calamine]
version = "0.26"
[dependencies.candle-core]
version = "0.9"
[dependencies.candle-nn]
version = "0.9"
[dependencies.candle-transformers]
version = "0.9"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.chrono-tz]
version = "0.10"
[dependencies.clap]
version = "4"
features = [
"derive",
"env",
]
[dependencies.console]
version = "0.16"
[dependencies.crossterm]
version = "0.28"
[dependencies.dashmap]
version = "6"
[dependencies.dialoguer]
version = "0.12"
[dependencies.dirs-next]
version = "2"
[dependencies.docx-rs]
version = "0.4"
[dependencies.encoding_rs]
version = "0.8.35"
[dependencies.flate2]
version = "1"
[dependencies.fs2]
version = "0.4.3"
[dependencies.futures]
version = "0.3"
[dependencies.genpdf]
version = "0.2"
[dependencies.glob]
version = "0.3.3"
[dependencies.hex]
version = "0.4"
[dependencies.hmac]
version = "0.12"
[dependencies.hnsw_rs]
version = "0.3"
[dependencies.htmd]
version = "0.5"
[dependencies.image]
version = "0.25"
features = [
"jpeg",
"png",
"webp",
"gif",
]
default-features = false
[dependencies.include_dir]
version = "0.7"
[dependencies.indicatif]
version = "0.17"
[dependencies.json5]
version = "0.4"
[dependencies.lark-websocket-protobuf]
version = "0.1"
[dependencies.libc]
version = "0.2"
[dependencies.lol_html]
version = "1.2"
[dependencies.lopdf]
version = "0.34"
[dependencies.matrix-sdk]
version = "0.9"
features = [
"e2e-encryption",
"rustls-tls",
"sqlite",
]
optional = true
default-features = false
[dependencies.md-5]
version = "0.10"
[dependencies.mime]
version = "0.3"
[dependencies.moka]
version = "0.12"
features = ["future"]
[dependencies.muda]
version = "0.16"
optional = true
[dependencies.ogg]
version = "0.9"
[dependencies.opus-decoder]
version = "0.1"
[dependencies.pdf-extract]
version = "0.10"
[dependencies.prost]
version = "0.13"
[dependencies.qrcode]
version = "0.14"
[dependencies.rand]
version = "0.9"
[dependencies.ratatui]
version = "0.28"
[dependencies.rayon]
version = "1"
[dependencies.redb]
version = "2"
[dependencies.regex]
version = "1"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"stream",
"multipart",
"blocking",
"rustls-tls-webpki-roots-no-provider",
"socks",
]
default-features = false
[dependencies.rusqlite]
version = "0.32"
features = ["bundled"]
optional = true
[dependencies.rust_xlsxwriter]
version = "0.83"
[dependencies.rustls]
version = "0.23"
features = [
"aws_lc_rs",
"logging",
"std",
"tls12",
]
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
features = ["preserve_order"]
[dependencies.serde_yaml_ng]
version = "0.10"
[dependencies.sha1]
version = "0.10"
[dependencies.sha2]
version = "0.10"
[dependencies.silk-rs]
version = "0.2"
[dependencies.symphonia]
version = "0.5"
features = [
"mp3",
"aac",
"ogg",
"flac",
"wav",
"pcm",
"vorbis",
"isomp4",
"mkv",
]
[dependencies.sys-info]
version = "0.9"
[dependencies.tantivy]
version = "0.22"
[dependencies.tar]
version = "0.4"
[dependencies.tempfile]
version = "3"
[dependencies.thiserror]
version = "2"
[dependencies.tokenizers]
version = "0.21"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
[dependencies.tokio-tungstenite]
version = "0.29"
features = ["rustls-tls-webpki-roots"]
[dependencies.toml]
version = "1"
[dependencies.tower]
version = "0.5"
[dependencies.tower-http]
version = "0.6"
features = [
"cors",
"trace",
]
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
"json",
"chrono",
]
[dependencies.tray-icon]
version = "0.21"
optional = true
[dependencies.urlencoding]
version = "2"
[dependencies.uuid]
version = "1"
features = ["v4"]
[dependencies.wasmtime]
version = "29"
features = ["async"]
[dependencies.wasmtime-wasi]
version = "29"
[dependencies.which]
version = "7"
[dependencies.xz2]
version = "0.1"
[dependencies.zip]
version = "2"
[dev-dependencies.ctor]
version = "0.4"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.wiremock]
version = "0.6"
[target."cfg(windows)".dependencies.winapi]
version = "0.3"
features = [
"handleapi",
"processthreadsapi",
"winnt",
]
[profile.dev]
opt-level = 1
[profile.dev.package."*"]
opt-level = 0
[profile.release]
opt-level = "s"
lto = "fat"
codegen-units = 1
debug-assertions = false
panic = "abort"
overflow-checks = false
strip = "symbols"