A native desktop client for interacting with Language Models (LLMs) built with Rust and Iced.
- π¬ Chat conversations with LLMs
- π Conversation organization with folders
- π RAG (Retrieval Augmented Generation) support
- ποΈ Multiple AI provider support by OpenAI-Api-Like (OpenAI, Ollama, Gemini, etc.)
- π¦ Preset management for different conversation settings
- π Vector database integration
- π₯οΈ Cross-platform (macOS, Windows, Linux)
- π Dark theme UI
Download pre-built binaries for your platform from the Releases page.
- Rust toolchain (stable, 2024 edition)
- Cargo
Clone the repository:
git clone https://github.com/pashaish/lm_client.git
cd lm_clientBuild the project:
cargo build --releaseRun the application:
cargo run --releaseThere are several build scripts available in the scripts directory:
build-mac-arm.sh: Build for macOS ARMbuild-windows.sh: Build for Windowsbuild-linux.sh: Build for Linuxbuild-bundle.sh: Create application bundle
lm_client/
βββ framework/ # Union functionality for src
βββ modules/
β βββ api/ # API clients for LLM providers
β βββ database/ # Database implementation
β βββ services/ # Business logic services
β βββ types/ # Shared data types and DTOs
β βββ utils/ # Utility functions
βββ src/ # Main application code
β βββ app/ # Main application state and view
β βββ theme/ # UI theme definitions
β βββ widgets/ # Custom UI widgets
βββ scripts/ # Build and utility scripts
The application follows an elm-like architecture using the Iced framework:
- State: Manages the application data
- Update: Handles events and updates state
- View: Renders UI components
- Subscription: Manages asynchronous events
The project uses a modular approach with workspaces to separate concerns.
Contributions are welcome!
See the todo.md file for planned features and improvements.
Short-term goals:
- Abort Chat Completion handling
- Notification system for errors and tips
- Custom error handling
Long-term goals:
- Custom markdown parser with text selection support
- PDF to text conversion for RAG
- Favorite models functionality
This project is licensed under the LICENSE file in the repository root.