Skip to main content

max / makenotwork

3.5 KB · 84 lines History Blame Raw
1 [package]
2 name = "kberg"
3 version = "0.1.0"
4 edition = "2024"
5 description = "MCP bridge for connecting local LLMs to desktop apps. Provider-agnostic agent loop over a Streamable HTTP MCP server."
6 license = "MIT"
7 # Internal shared crate, consumed by path inside this repo and never published.
8 # `publish = false` is what makes that a cargo-enforced fact rather than a
9 # convention: without it an accidental `cargo publish` is one command away.
10 publish = false
11 readme = "README.md"
12 keywords = ["mcp", "llm", "ollama", "tools", "agent"]
13 categories = ["api-bindings", "development-tools"]
14
15 [features]
16 default = ["server", "ollama"]
17 server = ["dep:axum", "dep:tokio", "dep:tokio-stream"]
18 ollama = ["dep:reqwest", "dep:rustls", "dep:tokio"]
19
20 [dependencies]
21 serde = { version = "1", features = ["derive"] }
22 serde_json = "1"
23 thiserror = "2"
24 tracing = "0.1"
25 async-trait = "0.1"
26 uuid = { version = "1", features = ["v4", "serde"] }
27
28 axum = { version = "0.8", optional = true }
29
30 # `rustls-no-provider`, not the default feature set: reqwest 0.13's
31 # `default-tls` resolves to `rustls`, which is a hard alias for
32 # `__rustls-aws-lc-rs` with no ring counterpart. Cargo unifies features
33 # across the graph, so this one line was putting a C crypto backend into
34 # every consumer of this crate — GoingsOn, Spaghetti, buckets_of_money and
35 # tm-mcp. The provider is named in `OllamaProvider::new` instead.
36 #
37 # TLS is kept rather than dropped: Ollama is loopback by default, but
38 # `with_base_url` is public and an https endpoint is a consumer's to choose.
39 reqwest = { version = "0.13", optional = true, default-features = false, features = ["json", "charset", "http2", "rustls-no-provider"] }
40 # Direct only so `OllamaProvider::new` can name a provider.
41 rustls = { version = "0.23", optional = true, default-features = false, features = ["ring"] }
42
43 tokio = { version = "1", optional = true, features = ["rt-multi-thread", "macros", "net", "sync", "time", "io-std", "io-util"] }
44 tokio-stream = { version = "0.1", optional = true, features = ["sync"] }
45
46 [dev-dependencies]
47 tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "sync", "time"] }
48 tracing-subscriber = { version = "0.3", features = ["env-filter"] }
49 reqwest = { version = "0.13", default-features = false, features = ["json", "charset", "http2", "rustls-no-provider"] }
50 # The test helper names a provider, same as `OllamaProvider::new` does.
51 rustls = { version = "0.23", default-features = false, features = ["ring"] }
52
53 [lints.rust]
54 unused = "warn"
55 unreachable_pub = "warn"
56
57 [lints.clippy]
58 pedantic = { level = "warn", priority = -1 }
59 # Allow-list tuned from a measured breakdown across server/multithreaded/pter
60 # (2026-07-22). These are the high-churn / low-signal pedantic lints; everything
61 # else in `pedantic` stays a warning. Keep this block identical across repos.
62 module_name_repetitions = "allow"
63 # Doc lints. No docs-completeness push is underway.
64 missing_errors_doc = "allow"
65 missing_panics_doc = "allow"
66 doc_markdown = "allow"
67 # Numeric casts. Endemic and mostly intentional in size and byte math.
68 cast_possible_truncation = "allow"
69 cast_sign_loss = "allow"
70 cast_precision_loss = "allow"
71 cast_possible_wrap = "allow"
72 cast_lossless = "allow"
73 # Subjective structure and style nags. High churn, low signal.
74 must_use_candidate = "allow"
75 too_many_lines = "allow"
76 struct_excessive_bools = "allow"
77 similar_names = "allow"
78 items_after_statements = "allow"
79 single_match_else = "allow"
80 # Frequent false-positives in TUI and router-heavy code.
81 match_same_arms = "allow"
82 unnecessary_wraps = "allow"
83 type_complexity = "allow"
84