Skip to content

rxxuzi/charon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Charon

License: AGPL v3 Scala

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

  1. Go to http://127.0.0.1:8080/new
  2. Set room name (optional) and duration
  3. Choose public or private
  4. Click "Create Room"

Join a Room

File Sharing

  1. Go to http://127.0.0.1:8080/files
  2. Drag & drop or select a file
  3. Share the file link

Architecture

~/.charon/
├── charon.db      # SQLite database (rooms, files)
└── identity.key   # Master key for identity generation

Data Persistence

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

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)

Configuration

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

Tech Stack

  • Scala 3 with Cats Effect 3
  • Http4s (Ember) for HTTP/WebSocket
  • Doobie for SQLite
  • Circe for JSON
  • Twirl for templates

License

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.

Author

rxxuzi

Releases

No releases published

Packages

No packages published