https://github.com/edgeraghty/feverdream
An LLM-only Matrix Chat client #yolo
https://github.com/edgeraghty/feverdream
kotlin kotlin-multiplatform matrix matrix-client yolo
Last synced: 6 months ago
JSON representation
An LLM-only Matrix Chat client #yolo
- Host: GitHub
- URL: https://github.com/edgeraghty/feverdream
- Owner: EdGeraghty
- Created: 2025-09-10T11:38:16.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-09-15T20:05:06.000Z (11 months ago)
- Last Synced: 2025-10-12T00:25:55.860Z (10 months ago)
- Topics: kotlin, kotlin-multiplatform, matrix, matrix-client, yolo
- Language: Kotlin
- Homepage: https://ed.geraghty.family
- Size: 166 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FEVERDREAM
A multi-platform Matrix chat client built with Kotlin and Compose Multiplatform, featuring MSN Messenger-style separate windows and end-to-end encryption.
## Features
- **Multi-platform support**: Windows, Mac, Linux
- **MSN Messenger-style UI**: Separate windows for login, room list, chat windows, and settings
- **End-to-end encryption**: Olm/Megolm cryptographic ratchets with key backup
- **Modular architecture**: Clean separation of crypto components (OlmMachine, KeyBackup, RoomKey management)
- **Sync token persistence**: Efficient incremental synchronization
- **Room encryption detection**: Automatic detection and handling of encrypted rooms
- **Key backup and recovery**: Secure backup and restoration of encryption keys
- **Error handling**: Robust handling of missing keys, session expiration, and network issues
## Encryption
This client implements Matrix end-to-end encryption using the Olm and Megolm cryptographic ratchets via the Matrix Rust SDK.
**Current Implementation:**
- Uses vodozemac cryptographic library via Rust bindings (matrix-sdk-crypto)
- Supports room encryption detection and Megolm group encryption
- UI indicators for encrypted rooms and message status
- Key backup functionality with recovery key generation
- Automatic session renewal for message encryption
- Proper handling of undecryptable historical messages
**Implementation Details:** The project embeds the Matrix Rust SDK and uses Kotlin bindings for vodozemac, providing a native, high-performance cryptography implementation.
## Getting Started
### Prerequisites
- JDK 17 or higher
- Gradle (wrapper included)
### Building
On Unix-like systems:
```bash
JAVA_HOME=/path/to/jdk17 ./gradlew build
```
On Windows:
```cmd
set JAVA_HOME=C:\path\to\jdk17
gradlew.bat build
```
### Running
On Unix-like systems:
```bash
JAVA_HOME=/path/to/jdk17 ./gradlew run
```
On Windows:
```cmd
set JAVA_HOME=C:\path\to\jdk17
gradlew.bat run
```
## Project Structure
- `src/desktopMain/kotlin/` - Desktop-specific application code
- `matrix-rust-sdk/` - Embedded Matrix Rust SDK for crypto operations
- `kotlin-bindings/` - Kotlin bindings for Rust crypto libraries
- `crypto_store/` - Local storage for encryption keys and session data
- `build.gradle.kts` - Build configuration
- `settings.gradle.kts` - Project settings
## Architecture
The application follows a modular design with separate components for:
- **OlmMachineManager**: Handles OlmMachine lifecycle and initialization
- **KeyBackupManager**: Manages key backup operations and recovery
- **RoomKeyManager**: Handles room key requests and sharing
- **MessageCacheManager**: Manages message caching and retrieval
- **SyncManager**: Handles Matrix synchronization with token persistence
## Contributing
This project uses the Matrix Rust SDK for cryptographic operations. Ensure you have the necessary build tools for cross-compilation if modifying crypto components.
## License
[#YOLO Public License (YPL) v0.12.34-hunter.2](https://github.com/YOLOSecFW/YoloSec-Framework/blob/master/YOLO%20Public%20License)