[package]
edition = "2021"
name = "conproxy"
version = "0.2.1"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "conproxy"
description = "Cache proxy server for heterogeneous RAG/vector search backends with cascade, scope, and MCP"
homepage = "https://github.com/jmcgrath207/conproxy"
readme = "README.md"
keywords = [
"cache",
"proxy",
"rag",
"vector-search",
"mcp",
]
categories = [
"web-programming::http-server",
"caching",
]
license = "MIT"
repository = "https://github.com/jmcgrath207/conproxy"
[features]
default = []
dhat-heap = ["dhat"]
e2e = []
embed = [
"embed-api",
"ort",
"tokenizers",
"ndarray",
]
embed-api = []
integration-tests = ["dep:testcontainers"]
linux-sandbox = [
"caps",
"nix",
]
load-test = [
"dep:rlt",
"dep:rand",
"dep:rand_distr",
"dep:hdrhistogram",
]
mcp = [
"rmcp",
"schemars",
]
persistence = ["redb"]
pgvector = ["tokio-postgres"]
release = [
"mcp",
"persistence",
"embed-api",
"pgvector",
]
test = [
"release",
"load-test",
"dhat-heap",
]
tokio-console = [
"console-subscriber",
"tracing-subscriber/registry",
"tokio/tracing",
]
tokio-console-snap = [
"dep:console-api",
"dep:futures",
"dep:prost-types",
]
tokio-taskdump = ["tokio/taskdump"]
[lib]
name = "conproxy"
path = "src/lib.rs"
[[bin]]
name = "conproxy"
path = "src/bin/conproxy/main.rs"
[[bin]]
name = "console_snap"
path = "src/bin/console_snap.rs"
required-features = ["tokio-console-snap"]
[[bin]]
name = "corpus_gen"
path = "src/bin/corpus_gen.rs"
[[bin]]
name = "corpus_seed"
path = "src/bin/corpus_seed.rs"
required-features = [
"embed",
"pgvector",
]
[[bin]]
name = "generate_embeddings"
path = "src/bin/generate_embeddings.rs"
[[bin]]
name = "hitrate_bench"
path = "src/bin/hitrate_bench.rs"
[[bin]]
name = "perf_summarize"
path = "src/bin/perf_summarize.rs"
[[bin]]
name = "test_runner"
path = "src/bin/test_runner.rs"
[[test]]
name = "e2e_eval"
path = "tests/e2e_eval/main.rs"
required-features = ["e2e"]
[[test]]
name = "e2e_load"
path = "tests/e2e_load/main.rs"
harness = false
required-features = [
"load-test",
"e2e",
]
[[test]]
name = "e2e_proxy"
path = "tests/e2e_proxy/main.rs"
required-features = ["e2e"]
[[test]]
name = "e2e_sdk_python"
path = "tests/e2e_sdk_python.rs"
required-features = ["e2e"]
[[test]]
name = "e2e_uat"
path = "tests/e2e_uat/main.rs"
required-features = ["e2e"]
[[test]]
name = "integration_batch"
path = "tests/integration_batch.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_cascade"
path = "tests/integration_cascade.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_circuit"
path = "tests/integration_circuit.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_context_config"
path = "tests/integration_context_config.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_elasticsearch"
path = "tests/integration_elasticsearch.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_engine"
path = "tests/integration_engine.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_meilisearch"
path = "tests/integration_meilisearch.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_metrics"
path = "tests/integration_metrics.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_milvus"
path = "tests/integration_milvus.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_opensearch"
path = "tests/integration_opensearch.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_peer"
path = "tests/integration_peer.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_pgvector"
path = "tests/integration_pgvector.rs"
required-features = [
"integration-tests",
"pgvector",
]
[[test]]
name = "integration_pinecone"
path = "tests/integration_pinecone.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_qdrant"
path = "tests/integration_qdrant.rs"
required-features = ["integration-tests"]
[[test]]
name = "integration_singleflight"
path = "tests/integration_singleflight.rs"
required-features = ["integration-tests"]
[[test]]
name = "load_benches"
path = "tests/load_benches.rs"
[[test]]
name = "mcp_test"
path = "tests/mcp_test.rs"
[[test]]
name = "proxy_cli_test"
path = "tests/proxy_cli_test.rs"
[[test]]
name = "proxy_test"
path = "tests/proxy_test.rs"
[[test]]
name = "seed_test"
path = "tests/seed_test.rs"
[[bench]]
name = "cascade_scope"
path = "benches/cascade_scope.rs"
harness = false
[[bench]]
name = "core_ops"
path = "benches/core_ops.rs"
harness = false
[dependencies.anyhow]
version = "1"
default-features = false
[dependencies.arc-swap]
version = "1"
default-features = false
[dependencies.async-stream]
version = "0.3"
default-features = false
[dependencies.async-trait]
version = "0.1"
default-features = false
[dependencies.axum]
version = "0.8"
features = [
"json",
"tokio",
"http1",
"http2",
]
default-features = false
[dependencies.blake3]
version = "1"
features = ["std"]
default-features = false
[dependencies.bytes]
version = "1"
default-features = false
[dependencies.caps]
version = "0.5"
optional = true
default-features = false
[dependencies.clap]
version = "4"
features = [
"std",
"derive",
"help",
"usage",
"error-context",
]
default-features = false
[dependencies.console-api]
version = "0.9"
features = ["transport"]
optional = true
[dependencies.console-subscriber]
version = "0.5"
optional = true
[dependencies.dashmap]
version = "6"
default-features = false
[dependencies.dhat]
version = "0.3"
optional = true
[dependencies.dirs]
version = "6"
default-features = false
[dependencies.fake]
version = "3"
[dependencies.futures]
version = "0.3"
features = ["std"]
optional = true
default-features = false
[dependencies.glob-match]
version = "0.2"
default-features = false
[dependencies.hdrhistogram]
version = "7.6"
optional = true
[dependencies.libc]
version = "0.2"
default-features = false
[dependencies.ndarray]
version = "0.17"
optional = true
default-features = false
[dependencies.nix]
version = "0.31"
features = [
"user",
"process",
]
optional = true
default-features = false
[dependencies.ort]
version = "2.0.0-rc.12"
features = [
"std",
"download-binaries",
"tls-rustls",
]
optional = true
default-features = false
[dependencies.papaya]
version = "0.2"
[dependencies.parking_lot]
version = "0.12"
default-features = false
[dependencies.percent-encoding]
version = "2"
features = ["alloc"]
default-features = false
[dependencies.prost]
version = "0.14"
features = [
"derive",
"std",
]
default-features = false
[dependencies.prost-types]
version = "0.14"
features = ["std"]
optional = true
default-features = false
[dependencies.rand]
version = "0.10"
optional = true
[dependencies.rand_distr]
version = "0.6"
optional = true
[dependencies.redb]
version = "4"
optional = true
default-features = false
[dependencies.reqwest]
version = "0.13"
features = [
"json",
"rustls",
"blocking",
"stream",
]
default-features = false
[dependencies.rlt]
version = "0.5"
optional = true
default-features = false
[dependencies.rmcp]
version = "2.2"
features = [
"base64",
"macros",
"server",
"transport-io",
]
optional = true
default-features = false
[dependencies.rust-embed]
version = "8"
features = ["mime-guess"]
default-features = false
[dependencies.schemars]
version = "1"
features = ["derive"]
optional = true
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
default-features = false
[dependencies.serde_json]
version = "1"
features = ["std"]
default-features = false
[dependencies.serde_yaml]
version = "0.9"
[dependencies.socket2]
version = "0.6"
features = ["all"]
default-features = false
[dependencies.testcontainers]
version = "0.27"
optional = true
default-features = false
[dependencies.thiserror]
version = "2"
default-features = false
[dependencies.tokenizers]
version = "0.23"
features = ["fancy-regex"]
optional = true
default-features = false
[dependencies.tokio]
version = "1"
features = [
"macros",
"sync",
"time",
"rt-multi-thread",
"io-util",
"net",
"signal",
"fs",
]
[dependencies.tokio-postgres]
version = "0.7"
features = ["runtime"]
optional = true
default-features = false
[dependencies.tokio-stream]
version = "0.1"
default-features = false
[dependencies.tokio-util]
version = "0.7"
default-features = false
[dependencies.toml]
version = "1"
features = [
"parse",
"display",
"serde",
]
default-features = false
[dependencies.tonic]
version = "0.14"
features = [
"transport",
"router",
"codegen",
"gzip",
"zstd",
]
default-features = false
[dependencies.tonic-prost]
version = "0.14"
[dependencies.tracing]
version = "0.1"
features = [
"std",
"attributes",
]
default-features = false
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"fmt",
"env-filter",
]
default-features = false
[dependencies.walkdir]
version = "2"
default-features = false
[dev-dependencies.assert_cmd]
version = "2"
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
default-features = false
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.predicates]
version = "3"
[dev-dependencies.proptest]
version = "1"
[dev-dependencies.serial_test]
version = "3"
[dev-dependencies.sha2]
version = "0.11"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tower]
version = "0.5"
features = ["util"]
default-features = false
[dev-dependencies.ureq]
version = "3"
features = ["json"]
[build-dependencies.tonic-build]
version = "0.14"
features = ["transport"]
default-features = false
[build-dependencies.tonic-prost-build]
version = "0.14"
[lints.clippy]
arithmetic_side_effects = "warn"
complexity = "warn"
expect_used = "warn"
indexing_slicing = "warn"
panic = "warn"
perf = "warn"
style = "warn"
suspicious = "warn"
unwrap_used = "warn"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(tarpaulin_include)",
'cfg(feature, values("dhat-heap"))',
"cfg(tokio_unstable)",
]
[profile.dev]
debug = "line-tables-only"
split-debuginfo = "unpacked"
[profile.dev.package."*"]
opt-level = 1
[profile.dev.build-override]
opt-level = 1
[profile.profiling]
lto = false
debug = 2
inherits = "release"
strip = false
[profile.release]
lto = "fat"
codegen-units = 1
panic = "abort"
strip = "symbols"