Skip to content

HueByte/EchoHub

Repository files navigation

EchoHub

EchoHub

No tracking. No subscriptions. No "enhanced AI features". Just chat.

Self-hosted, IRC-inspired chat with an open API. Use the terminal, a desktop app, IRC, or a client you build yourself.

Website · Public servers · Documentation · Changelog

Build Release Chocolatey Docker .NET 10 License


What is this?

Chat apps used to be simple. You connected to a server, joined a channel, and talked to people. No one was mining your messages for ad targeting, no one was selling your "engagement metrics", and the app didn't need 2GB of RAM to display text.

EchoHub is a return to that. Self-hosted, IRC-inspired chat where you own the server and the data, and the client won't try to upsell you on a premium tier.

Each server is fully independent. No central authority, no account federation, no corporate overlord. Just spin one up and go.

The terminal client in this repo is the main way in: a proper native app that runs right in your terminal, no browser or Electron in sight. But you're not locked to it. The server speaks an open API (REST and SignalR) plus native IRC, so you can reach it however you like. There's already decho, any IRC client works fine, and if none of those suit you, writing your own is fair game.

Architecture

One server process speaks two protocols: SignalR for native clients and raw IRC for everything else. Both land on the same ChatService, so a message from irssi and one from the terminal client look identical by the time they hit the database.

graph LR
    subgraph Clients
        direction TB
        TUI["Terminal client<br/>Terminal.Gui v2"]
        Desk["decho · your app<br/>REST + SignalR"]
        IRCC["IRC clients<br/>irssi · WeeChat · …"]
    end

    subgraph Server["EchoHub Server · ASP.NET Core"]
        direction TB
        Hub["SignalR Hub"]
        GW["IRC Gateway<br/>:6667"]
        Chat["ChatService"]
        Auth["JWT Auth"]
        DB[("SQLite · EF Core")]
        Files[("File store")]
    end

    TUI == "WebSocket" ==> Hub
    TUI -. "REST" .-> Auth
    Desk == "WebSocket" ==> Hub
    Desk -. "REST" .-> Auth
    IRCC == "TCP" ==> GW
    Hub --> Chat
    GW --> Chat
    Auth --> Chat
    Chat --> DB
    Chat --> Files

    classDef core fill:#512BD4,stroke:#c3b5ff,color:#ffffff,stroke-width:1.5px;
    classDef io fill:#1f6feb,stroke:#9dc1ff,color:#ffffff;
    classDef data fill:#0f7b8a,stroke:#7fd3de,color:#ffffff;
    classDef client fill:#22272e,stroke:#768390,color:#e6edf3;

    class Chat core
    class Hub,GW,Auth io
    class DB,Files data
    class TUI,Desk,IRCC client
Loading

Highlights

🔒 Actually private Self-hosted, no telemetry. Password rooms are end-to-end encrypted with a key derived from the passphrase on your own machine, so not even the server owner can read them.
🖥️ Native client, open API A real terminal client ships in the box. The REST + SignalR API is open too, so you're never stuck with it: there's the decho desktop app, any IRC client, or roll your own.
💬 IRC still works A built-in gateway drops irssi and WeeChat users into the same rooms as everyone else, live. Actions, replies and presence all carry across.
🛡️ Moderation, built in Four roles with ban, kick, mute and invite-only signup. Spam and flooding earn an automatic timed mute, no plugins to install.
📎 Files, images, audio Uploads are checked by their real bytes, not the file extension. Images even render as ASCII in the terminal, because why not.
📤 Take your data and go One command exports everything the server knows about you. Another deletes the account for good.

Full feature tour in the documentation.

Clients

The terminal client is the main, native interface. Beyond that the API and the IRC gateway are open, so you can bring whatever you like.

Client Platform Notes
Terminal client Windows · macOS · Linux The main, native client (Terminal.Gui v2), shipped as a self-contained binary
decho Desktop A community desktop client
Any IRC client Everywhere irssi, WeeChat, TheLounge, and friends, through the built-in gateway
Your own anything Build against the open REST + SignalR API. See the documentation

Quick start

Install the client

# Windows (Chocolatey)
choco install echohub

# Linux / macOS
curl -sSfL https://raw.githubusercontent.com/HueByte/EchoHub/master/scripts/install.sh | sh

Or grab a self-contained binary from Releases. No runtime required.

Host a server

cp .env.example .env
docker compose up -d

Pre-built multi-arch images live on GHCR. Prefer running from source? dotnet run --project src/EchoHub.Server (needs the .NET 10 SDK). The first launch writes its config, generates a JWT secret, and creates the database with a #general channel. No manual setup.

Getting started · Docker & deployment · Configuration

Documentation

Everything lives at huebyte.github.io/EchoHub:

Guide What's inside
Getting started Install, first connection, the onboarding flow
TUI guide Slash commands, themes, keybindings, message actions
Configuration Every appsettings.json / env key explained
IRC gateway Connecting IRC clients, what maps to what, TLS
Encrypted rooms How zero-knowledge password channels work
Moderation Roles, bans, mutes, invite codes
Docker & deployment Compose, reverse proxy, TLS (see also examples/nginx.conf)
Architecture How the pieces above actually fit together

Building from source

dotnet build src/EchoHub.slnx      # build everything
dotnet test src/EchoHub.Tests      # run the test suite

Contributions are welcome. Open an issue to discuss larger changes first.

Contributors

The people building EchoHub.

HueByte        Stone_Red

HueByte   ·   Stone_Red
Creators & maintainers

About

CLI & IRC chat app

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages