[package] name = "goose" version.workspace = true edition.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true repository.workspace = true description.workspace = true [features] default = [] telemetry = [] otel = [ "dep:tracing-opentelemetry", "dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-appender-tracing", "dep:opentelemetry-otlp", "dep:opentelemetry-stdout", ] code-mode = ["dep:pctx_code_mode"] local-inference = [ "dep:candle-core", "dep:candle-nn", "dep:candle-transformers", "dep:llama-cpp-2", "dep:llama-cpp-sys-2", "dep:tokenizers", "dep:symphonia", "dep:rubato", "dep:byteorder", ] aws-providers = [ "dep:aws-config", "dep:aws-smithy-types", "dep:aws-sdk-bedrockruntime", "dep:aws-sdk-sagemakerruntime", "dep:smithy-transport-reqwest", ] cuda = ["local-inference", "candle-core/cuda", "candle-nn/cuda", "llama-cpp-2/cuda"] vulkan = ["local-inference", "llama-cpp-2/vulkan"] rustls-tls = [ "dep:rustls", "reqwest/rustls", "rmcp/reqwest", "smithy-transport-reqwest?/rustls", "sqlx/runtime-tokio-rustls", "jsonwebtoken/aws_lc_rs", "oauth2/reqwest", "oauth2/rustls-tls", ] native-tls = [ "dep:pem", "dep:pkcs1", "dep:pkcs8", "dep:sec1", "reqwest/native-tls", "rmcp/reqwest-native-tls", "smithy-transport-reqwest?/native-tls", "sqlx/runtime-tokio-native-tls", "jsonwebtoken/rust_crypto", "oauth2/reqwest", "oauth2/native-tls", ] system-keyring = ["dep:keyring"] portable-default = ["rustls-tls", "aws-providers", "telemetry", "otel"] nostr = ["dep:nostr", "dep:nostr-sdk"] [lints] workspace = true [dependencies] lru = { workspace = true } rmcp = { workspace = true, features = [ "client", "transport-child-process", "transport-streamable-http-client", "transport-streamable-http-client-reqwest", "transport-streamable-http-client-unix-socket", ] } oauth2 = { version = "5.0", default-features = false } arboard = { workspace = true } anyhow = { workspace = true } thiserror = { workspace = true } futures = { workspace = true } dirs = { workspace = true } reqwest = { workspace = true, features = ["json", "cookies", "gzip", "brotli", "deflate", "zstd", "charset", "http2", "stream", "blocking", "multipart", "system-proxy"] } tokio = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } serde_urlencoded = { version = "0.7.1", default-features = false } jsonschema = { version = "0.30", default-features = false } uuid = { workspace = true, features = ["v7"] } regex = { workspace = true } async-trait = { workspace = true } async-stream = { workspace = true } minijinja = { version = "2.18", default-features = false, features = ["loader", "multi_template", "serde"] } include_dir = { workspace = true } tiktoken-rs = { version = "0.11", default-features = false } chrono = { workspace = true } clap = { workspace = true } indoc = { workspace = true } nanoid = { version = "0.5", default-features = false } sha2 = { workspace = true } base64 = { workspace = true } url = { workspace = true } axum = { workspace = true, features = ["ws"] } webbrowser = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["ansi", "env-filter", "fmt", "json", "time"] } tracing-futures = { workspace = true } tracing-opentelemetry = { workspace = true, optional = true } opentelemetry = { workspace = true, optional = true } opentelemetry_sdk = { workspace = true, optional = true } opentelemetry-appender-tracing = { workspace = true, optional = true } opentelemetry-otlp = { workspace = true, optional = true } opentelemetry-stdout = { workspace = true, optional = true } keyring = { workspace = true, optional = true } serde_yaml = { workspace = true } strum = { workspace = true } once_cell = { workspace = true } etcetera = { workspace = true } fs-err = { version = "3.1", default-features = false } goose-providers = { path = "../goose-providers", default-features = false } goose-sdk-types = { path = "../goose-sdk-types" } rand = { workspace = true } utoipa = { workspace = true, features = ["chrono"] } tokio-cron-scheduler = { version = "0.15", default-features = false } urlencoding = { workspace = true } v_htmlescape = { version = "0.17", default-features = false, features = ["std"] } sqlx = { version = "0.8.5", default-features = false, features = [ "sqlite", "chrono", "json", "macros", "migrate", ] } # For Bedrock provider (optional, behind "aws-providers" feature) aws-config = { version = "1.8", default-features = false, features = ["credentials-process", "rt-tokio", "sso", "behavior-version-latest"], optional = true } aws-smithy-types = { version = "1.3.4", default-features = false, features = ["rt-tokio"], optional = true } aws-sdk-bedrockruntime = { version = "1.132", default-features = false, features = ["rt-tokio"], optional = true } smithy-transport-reqwest = { version = "0.1", default-features = false, features = ["http2", "system-proxy"], optional = true } # For SageMaker TGI provider (optional, behind "aws-providers" feature) aws-sdk-sagemakerruntime = { version = "1.104", default-features = false, features = ["rt-tokio"], optional = true } # For GCP Vertex AI provider auth jsonwebtoken = { version = "10.2", default-features = false, features = ["use_pem"] } blake3 = { version = "1", default-features = false, features = ["std"] } fs2 = { workspace = true } tokio-stream = { workspace = true, features = ["io-util"] } tempfile = { workspace = true } tokio-util = { workspace = true, features = ["compat"] } agent-client-protocol-schema = { workspace = true } agent-client-protocol = { workspace = true, features = ["unstable"] } unicode-normalization = { version = "0.1.22", default-features = false, features = ["std"] } # For local Whisper transcription (optional, behind "local-inference" feature) candle-core = { workspace = true, optional = true } candle-nn = { workspace = true, optional = true } candle-transformers = { version = "0.10", default-features = false, optional = true } byteorder = { version = "1.5", default-features = false, features = ["std"], optional = true } tokenizers = { version = "0.22", default-features = false, features = ["onig"], optional = true } symphonia = { version = "0.5", default-features = false, features = ["aac", "adpcm", "alac", "isomp4", "mkv", "mp3", "pcm", "vorbis", "wav"], optional = true } rubato = { version = "0.16", default-features = false, optional = true } zip = { workspace = true } sys-info = { version = "0.9", default-features = false } llama-cpp-2 = { workspace = true, optional = true } schemars = { workspace = true, features = [ "derive", ] } shellexpand = { workspace = true } indexmap = { version = "2.9", default-features = false, features = ["std"] } ignore = { workspace = true } rayon = { workspace = true } tree-sitter = { workspace = true } tree-sitter-go = { workspace = true } tree-sitter-java = { workspace = true } tree-sitter-javascript = { workspace = true } tree-sitter-kotlin-ng = { workspace = true } tree-sitter-python = { workspace = true } tree-sitter-ruby = { workspace = true } tree-sitter-rust = { workspace = true } tree-sitter-swift = { workspace = true } tree-sitter-typescript = { workspace = true } which = { workspace = true } pulldown-cmark = { version = "0.13", default-features = false } encoding_rs = { version = "0.8.35", default-features = false } pastey = { version = "0.2", default-features = false } shell-words = { workspace = true } pem = { version = "3.0.2", default-features = false, features = ["std"], optional = true } pkcs1 = { version = "0.7.5", default-features = false, features = ["pkcs8", "std"], optional = true } pkcs8 = { version = "0.11.0", default-features = false, features = ["alloc", "std"], optional = true } sec1 = { version = "0.7", default-features = false, features = ["der", "pkcs8", "std"], optional = true } goose-acp-macros = { path = "../goose-acp-macros", default-features = false } tower-http = { workspace = true, features = ["cors"] } http-body-util = { version = "0.1.2", default-features = false } tracing-appender = { workspace = true } process-wrap = { version = "9", default-features = false, features = ["std"] } nostr = { version = "0.44", default-features = false, features = ["nip44", "std"], optional = true } nostr-sdk = { version = "0.44", default-features = false, features = ["nip44"], optional = true } rustls = { workspace = true, optional = true } pctx_code_mode = { version = "0.3", default-features = false, optional = true } # These are needed because temporal_rs 0.1 (a transitive dep via PCTX) enables unstable features on icu_calendar without pinning the dependency version # A fix is available in temporal_rs 0.2 but PCTX has not updated # They are just here to pin the version, and can be removed if PCTX updates temporal_rs icu_calendar = { version = "=2.1.1", default-features = false } icu_locale = { version = "=2.1.1", default-features = false } llama-cpp-sys-2 = { workspace = true, optional = true } image = { version = "0.24.9", default-features = false, features = ["png", "jpeg", "gif", "webp"] } [target.'cfg(target_os = "windows")'.dependencies] winapi = { workspace = true } keyring = { workspace = true, features = ["windows-native"], optional = true } # Platform-specific GPU acceleration for Whisper and local inference [target.'cfg(target_os = "macos")'.dependencies] candle-core = { workspace = true, features = ["metal"], optional = true } candle-nn = { workspace = true, features = ["metal"], optional = true } llama-cpp-2 = { workspace = true, features = ["sampler", "metal", "mtmd"], optional = true } keyring = { workspace = true, features = ["apple-native"], optional = true } [target.'cfg(target_os = "linux")'.dependencies] keyring = { workspace = true, features = ["sync-secret-service"], optional = true } libc = { version = "0.2.182", default-features = false, features = ["std"] } [dev-dependencies] serial_test = { workspace = true } mockall = { version = "0.14", default-features = false } wiremock = { workspace = true } tokio = { workspace = true } tokio-util = { workspace = true, features = ["compat"] } dotenvy = { workspace = true } ctor = { version = "0.2", default-features = false } test-case = { workspace = true } env-lock = { workspace = true } rmcp = { workspace = true, features = ["transport-streamable-http-server"] } opentelemetry_sdk = { workspace = true, features = ["testing"] } goose-test-support = { path = "../goose-test-support", default-features = false } bytes = { workspace = true } http = { workspace = true } goose-mcp = { path = "../goose-mcp", default-features = false } insta = { version = "1", default-features = false } dtor = { version = "1.0.5", default-features = false, features = ["proc_macro"] } [[example]] name = "agent" path = "examples/agent.rs" [[example]] name = "databricks_oauth" path = "examples/databricks_oauth.rs" [[example]] name = "test_whisper" path = "examples/test_whisper.rs" required-features = ["local-inference"] [[bin]] name = "analyze_cli" path = "src/bin/analyze_cli.rs" [[bin]] name = "build_canonical_models" path = "src/bin/build_canonical_models.rs" [[bin]] name = "generate-acp-schema" path = "src/bin/generate_acp_schema.rs" [package.metadata.cargo-machete] ignored = [ # Used only on windows "winapi", # Included only to pin version "icu_calendar", "icu_locale", ]