ollama-oxide
A Rust library providing low-level primitives and high-level conveniences for integrating with Ollama's native API.
Features
- Low-level primitives for direct Ollama API interaction
- High-level conveniences (optional) for common use cases
- Async/await support with Tokio runtime
- Type-safe API bindings generated from OpenAPI specs
- Comprehensive error handling
- HTTP/2 support via reqwest
- Feature flags for modular dependencies
Architecture
Single-crate design with modular structure:
ollama-oxide/
└── src/
├── lib.rs # Main library entry point
├── primitives/ # Low-level API primitives (default)
├── http/ # HTTP client layer (default)
└── conveniences/ # High-level APIs (optional)
Feature Flags:
default=["http", "primitives"]- Core functionalityconveniences- Optional ergonomic high-level APIs
Installation
Add this to your Cargo.toml:
# Default features (primitives + http)
[]
= "0.1.0"
# With high-level conveniences
[]
= { = "0.1.0", = ["conveniences"] }
Quick Start
Requirements
- Rust 1.75+ (edition 2024)
- Ollama running locally or accessible via network
Development
Building
Running Tests
Running Examples
API Documentation
The library follows Ollama's OpenAPI specifications (see spec/primitives/).
12 Total Endpoints:
- 5 Simple endpoints (version, tags, ps, copy, delete)
- 2 Medium complexity (show, embed)
- 5 Complex with streaming (generate, chat, create, pull, push)
See spec/api-analysis.md for detailed endpoint documentation.
Contributing
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Based on Ollama's official libraries and API specifications.