Charon
2024Active

Charon

Scala 3 · Cats Effect · Http4s · I2P · ZKP

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

  • Public rooms: Browse at http://127.0.0.1:8080/pub
  • Private rooms: Use invite link

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

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.