A library that contains protocol/communication elements for llmvm.
Uses multilink for stdio/local process and HTTP/remote process communication.
Contains:
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.
Add the dependency to Cargo.toml
:
[dependencies]
llmvm-protocol = { version = "<version>", features = ["<http-server|http-client|stdio-server|stdio-client>"] }
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.|
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.|
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
|No|API key to append to requests. The key will be inserted into the X-API-Key
header.|
|timeout_secs
|No|Timeout for client requests in seconds.|
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 can be found on docs.rs.