liter_llm 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6018429462859ec2ef1f3fbc99ae4791f46830e255b57c45556955b0976c5c57
4
- data.tar.gz: ce5f9971a7d0e52df86452fd6f2bb6b1219e0bc5c7b88790c368b1a7f91c88e3
3
+ metadata.gz: bd0fb204ec361182a87bff72c133eee44d081ecbf37ce936361c631433a28817
4
+ data.tar.gz: a42719e7acbdd1d097a392eeb3a55c21be528e27abcfdd5d4333e541c6e8521b
5
5
  SHA512:
6
- metadata.gz: 714ce2b67cbb3867c161fb153a0701a1135bcd6970eb48d204cd72a2c2ccc61b50bf838df8243ad58c1879bdc874b2c7644fb7488aaeb1a038e4cd793b4a0782
7
- data.tar.gz: 2a83fe3b6b266a9f2a8e198d90052bbcd02d46854b7b2b83a552e93ba57d3b386bc19093d7fe8acbeca8397bc067f7e7277058a63b5ef5b917e9a8794ab947cd
6
+ metadata.gz: d0e2aa5b9b03cf11c55535f95f9cfe78e87e496ac4b7f62a15a3408de508547cd3aa4503bee5f27ce4ce71ac7fa2ce1fdc2cb4bc8b828a5b073b5cdbdd769f96
7
+ data.tar.gz: 541a179bb37ecf1a3332f364d6f7fd5e7d2b8cba369e210b2e2807d64564135b58a8cb388e4ced465f57eda308782bf869f950149f07633d1c64103f307ce7ab
data/README.md CHANGED
@@ -220,6 +220,17 @@ See the [provider registry](https://github.com/kreuzberg-dev/liter-llm/blob/main
220
220
 
221
221
 
222
222
 
223
+ ## Proxy Server
224
+
225
+ liter-llm also ships as an OpenAI-compatible proxy server with Docker support:
226
+
227
+ ```bash
228
+ docker run -p 4000:4000 -e LITER_LLM_MASTER_KEY=sk-your-key ghcr.io/kreuzberg-dev/liter-llm
229
+ ```
230
+
231
+ See the [proxy server documentation](https://docs.liter-llm.kreuzberg.dev/server/proxy/) for configuration, CLI usage, and MCP integration.
232
+
233
+
223
234
  ## Documentation
224
235
 
225
236
  - **[Documentation](https://docs.liter-llm.kreuzberg.dev)** -- Full docs and API reference
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "liter-llm-rb"
3
- version = "1.0.0"
3
+ version = "1.1.0"
4
4
  edition = "2024"
5
5
  authors = ["Na'aman Hirschfeld <naaman@kreuzberg.dev>"]
6
6
  license = "MIT"
data/vendor/Cargo.toml CHANGED
@@ -2,7 +2,7 @@
2
2
  members = ["liter-llm", "liter-llm-ffi"]
3
3
 
4
4
  [workspace.package]
5
- version = "1.0.0"
5
+ version = "1.1.0"
6
6
  edition = "2024"
7
7
  authors = ["Na'aman Hirschfeld <naaman@kreuzberg.dev>"]
8
8
  license = "MIT"
@@ -11,9 +11,11 @@ homepage = "https://kreuzberg.dev"
11
11
 
12
12
  [workspace.dependencies]
13
13
  anyhow = "1"
14
+ axum = { version = "0.8", features = ["macros"] }
15
+ axum-extra = { version = "0.12", features = ["typed-header"] }
14
16
  base64 = "0.22"
15
17
  bytes = "1"
16
- clap = { version = "4", features = ["derive"] }
18
+ clap = { version = "4", features = ["derive", "env"] }
17
19
  dashmap = "6"
18
20
  futures-core = "0.3"
19
21
  futures-util = "0.3"
@@ -24,7 +26,7 @@ memchr = "2"
24
26
  napi = { version = "3", features = ["napi4", "serde-json", "async"] }
25
27
  napi-build = "2"
26
28
  napi-derive = "3"
27
- opendal = { version = "0.53", features = ["services-memory", "services-redis", "services-fs"], default-features = false }
29
+ opendal = { version = "0.55", features = ["services-memory", "services-redis", "services-fs", "services-s3"], default-features = false }
28
30
  opentelemetry = "0.31"
29
31
  pin-project-lite = "0.2"
30
32
  pyo3 = { version = "0.28", features = ["abi3-py310"] }
@@ -32,7 +34,9 @@ pyo3-async-runtimes = { version = "0.28", features = ["tokio-runtime"] }
32
34
  rayon = "1"
33
35
  rb-sys = "0.9"
34
36
  reqwest = { version = "0.13", features = ["json", "stream", "rustls", "multipart", "form"], default-features = false }
37
+ rmcp = { version = "1.3", features = ["server", "macros", "transport-io", "transport-streamable-http-server", "server-side-http"] }
35
38
  rustler = "0.37"
39
+ schemars = "1"
36
40
  secrecy = { version = "0.10", features = ["serde"] }
37
41
  serde = { version = "1", features = ["derive"] }
38
42
  serde_json = "1"
@@ -43,11 +47,13 @@ tokenizers = { version = "0.22", features = ["http", "fancy-regex"], default-fea
43
47
  tokio = { version = "1", features = ["full"] }
44
48
  toml = "1.1"
45
49
  tower = { version = "0.5", features = ["retry", "limit", "timeout", "buffer", "load-shed", "steer", "util"] }
46
- tower-http = { version = "0.6", features = ["follow-redirect", "set-header", "sensitive-headers", "trace", "request-id"] }
50
+ tower-http = { version = "0.6", features = ["follow-redirect", "set-header", "sensitive-headers", "trace", "request-id", "cors", "compression-gzip", "catch-panic", "limit"] }
47
51
  tower-layer = "0.3"
48
52
  tower-service = "0.3"
49
53
  tracing = "0.1"
50
54
  tracing-opentelemetry = "0.32"
55
+ tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
56
+ utoipa = { version = "5.4", features = ["axum_extras"] }
51
57
  walkdir = "2.5"
52
58
  wasm-bindgen = "0.2"
53
59
  wasm-bindgen-test = "0.3"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "liter-llm"
3
- version = "1.0.0"
3
+ version = "1.1.0"
4
4
  edition = "2024"
5
5
  license = "MIT"
6
6
  repository.workspace = true
@@ -71,7 +71,7 @@ futures-core = "0.3"
71
71
  futures-util = { version = "0.3", optional = true }
72
72
  jsonwebtoken = { version = "10", features = ["use_pem"], default-features = false, optional = true }
73
73
  memchr = { version = "2", optional = true }
74
- opendal = { version = "0.53", features = ["services-memory", "services-redis", "services-fs"], default-features = false, optional = true }
74
+ opendal = { version = "0.55", features = ["services-memory", "services-redis", "services-fs", "services-s3"], default-features = false, optional = true }
75
75
  opentelemetry = { version = "0.31", optional = true }
76
76
  pin-project-lite = "0.2"
77
77
  reqwest = { version = "0.13", features = ["json", "stream", "rustls", "multipart", "form"], default-features = false, optional = true }
@@ -83,7 +83,7 @@ tokenizers = { version = "0.22", features = ["http", "fancy-regex"], default-fea
83
83
  tokio = { version = "1", features = ["time", "rt", "macros"], optional = true }
84
84
  toml = "1.1"
85
85
  tower = { version = "0.5", features = ["retry", "limit", "timeout", "buffer", "load-shed", "steer", "util"], optional = true }
86
- tower-http = { version = "0.6", features = ["follow-redirect", "set-header", "sensitive-headers", "trace", "request-id"], optional = true }
86
+ tower-http = { version = "0.6", features = ["follow-redirect", "set-header", "sensitive-headers", "trace", "request-id", "cors", "compression-gzip", "catch-panic", "limit"], optional = true }
87
87
  tracing = { version = "0.1", optional = true }
88
88
  tracing-opentelemetry = { version = "0.32", optional = true }
89
89
 
@@ -233,6 +233,17 @@ See the [provider registry](https://github.com/kreuzberg-dev/liter-llm/blob/main
233
233
 
234
234
 
235
235
 
236
+ ## Proxy Server
237
+
238
+ liter-llm also ships as an OpenAI-compatible proxy server with Docker support:
239
+
240
+ ```bash
241
+ docker run -p 4000:4000 -e LITER_LLM_MASTER_KEY=sk-your-key ghcr.io/kreuzberg-dev/liter-llm
242
+ ```
243
+
244
+ See the [proxy server documentation](https://docs.liter-llm.kreuzberg.dev/server/proxy/) for configuration, CLI usage, and MCP integration.
245
+
246
+
236
247
  ## Documentation
237
248
 
238
249
  - **[Documentation](https://docs.liter-llm.kreuzberg.dev)** -- Full docs and API reference
@@ -257,7 +257,9 @@ mod tests {
257
257
  #[tokio::test]
258
258
  #[ignore] // Requires network access and valid Azure AD credentials.
259
259
  async fn live_azure_ad_token_exchange() {
260
- let provider = AzureAdCredentialProvider::from_env().expect("Azure AD env vars not set");
260
+ let Ok(provider) = AzureAdCredentialProvider::from_env() else {
261
+ return; // Skip when Azure AD credentials are not configured.
262
+ };
261
263
  let credential = provider.resolve().await.expect("token exchange failed");
262
264
  assert!(matches!(credential, Credential::BearerToken(_)));
263
265
  }
@@ -346,7 +346,9 @@ mod tests {
346
346
  #[tokio::test]
347
347
  #[ignore] // Requires network access and valid AWS OIDC credentials.
348
348
  async fn live_sts_web_identity_exchange() {
349
- let provider = WebIdentityCredentialProvider::from_env().expect("AWS env vars not set");
349
+ let Ok(provider) = WebIdentityCredentialProvider::from_env() else {
350
+ return; // Skip when AWS OIDC credentials are not configured.
351
+ };
350
352
  let credential = provider.resolve().await.expect("STS exchange failed");
351
353
  assert!(matches!(credential, Credential::AwsCredentials { .. }));
352
354
  }
@@ -346,7 +346,9 @@ mod tests {
346
346
  #[tokio::test]
347
347
  #[ignore] // Requires network access and a valid service account key file.
348
348
  async fn live_vertex_oauth_token_exchange() {
349
- let provider = VertexOAuthCredentialProvider::from_env().expect("GOOGLE_APPLICATION_CREDENTIALS not set");
349
+ let Ok(provider) = VertexOAuthCredentialProvider::from_env() else {
350
+ return; // Skip when Google credentials are not configured.
351
+ };
350
352
  let credential = provider.resolve().await.expect("token exchange failed");
351
353
  assert!(matches!(credential, Credential::BearerToken(_)));
352
354
  }
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "liter-llm-ffi"
3
- version = "1.0.0"
3
+ version = "1.1.0"
4
4
  edition = "2024"
5
5
  license = "MIT"
6
6
  repository.workspace = true
@@ -20,8 +20,8 @@ default = []
20
20
  base64.workspace = true
21
21
  bytes.workspace = true
22
22
  futures-core.workspace = true
23
- liter-llm = { path = "../liter-llm", version = "1.0.0", features = ["full"] }
24
- liter-llm-bindings-core = { path = "../liter-llm-bindings-core", version = "1.0.0" }
23
+ liter-llm = { path = "../liter-llm", version = "1.1.0", features = ["full"] }
24
+ liter-llm-bindings-core = { path = "../liter-llm-bindings-core", version = "1.1.0" }
25
25
  serde.workspace = true
26
26
  serde_json.workspace = true
27
27
  tokio.workspace = true
@@ -8,9 +8,9 @@
8
8
  /* Warning, this file is autogenerated by cbindgen. Don't modify this manually. */
9
9
 
10
10
  #define LITER_LLM_VERSION_MAJOR 1
11
- #define LITER_LLM_VERSION_MINOR 0
11
+ #define LITER_LLM_VERSION_MINOR 1
12
12
  #define LITER_LLM_VERSION_PATCH 0
13
- #define LITER_LLM_VERSION "1.0.0"
13
+ #define LITER_LLM_VERSION "1.1.0"
14
14
 
15
15
 
16
16
  #include <stdarg.h>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liter_llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Na'aman Hirschfeld
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-03-28 00:00:00.000000000 Z
11
+ date: 2026-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb_sys