llmvm-protocol

Crates.iollmvm-protocol
lib.rsllmvm-protocol
version2.0.1
sourcesrc
created_at2023-08-09 17:36:02.652068
updated_at2024-09-19 01:18:13.914983
descriptionA library that contains protocol/communication elements for llmvm.
homepage
repositoryhttps://github.com/djandries/llmvm
max_upload_size
id940216
size38,642
Darnell Andries (DJAndries)

documentation

README

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

Commit count: 78

cargo fmt