-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCargo.toml
More file actions
148 lines (128 loc) · 4.83 KB
/
Cargo.toml
File metadata and controls
148 lines (128 loc) · 4.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
[workspace]
resolver = "2"
members = [
"crates/chat-ui",
"crates/chat-ui/examples/trunk-demo",
"crates/core",
"crates/daemon",
"crates/fixtures",
"crates/frontend-common",
"crates/frontend-daemon",
"crates/frontend-relay",
"crates/frontend-tauri",
"crates/gui",
"crates/http",
"crates/p2p",
"crates/tlsforward",
"crates/sqlx",
]
default-members = ["crates/daemon"]
[workspace.package]
version = "0.1.0"
edition = "2024"
authors = ["Hellas AI <team@hellas.ai>"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/hellas-ai/gate"
keywords = ["ai", "gateway", "inference", "llm", "api"]
categories = ["network-programming", "web-programming"]
[workspace.dependencies]
openssl = { version = "0.10", features = ["vendored"] }
anyhow = "1.0"
arc-swap = "1.7"
async-trait = "0.1"
# Web framework
axum = { version = "0.8", default-features = false, features = ["json", "macros", "matched-path", "query", "tokio", "http1", "http2"] }
base64 = "0.22"
bytes = "1.11"
chrono = { version = "0.4", features = ["serde"] }
# CLI parsing
clap = { version = "4", features = ["derive"] }
# Configuration
config = { version = "0.15", features = ["yaml", "toml"] }
directories = "6"
futures = "0.3"
# Internal crates
gate-core = { path = "crates/core" }
gate-frontend-common = { path = "crates/frontend-common" }
gate-frontend-daemon = { path = "crates/frontend-daemon" }
gate-frontend-relay = { path = "crates/frontend-relay" }
gate-frontend-tauri = { path = "crates/frontend-tauri" }
gate-http = { path = "crates/http" }
gate-p2p = { path = "crates/p2p" }
gate-tlsforward = { path = "crates/tlsforward" }
gate-sqlx = { path = "crates/sqlx" }
hex = "0.4"
http = "1.4"
hyper = "1.9"
hyper-util = { version = "*", default-features = false }
iroh = { version = "0.95", default-features = false, features = ["discovery-local-network"] }
# Testing
mockall = "0.14"
# Platform-specific (file watching)
notify = "6.1"
# Random
getrandom = { version = "0.4", default-features=false, features = ["wasm_js"] }
rand = { version = "0.9", features = ["std", "std_rng"] }
rust_decimal = { version = "1.42", features = ["serde"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_with = "3.17"
sha2 = "0.10"
# Error handling
thiserror = "2.0"
# Core async runtime
tokio = { version = "1", default-features = false, features = ["sync", "time", "macros"] }
tokio-util = "0.7"
toml = "0.9"
tower = { version = "0.5", features = ["util"] }
tower-http = { version = "0.6", features = ["trace", "cors", "timeout"] }
tower-service = "0.3"
# Logging and tracing
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
url = { version = "2.5", features = ["serde"] }
# Frontend
yew = { git = "https://github.com/yewstack/yew", default-features = false }
yew-router = { git = "https://github.com/yewstack/yew", default-features = false }
wasm-bindgen = { version = "0.2", default-features = false }
wasm-bindgen-futures = { version = "0.4", default-features = false }
web-sys = { version = "0.3", default-features = false }
js-sys = { version = "0.3", default-features = false }
gloo = { version = "0.11", default-features = false }
gloo-timers = { version = "0.3", default-features = false }
gloo-utils = { version = "0.2", default-features = false }
gloo-events = { version = "0.2", default-features = false }
gloo-net = { version = "0.6", default-features = false }
wasm-logger = { version = "0.2", default-features = false }
tracing-web = { version = "0.1", default-features = false }
serde-wasm-bindgen = { version = "0.6", default-features = false }
# Utilities
uuid = { version = "1.23", features = ["v4", "serde", "js"] }
webauthn-rs = { version = "0.5" }
wiremock = "0.6"
wasm-bindgen-test = { version = "0.3", default-features = false }
console_error_panic_hook = { version = "0.1", default-features = false }
[workspace.lints.rust]
unsafe_code = "warn"
unused_imports = "warn"
unused_variables = "warn"
dead_code = "warn"
[workspace.lints.clippy]
all = "warn"
pedantic = "warn"
nursery = "warn"
[profile.release]
lto = "fat" # Enable full link-time optimization for maximum performance
codegen-units = 1 # Use single codegen unit for better optimization (slower compile)
strip = true # Strip debug symbols for smaller binaries
panic = "abort" # Use abort instead of unwind for smaller binaries
opt-level = 3 # Maximum optimization level
overflow-checks = false # Disable overflow checks in release for performance
debug = false # Ensure no debug info (strip should handle this too)
# Optional: Create a profile for maximum size optimization (useful for WASM)
[profile.release-min-size]
inherits = "release"
opt-level = "z" # Optimize for size instead of speed
lto = "fat" # Still use LTO for size reduction
strip = true # Strip all symbols