Anonymous ephemeral chat and file sharing for the I2P network.
Features
- 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
Requirements
- Java 21 or later
- (Optional) I2P router with SAM API enabled
Usage
Create a Room
- Go to http://127.0.0.1:8080/new
- Set room name (optional) and duration
- Choose public or private
- Click "Create Room"
Join a Room
- Public rooms: Browse at http://127.0.0.1:8080/pub
- Private rooms: Use invite link
File Sharing
- Go to http://127.0.0.1:8080/files
- Drag & drop or select a file
- Share the file link
Architecture
~/.charon/
├── charon.db # SQLite database (rooms, files)
└── identity.key # Master key for identity generation
Identity System
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)
Tech Stack
- Scala 3 with Cats Effect 3
- Http4s (Ember) for HTTP/WebSocket
- Doobie for SQLite
- Circe for JSON
- Twirl for templates
License
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.