#http #ipc #stdio #json-rpc #http-client #llm #http-server

llmvm-protocol

A library that contains protocol/communication elements for llmvm

2 stable releases

2.0.0 Jan 23, 2024
1.0.0 Aug 9, 2023

#1907 in Network programming

Download history 10/week @ 2023-12-18 7/week @ 2023-12-25 6/week @ 2024-01-01 5/week @ 2024-01-08 3/week @ 2024-01-15 20/week @ 2024-01-22 9/week @ 2024-02-12 28/week @ 2024-02-19 52/week @ 2024-02-26 10/week @ 2024-03-04 21/week @ 2024-03-11 14/week @ 2024-03-18 25/week @ 2024-03-25 77/week @ 2024-04-01

140 downloads per month
Used in 7 crates

MPL-2.0 license

47KB
861 lines

llmvm-protocol

Crates.io docs.rs GitHub

A library that contains protocol/communication elements for llmvm.

Uses multilink for stdio/local process and HTTP/remote process communication.

Contains:

  • Request/response types for core and backend communication
  • Traits for core and backend implementations
  • multilink / tower services
  • JSON-RPC and HTTP request/response conversion trait implementations for multilink.

All llmvm backends should implement the Backend trait, and use the llmvm-backend-util crate to start a stdio or HTTP server.

Rust frontends should use util::build_core_service_from_config in this crate to create a stdio or HTTP client, to communicate with the core.

Usage

Add the dependency to Cargo.toml:

[dependencies]
llmvm-protocol = { version = "<version>", features = ["<http-server|http-client|stdio-server|stdio-client>"] }

Configuration

stdio client configuration

Core and frontends will typically expose optional stdio client configuration. Here are the keys for the configuration structure:

Key Required? Description
bin_path No Optional binary path for spawning child processes. Defaults to PATH.
timeout_secs No Timeout for client requests in seconds.

stdio server configuration

Core and backends will typically expose optional stdio server configuration. Here are the keys for the configuration structure:

Key Required? Description
service_timeout_secs No Timeout for service requests in seconds.

HTTP client configuration

Core and frontends will typically expose optional HTTP client configuration. Here are the keys for the configuration structure:

Key Required? Description
base_url Yes Base URL/prefix for all outgoing requests.
api_key If llmvm server has API key set HTTP server API key to append to llmvm requests. The key will be inserted into the X-API-Key header.
timeout_secs No Timeout for client requests in seconds.

HTTP server configuration

Core and backends will typically expose optional HTTP server configuration. Here are the keys for the configuration structure:

Key Required? Description
port No Port to listen on. Defaults to 8080.
api_keys[] No An optional set of permitted API keys for restricting access to the server. If omitted, an API key is not needed to make a request.
service_timeout_secs No Timeout for service requests in seconds.

Reference documentation

Reference documentation can be found on docs.rs.

License

Mozilla Public License, version 2.0

Dependencies

~6–18MB
~262K SLoC