Skip to content

pashaish/lm_client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LM Client

A native desktop client for interacting with Language Models (LLMs) built with Rust and Iced.

Features

  • πŸ’¬ 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

Screenshots

Messaging view

image

Api Settings

image

Presets Settings

image

Installation

Pre-built Binaries

Download pre-built binaries for your platform from the Releases page.

Building from Source

Prerequisites

  • Rust toolchain (stable, 2024 edition)
  • Cargo

Build Instructions

Clone the repository:

git clone https://github.com/pashaish/lm_client.git
cd lm_client

Build the project:

cargo build --release

Run the application:

cargo run --release

Platform-specific Build Scripts

There are several build scripts available in the scripts directory:

  • build-mac-arm.sh: Build for macOS ARM
  • build-windows.sh: Build for Windows
  • build-linux.sh: Build for Linux
  • build-bundle.sh: Create application bundle

Project Structure

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

Architecture

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.

Contributing

Contributions are welcome!

Roadmap

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

License

This project is licensed under the LICENSE file in the repository root.

Acknowledgements

  • Iced - GUI library for Rust
  • SQLite - Embedded database

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors