[package]
edition = "2021"
rust-version = "1.75"
name = "recursive-agent"
version = "0.6.0"
authors = ["Jeff Kit"]
build = false
exclude = [
".dev/",
"journal/",
"goals/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "recursive"
description = "A minimal, orthogonal, self-improving coding agent kernel in Rust"
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"
[features]
anthropic = []
aws-config = ["dep:aws-config"]
aws-sdk-s3 = ["dep:aws-sdk-s3"]
bollard = ["dep:bollard"]
cli = [
"dep:clap",
"dep:tracing-subscriber",
"dep:anyhow",
]
cloud-runtime = [
"dep:redis",
"dep:deadpool-redis",
"dep:aws-sdk-s3",
"dep:aws-config",
"dep:bollard",
]
default = [
"cli",
"mcp",
"web_fetch",
"anthropic",
"http",
"tui",
]
e2b-sandbox = []
http = [
"dep:axum",
"dep:tower-http",
"dep:tokio-stream",
"dep:futures-util",
"dep:jsonwebtoken",
"dep:agui-protocol",
]
mcp = ["dep:futures-util"]
openai-embedding = []
test-utils = ["dep:tempfile"]
tui = [
"dep:ratatui",
"dep:crossterm",
"dep:unicode-width",
"dep:syntect",
"dep:pulldown-cmark",
]
vector-memory = [
"openai-embedding",
"dep:rusqlite",
]
web_fetch = []
weixin = [
"dep:wechatbot",
"dep:qrcode",
]
[lib]
name = "recursive"
path = "src/lib.rs"
[[bin]]
name = "mock_mcp_server"
path = "tests/bin/mock_mcp_server.rs"
test = false
bench = false
doc = false
[[bin]]
name = "recursive"
path = "src/main.rs"
required-features = ["cli"]
[[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 = "checkpoint_e2e"
path = "tests/checkpoint_e2e.rs"
[[test]]
name = "compact_boundary"
path = "tests/compact_boundary.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 = "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 = "smoke"
path = "tests/smoke.rs"
[[test]]
name = "tui_backend_smoke"
path = "tests/tui_backend_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.agui-protocol]
version = "0.1"
optional = true
[dependencies.anyhow]
version = "1"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.aws-config]
version = "1"
features = ["behavior-version-latest"]
optional = true
[dependencies.aws-sdk-s3]
version = "1"
optional = true
[dependencies.axum]
version = "0.8"
optional = true
[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.crossterm]
version = "0.28"
optional = true
[dependencies.deadpool-redis]
version = "0.18"
optional = true
[dependencies.dirs]
version = "5"
[dependencies.futures-util]
version = "0.3.32"
optional = true
[dependencies.jsonwebtoken]
version = "9"
optional = true
[dependencies.pulldown-cmark]
version = "0.12"
optional = true
default-features = false
[dependencies.qrcode]
version = "0.14"
optional = true
[dependencies.ratatui]
version = "0.29"
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.syntect]
version = "5"
features = ["default-fancy"]
optional = true
default-features = false
[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.unicode-width]
version = "0.2"
optional = true
[dependencies.uuid]
version = "1"
features = [
"v4",
"v7",
]
[dependencies.walkdir]
version = "2"
[dependencies.wechatbot]
version = "0.3.2"
optional = true
[dev-dependencies.agui-protocol]
version = "0.1"
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.jsonwebtoken]
version = "9"
[dev-dependencies.mockito]
version = "1.7.2"
[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