ย ย ย ย ย
This is a open-source multi-platform AI Chat System written with Kotlin Compose Multiplatform and Python.
- ๐ฏ Universal Platform Support - Run on Web, Android, iOS, Windows, Linux, and macOS
- ๐ง On-Device AI - Privacy-first local AI processing with Python Multiplatform
- ๐จ Modern UI - Beautiful, responsive interface built with Compose Multiplatform
- ๐พ Offline Capability - Full functionality without internet connection
- ๐ Real-time Chat - WebSocket-based real-time messaging
- ๐ฑ Cross-Platform Sync - Seamless experience across all devices
| ๐ Web | ๐ฑ Android | ๐ iOS |
| ๐ช Windows | ๐ง Linux | ๐ macOS |
Note: Developed with Python Multiplatform
โก Note: Planning to support OpenAI-like API for AI model serving.
- Transformers/BitsAndBytes & PyTorch (INT4/INT8)
- Transformers/AutoGPTQ & PyTorch (SAFETENSORS)
- Llama-cpp-python & Numpy (GGUF)
- Kotlin Multiplatform Mobile
- Compose Multiplatform Mobile
๐ฎ Note: Scheduled to adapt Python Multiplatform for On-Device AI model serving.
- Qwen 3 14b 4bitQ (BitsAndBytes)
- To be done...
- Llama 3.1 8B (llama.cpp)
- Qwen 3 14b 4bitQ (llama.cpp)
- To be done...
chat_history = [
{
"role": "user",
"content": "์ค๋ ๋์ ๋ ์จ๊ฐ ์ด๋?"
},
{
"role": "assistant",
"content": "",
"tool_calls": [
{
"id": "call_20250614125444",
"function": {
"name": "get_weather",
"arguments": {
"location": "Daejeon, South Korea",
"unit": "celsius"
}
}
}
]
},
{
"role": "tool",
"tool_call_id": "call_20250614125444",
"content": "<cached_result:call_20250614125444>"
},
{
"role": "assistant",
"content": "์ค๋ ๋์ ์ ๋ ์จ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:\n\n- ๐ก๏ธ ์จ๋: 26.3ยฐC (์ฒด๊ฐ ์จ๋: 30.6ยฐC)\n- โ๏ธ ๋ ์จ: ์ฃผ๋ก ๋ง์\n- ๐ง ์ต๋: 81%\n- ๐จ ๋ฐ๋: 13.8 m/s (๋ถ๋)\n- ๐ ๊ธฐ์: 994 hPa\n\n์ด ์ ๋ณด๋ Open-Meteo์์ ์ ๊ณตํฉ๋๋ค."
}
]Gemstone AI follows Clean Architecture principles with clear separation of concerns:
๐ app/
โโโ ๐ฏ domain/ # Business logic and entities
โโโ ๐ adapter/ # Controllers and presenters
โโโ ๐ ๏ธ framework/ # UI, database, network, and AI infrastructure
๐ Detailed Project Structure (Click to expand)
app/
โโโ domain/
โ โโโ entity/
โ โ โโโ Message.kt
โ โ โโโ ChatSession.kt
โ โ โโโ User.kt
โ โ โโโ AIModel.kt
โ โ โโโ value/
โ โ โโโ MessageId.kt
โ โ โโโ SessionId.kt
โ โ โโโ Timestamp.kt
โ โโโ usecase/
โ โ โโโ chat/
โ โ โ โโโ SendMessageUseCase.kt
โ โ โ โโโ GetChatHistoryUseCase.kt
โ โ โ โโโ CreateSessionUseCase.kt
โ โ โ โโโ DeleteSessionUseCase.kt
โ โ โโโ ai/
โ โ โ โโโ SwitchAIModelUseCase.kt
โ โ โ โโโ DownloadModelUseCase.kt
โ โ โ โโโ GetAvailableModelsUseCase.kt
โ โ โโโ user/
โ โ โโโ SaveUserPreferencesUseCase.kt
โ โ โโโ GetUserPreferencesUseCase.kt
โ โโโ repository/
โ โ โโโ ChatRepository.kt
โ โ โโโ AIModelRepository.kt
โ โ โโโ UserRepository.kt
โ โโโ service/
โ โโโ AIService.kt
โ โโโ ValidationService.kt
โ โโโ NotificationService.kt
โโโ adapter/
โ โโโ controller/
โ โ โโโ chat/
โ โ โ โโโ ChatController.kt
โ โ โ โโโ SessionController.kt
โ โ โ โโโ dto/
โ โ โ โโโ SendMessageRequest.kt
โ โ โ โโโ CreateSessionRequest.kt
โ โ โโโ ai/
โ โ โ โโโ AIModelController.kt
โ โ โ โโโ dto/
โ โ โ โโโ SwitchModelRequest.kt
โ โ โโโ settings/
โ โ โโโ SettingsController.kt
โ โ โโโ dto/
โ โ โโโ UpdatePreferencesRequest.kt
โ โโโ presenter/
โ โ โโโ chat/
โ โ โ โโโ ChatPresenter.kt
โ โ โ โโโ SessionPresenter.kt
โ โ โ โโโ model/
โ โ โ โโโ ChatUiState.kt
โ โ โ โโโ MessageUiModel.kt
โ โ โ โโโ SessionUiModel.kt
โ โ โโโ ai/
โ โ โ โโโ AIModelPresenter.kt
โ โ โ โโโ model/
โ โ โ โโโ AIModelUiState.kt
โ โ โ โโโ ModelDownloadUiModel.kt
โ โ โโโ settings/
โ โ โโโ SettingsPresenter.kt
โ โ โโโ model/
โ โ โโโ SettingsUiState.kt
โโโ framework/
โโโ ui/
โ โโโ compose/
โ โ โโโ screen/
โ โ โ โโโ chat/
โ โ โ โ โโโ MainScreen.kt
โ โ โ โ โโโ SideScreen.kt
โ โ โ โ โโโ ChatScreen.kt
โ โ โ โ โโโ component/
โ โ โ โ โโโ MessageItem.kt
โ โ โ โ โโโ MessageInput.kt
โ โ โ โ โโโ SubjectCard.kt
โ โ โ โโโ model/
โ โ โ โ โโโ ModelSelectionScreen.kt
โ โ โ โ โโโ component/
โ โ โ โ โโโ ModelItem.kt
โ โ โ โ โโโ DownloadProgress.kt
โ โ โ โโโ settings/
โ โ โ โโโ SettingsScreen.kt
โ โ โ โโโ component/
โ โ โ โโโ PreferenceItem.kt
โ โ โโโ navigation/
โ โ โ โโโ AppNavigation.kt
โ โ โ โโโ NavigationRoute.kt
โ โ โโโ theme/
โ โ โโโ Color.kt
โ โ โโโ Dimen.kt
โ โ โโโ Shape.kt
โ โ โโโ Theme.kt
โ โ โโโ Type.kt
โ โโโ viewmodel/
โ โโโ ChatViewModel.kt
โ โโโ AIModelViewModel.kt
โ โโโ SettingsViewModel.kt
โโโ database/
โ โโโ ChatDatabase.kt
โโโ network/
โ โโโ http/
โ โ โโโ HttpClientFactory.kt
โ โ โโโ api/
โ โ โโโ ChatApiService.kt
โ โ โโโ AIModelApiService.kt
โ โโโ websocket/
โ โโโ ChatWebSocketClient.kt
โโโ ai/
โ โโโ local/
โ โ โโโ LocalModelManager.kt
โ โโโ remote/
โ โ โโโ OpenAIClient.kt
โ โ โโโ AnthropicClient.kt
โ โ โโโ HuggingFaceClient.kt
โ โโโ common/
โ โโโ ModelManager.kt
โโโ storage/
โโโ FileManager.kt
- Git
- Python 3.12+
- Java 21+ (for Kotlin Multiplatform)
- Xcode 14+ - For iOS development (macOS only)
git clone https://github.com/thisisthepy/Gemstone.git
cd Gemstoneuv syncFor GPU acceleration with NVIDIA cards
CMAKE_ARGS="-DGGML_CUDA=on -DLLAVA_BUILD=off -DCMAKE_CUDA_ARCHITECTURES=native" \
FORCE_CMAKE=1 uv pip install llama-cpp-python --no-cache-dir --force-reinstall --upgradepython -m api run server./gradlew :app:run./gradlew :app:installDebug./gradlew :app:wasmJsBrowserDevelopmentRun./gradlew :app:iosSimulatorArm64TestWe welcome contributions! Please see our Contributing Guide for details.
- Use the issue tracker
- Provide detailed reproduction steps
- Include platform and version information
- Check existing feature requests
- Propose new ideas with clear use cases
- Consider implementation complexity
This project is licensed under the MIT License - see the LICENSE file for details.
- JetBrains for Kotlin Multiplatform and Compose
- Hugging Face for the Transformers library
- Llama.cpp for efficient local model serving
- Llama-cpp-python for Python bindings
- Meta for Llama models
- Alibaba for Qwen models
- Google for Gemma models
๐ Ready to chat with AI across all your devices!
๐ Report Bug | ๐ฌ Discuss on Discord | โญ Star on GitHub