[package]
edition = "2021"
rust-version = "1.75"
name = "recursive-agent"
version = "0.8.2"
authors = ["Jeff Kit"]
build = false
exclude = [
".dev/",
"journal/",
"goals/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A Rust coding-agent platform: kernel, tools, multi-agent orchestration, HTTP API, MCP, and TUI"
homepage = "https://github.com/jeffkit/recursive"
documentation = "https://docs.rs/recursive-agent"
readme = "README.md"
keywords = [
"agent",
"llm",
"ai",
"coding-agent",
"mcp",
]
categories = [
"development-tools",
"command-line-utilities",
]
license = "MIT"
repository = "https://github.com/jeffkit/recursive"
[package.metadata.cargo-machete]
ignored = [
"anyhow",
"clap",
"tower-http",
]
[features]
anthropic = []
cli = [
"dep:clap",
"dep:tracing-subscriber",
"dep:anyhow",
]
cloud-runtime = [
"dep:redis",
"dep:deadpool-redis",
"dep:aws-sdk-s3",
"dep:aws-config",
"dep:bollard",
]
coordinator-mode = []
default = [
"cli",
"mcp",
"web_fetch",
"web_search",
"anthropic",
"http",
"skill-hub",
]
e2b-sandbox = []
http = [
"dep:axum",
"dep:tower-http",
"dep:tokio-stream",
"dep:jsonwebtoken",
"dep:agui-protocol",
]
mcp = []
openai-embedding = []
skill-hub = ["dep:zip"]
test-utils = ["dep:tempfile"]
vector-memory = [
"openai-embedding",
"dep:rusqlite",
]
web_fetch = []
web_search = []
weixin = [
"dep:wechatbot",
"dep:qrcode",
]
[lib]
name = "recursive"
path = "src/lib.rs"
[[bin]]
name = "hook_echo"
path = "tests/bin/hook_echo.rs"
test = false
bench = false
doc = false
[[bin]]
name = "mock_mcp_server"
path = "tests/bin/mock_mcp_server.rs"
test = false
bench = false
doc = false
[[example]]
name = "basic"
path = "examples/basic.rs"
required-features = ["test-utils"]
[[example]]
name = "with_hooks"
path = "examples/with_hooks.rs"
required-features = ["test-utils"]
[[example]]
name = "with_mcp"
path = "examples/with_mcp.rs"
required-features = []
[[example]]
name = "with_skills"
path = "examples/with_skills.rs"
required-features = []
[[example]]
name = "with_tools"
path = "examples/with_tools.rs"
required-features = ["test-utils"]
[[test]]
name = "agent_team_integration"
path = "tests/agent_team_integration.rs"
[[test]]
name = "agui_e2e"
path = "tests/agui_e2e.rs"
[[test]]
name = "anthropic_smoke"
path = "tests/anthropic_smoke.rs"
[[test]]
name = "api_surface"
path = "tests/api_surface.rs"
[[test]]
name = "checkpoint_e2e"
path = "tests/checkpoint_e2e.rs"
[[test]]
name = "compact_boundary"
path = "tests/compact_boundary.rs"
[[test]]
name = "deferred_tool_loading"
path = "tests/deferred_tool_loading.rs"
[[test]]
name = "http"
path = "tests/http.rs"
[[test]]
name = "incremental_writes"
path = "tests/incremental_writes.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "invariants"
path = "tests/invariants.rs"
[[test]]
name = "mcp_e2e"
path = "tests/mcp_e2e.rs"
[[test]]
name = "mcp_integration"
path = "tests/mcp_integration.rs"
[[test]]
name = "orphan_resume"
path = "tests/orphan_resume.rs"
[[test]]
name = "resume_by_id"
path = "tests/resume_by_id.rs"
[[test]]
name = "run_event_loop_bg_drain"
path = "tests/run_event_loop_bg_drain.rs"
[[test]]
name = "smoke"
path = "tests/smoke.rs"
[[test]]
name = "usage_tracking"
path = "tests/usage_tracking.rs"
[[test]]
name = "uuid_chain"
path = "tests/uuid_chain.rs"
[[test]]
name = "v050_integration"
path = "tests/v050_integration.rs"
[[test]]
name = "v060_storage_integration"
path = "tests/v060_storage_integration.rs"
[dependencies.agent-client-protocol-schema]
version = "1.4"
[dependencies.agui-protocol]
version = "0.8.2"
optional = true
[dependencies.anyhow]
version = "1"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.aws-config]
version = "1"
features = [
"behavior-version-latest",
"rustls",
]
optional = true
[dependencies.aws-sdk-s3]
version = "1"
features = [
"default-https-client",
"http-1x",
"rt-tokio",
"sigv4a",
]
optional = true
default-features = false
[dependencies.axum]
version = "0.8"
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.blake3]
version = "1"
[dependencies.bollard]
version = "0.18"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.clap]
version = "4"
features = [
"derive",
"env",
]
optional = true
[dependencies.deadpool-redis]
version = "0.18"
optional = true
[dependencies.dirs]
version = "5"
[dependencies.futures-util]
version = "0.3.32"
[dependencies.jsonwebtoken]
version = "9"
optional = true
[dependencies.qrcode]
version = "0.14"
optional = true
[dependencies.redis]
version = "0.27"
features = ["tokio-comp"]
optional = true
[dependencies.regex]
version = "1"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
"stream",
]
default-features = false
[dependencies.rusqlite]
version = "0.32"
features = ["bundled"]
optional = true
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_yaml_ng]
version = "0.10.0"
[dependencies.sha2]
version = "0.10"
[dependencies.shell-words]
version = "1"
[dependencies.tempfile]
version = "3"
optional = true
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = [
"macros",
"rt-multi-thread",
"process",
"fs",
"io-util",
"io-std",
"time",
"signal",
"sync",
]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
optional = true
[dependencies.tokio-util]
version = "0.7"
features = ["rt"]
[dependencies.toml]
version = "0.8"
[dependencies.tower-http]
version = "0.6"
features = [
"cors",
"trace",
]
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
]
optional = true
[dependencies.url]
version = "2"
[dependencies.uuid]
version = "1"
features = [
"v4",
"v7",
]
[dependencies.walkdir]
version = "2"
[dependencies.wechatbot]
version = "0.3.2"
optional = true
[dependencies.zip]
version = "4.2.0"
optional = true
[dev-dependencies.agui-protocol]
version = "0.8.2"
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.jsonwebtoken]
version = "9"
[dev-dependencies.mockito]
version = "1.7.2"
[dev-dependencies.mutants]
version = "0.0.3"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio]
version = "1"
features = [
"test-util",
"macros",
"rt-multi-thread",
]
[dev-dependencies.tower]
version = "0.5"
features = ["util"]
[dev-dependencies.tracing-test]
version = "0.2"
[dev-dependencies.url]
version = "2"
[profile.dev]
opt-level = 0
debug = 1
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1