Anonymous ephemeral chat and file sharing for the I2P network.
- Ephemeral Rooms - Chat rooms that automatically expire
- Anonymous Identity - Consistent identity per room, different across rooms
- File Sharing - Upload and share files (up to 300MB)
- No Tracking - No cookies, no logs, no localStorage
- I2P Integration - Designed for the I2P anonymous network
- Java 21 or later
- (Optional) I2P router with SAM API enabled
- Go to http://127.0.0.1:8080/new
- Set room name (optional) and duration
- Choose public or private
- Click "Create Room"
- Public rooms: Browse at http://127.0.0.1:8080/pub
- Private rooms: Use invite link
- Go to http://127.0.0.1:8080/files
- Drag & drop or select a file
- Share the file link
~/.charon/
├── charon.db # SQLite database (rooms, files)
└── identity.key # Master key for identity generation
| Data | Storage | Notes |
|---|---|---|
| Room metadata | SQLite | Survives restart |
| Room members | SQLite | For sidebar display |
| Messages | Memory only | Ephemeral by design |
| Files | SQLite + chunks | Persistent |
| Master key | File | One per user |
Your identity is derived from a master key stored at ~/.charon/identity.key.
- Same room = Same identity (prevents impersonation)
- Different rooms = Different identity (protects privacy)
Default settings (no config file needed):
| Setting | Default |
|---|---|
| Host | 127.0.0.1 |
| Port | 8080 |
| Data directory | ~/.charon |
| Max file size | 300MB |
| Chunk size | 256KB |
- Scala 3 with Cats Effect 3
- Http4s (Ember) for HTTP/WebSocket
- Doobie for SQLite
- Circe for JSON
- Twirl for templates
GNU Affero General Public License v3.0
Charon - Anonymous ephemeral chat and file sharing for I2P
Copyright (C) 2026 rxxuzi
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.