Java
July 23, 2026 · View on GitHub
Java
Universal LLM API client for Java. Access 165 LLM providers through a single type-safe interface with Foreign Function & Memory API integration, async support, and native performance.
What This Package Provides
- One provider surface — chat, streaming, embeddings, images, audio, search, OCR, tools, and structured output across the provider registry.
- Provider/model routing — call models with the
provider/modelconvention and keep provider-specific request code out of application paths. - Production controls — retries, fallback, rate limits, cache layers, budgets, health checks, OpenTelemetry spans, and redacted secrets.
- Same core as every binding — Rust, Python, Node.js, Go, Java, PHP, Ruby, .NET, Elixir, WASM, Kotlin Android, Swift, Dart, Zig, and C FFI use the same Rust implementation.
- Java package — type-safe FFM binding for JVM services.
Installation
Package Installation
Install via one of the supported package managers:
Maven:
<dependency>
<groupId>io.xberg.literllm</groupId>
<artifactId>liter-llm</artifactId>
<version>1.11.0</version>
</dependency>
Gradle:
implementation 'io.xberg.literllm:liter-llm:1.11.0'
System Requirements
- Java 21+ required (Panama FFM API)
- API keys via environment variables (e.g.
OPENAI_API_KEY,ANTHROPIC_API_KEY)
Quick Start
Basic Chat
Send a message to any provider using the provider/model prefix:
import io.xberg.literllm.*;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
try (var client = LiterLlm.createClient(System.getenv("OPENAI_API_KEY"))) {
var request = ChatCompletionRequest.builder()
.withModel("openai/gpt-4o")
.withMessages(List.of(
new Message.User(new UserMessage(UserContent.of("Hello!"), null))
))
.build();
var response = client.chat(request);
System.out.println(response.choices().getFirst().message().content());
}
}
}
Common Use Cases
Streaming Responses
Stream tokens in real time:
import io.xberg.literllm.*;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
try (var client = LiterLlm.createClient(System.getenv("OPENAI_API_KEY"))) {
var request = ChatCompletionRequest.builder()
.withModel("openai/gpt-4o-mini")
.withMessages(List.of(
new Message.User(new UserMessage(UserContent.of("Hello"), null))
))
.build();
var stream = client.chatStream(request);
var iterator = stream.iterator();
while (iterator.hasNext()) {
var chunk = iterator.next();
var delta = chunk.choices().getFirst().delta().content();
if (delta != null) System.out.print(delta);
}
System.out.println();
}
}
}
Next Steps
- Provider Registry - Full list of supported providers
- GitHub Repository - Source, issues, and discussions
Features
Supported Providers (165)
Route to any provider using the provider/model prefix convention:
| Provider | Example Model |
|---|---|
| OpenAI | openai/gpt-4o, openai/gpt-4o-mini |
| Anthropic | anthropic/claude-3-5-sonnet-20241022 |
| Groq | groq/llama-3.1-70b-versatile |
| Mistral | mistral/mistral-large-latest |
| Cohere | cohere/command-r-plus |
| Together AI | together/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo |
| Fireworks | fireworks/accounts/fireworks/models/llama-v3p1-70b-instruct |
| Google Vertex | vertexai/gemini-1.5-pro |
| Amazon Bedrock | bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0 |
Key Capabilities
- Provider Routing -- Single client for 165 LLM providers via
provider/modelprefix - Local LLMs — Connect to locally-hosted models via Ollama, LM Studio, vLLM, llama.cpp, and other local inference servers
- Unified API -- Consistent
chat,chat_stream,embeddings,list_modelsinterface - Streaming -- Real-time token streaming via
chat_stream - Tool Calling -- Function calling and tool use across all supporting providers
- Type Safe -- Schema-driven types compiled from JSON schemas
- Secure -- API keys never logged or serialized, managed via environment variables
- Observability -- Built-in OpenTelemetry with GenAI semantic conventions
- Error Handling -- Structured errors with provider context and retry hints
Performance
Built on a compiled Rust core for speed and safety:
- Provider resolution at client construction -- zero per-request overhead
- Configurable timeouts and connection pooling
- Zero-copy streaming with SSE and AWS EventStream support
- API keys wrapped in secure memory, zeroed on drop
Provider Routing
Route to 165 providers using the provider/model prefix convention:
openai/gpt-4o
anthropic/claude-3-5-sonnet-20241022
groq/llama-3.1-70b-versatile
mistral/mistral-large-latest
See the provider registry for the full list.
Proxy, MCP Server & Plugin
Run the OpenAI-compatible proxy or the MCP server
Beyond the SDK, the liter-llm CLI ships an OpenAI-compatible proxy and a Model Context Protocol (MCP) server:
brew install xberg-io/tap/liter-llm # or: cargo install liter-llm-cli
liter-llm api --config liter-llm-proxy.toml # OpenAI-compatible proxy
liter-llm mcp --transport stdio # MCP tool server
# or run the proxy without installing:
docker run -p 4000:4000 -e LITER_LLM_MASTER_KEY=sk-your-key ghcr.io/xberg-io/liter-llm
To use the MCP server inside a coding agent, install the liter-llm plugin from the xberg-io/plugins marketplace — it auto-registers the server. See the MCP server and proxy server guides for configuration, CLI usage, and agent integration.
Documentation
- Documentation -- Full docs and API reference
- GitHub Repository -- Source, issues, and discussions
- Provider Registry -- 165 supported providers
Part of Xberg.io
- Xberg — document intelligence: text, tables, metadata from 91+ formats with optional OCR.
- Xberg Enterprise — managed extraction API with SDKs, dashboards, and observability.
- crawlberg — web crawling and scraping with HTML→Markdown and headless-Chrome fallback.
- html-to-markdown — fast, lossless HTML→Markdown engine.
- liter-llm — universal LLM API client with native bindings for 14 languages and 165 providers.
- tree-sitter-language-pack — tree-sitter grammars and code-intelligence primitives.
- alef — the polyglot binding generator that produces every per-language binding across the 5 polyglot repos.
- Discord — community, roadmap, announcements.
Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
Join our Discord community for questions and discussion.
License
MIT -- see LICENSE for details.