sparrow-cli 0.5.1

A local-first Rust agent cockpit — route, run, replay, rewind
Documentation
[package]
name = "sparrow-cli"
version = "0.5.1"
edition = "2024"
description = "A local-first Rust agent cockpit — route, run, replay, rewind"
license = "MIT"
authors = ["ucav <abdou@users.noreply.github.com>"]
repository = "https://github.com/ucav/Sparrow"
keywords = ["agent", "ai", "cli", "llm", "coding-assistant"]
categories = ["command-line-utilities", "development-tools"]

[[bin]]
name = "sparrow"
path = "src/main.rs"

[lib]
name = "sparrow"
path = "src/lib.rs"

[dependencies]
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.7", features = ["rt"] }
ratatui = "0.29"
crossterm = "0.28"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.8"
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "stream", "json", "blocking", "multipart"] }
rusqlite = { version = "0.32", features = ["bundled"] }
git2 = "0.19"
similar = "2"
thiserror = "2"
anyhow = "1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
async-trait = "0.1"
secrecy = { version = "0.10", features = ["serde"] }
chrono = { version = "0.4", features = ["serde"] }
clap = { version = "4", features = ["derive"] }
uuid = { version = "1", features = ["v4", "serde"] }
futures = "0.3"
pin-project-lite = "0.2"
parking_lot = "0.12"
dirs = "6"
regex = "1"
rand = "0.8"
url = "2"
tokio-tungstenite = "0.24"
futures-util = "0.3"
mime_guess = "2"
base64 = "0.22"
chacha20poly1305 = "0.10"
cron = "0.12"
ctrlc = "3"
tree-sitter = { version = "0.23", optional = true }
tree-sitter-rust = { version = "0.23", optional = true }
tree-sitter-python = { version = "0.23", optional = true }
tree-sitter-javascript = { version = "0.23", optional = true }
axum = { version = "0.7", features = ["ws", "multipart"] }
tower = "0.5"
rpassword = "7"
dialoguer = "0.11"
walkdir = "2"
lettre = { version = "0.11", default-features = false, features = ["tokio1-rustls-tls", "smtp-transport", "builder"], optional = true }
imap = { version = "2", optional = true }
native-tls = { version = "0.2", optional = true }

# OS keychain
keyring = { version = "3", optional = true }
syntect = "5.3.0"
pulldown-cmark = "0.13.4"
indicatif = "0.18.4"
console = "0.16.3"

[target.'cfg(target_os = "linux")'.dependencies]
nix = { version = "0.31", features = ["sched"] }

[dev-dependencies]
criterion = "0.5"
proptest = "1"
tempfile = "3"

[features]
default = ["keyring"]
keyring-dep = ["keyring"]
browser = []
treesitter = ["tree-sitter", "tree-sitter-rust", "tree-sitter-python", "tree-sitter-javascript"]
email = ["lettre", "imap", "native-tls"]

[profile.release]
opt-level = "z"
lto = true
strip = true
codegen-units = 1

[[bench]]
name = "micro_bench"
harness = false