A professional desktop application designed for interacting with artificial intelligence models via the OnlySq API. Built using Kotlin and Compose Multiplatform, this client provides a robust environment for managing AI-driven conversations with a focus on performance and clean user interface design.
The application leverages Compose Multiplatform to provide a native desktop experience. It utilizes an asynchronous architecture powered by Kotlin Coroutines and Ktor to handle high-frequency data streaming and API communication without compromising UI responsiveness.
- Dynamic Model Selection: Integration with the OnlySq model registry, allowing users to search and switch between various Large Language Models (LLMs) such as GPT and Qwen variants.
- Asynchronous Streaming: Support for Server-Sent Events (SSE) to render AI responses in real-time, reducing perceived latency.
- Automated Context Management: Features an automated titration system that generates concise chat titles based on the initial conversation context.
- Persistent Storage: Local encryption and storage of chat history and API configurations to ensure data continuity across sessions.
- Markdown Integration: Advanced rendering of structured text, including code blocks and mathematical notation within the chat interface.
- Framework: Compose Multiplatform (Material 3)
- Networking: Ktor Client (ContentNegotiation, Logging, and Streaming)
- Data Handling: Kotlinx Serialization (JSON)
- Concurrency: Kotlin Coroutines and Flow
- Styling: Adaptive Light/Dark color schemes based on system telemetry
- Java Development Kit (JDK) 17 or higher
- Valid OnlySq API Credentials
To compile and execute the application from source, utilize the Gradle wrapper:
./gradlew run
To package the application for distribution (MSI, DMG, or DEB):
./gradlew packageDistributionForCurrentOS
Upon initial launch, navigation to the Options section is required to input the API key.
- Access Options via the sidebar.
- Provide the OnlySq API Key.
- Configure the Streaming toggle based on preference for real-time data transmission versus batch processing.
- Responsive Layout: The interface dynamically adjusts between a multi-pane desktop view and a collapsed mobile-style menu for narrower window dimensions.
- Input Handling: Support for multi-line text entry with standard keyboard shortcuts (
Shift + Enterfor line breaks,Enterfor submission). - Clipboard Integration: One-click copying of AI-generated content to the system clipboard.
