IRC services for InspIRCd networks, written in Rust. NickServ, ChanServ, and a dozen more, backed by an append-only event log instead of a database.
https://echo.dev.tronic.pro
Accounts are an append-only JSONL event log (state is the fold of the log) with argon2id-hashed passwords. NickServ gains REGISTER <password> [email] and IDENTIFY <password>; the engine tracks UID->nick from the burst so a command resolves to the sender's current nick. Classic and ircd-agnostic — the cap-based account-registration forward is the next step. |
||
|---|---|---|
| src | ||
| testing | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| config.example.toml | ||
| README.md | ||
fedserv
A federated IRC services daemon in Rust. Protocol-agnostic core, InspIRCd link first.
Clean-room — inspired by the ideas behind modern event-log/gossip services, not derived from any project's source.
Design
proto/— the ircd link layer. AProtocoltrait maps raw server-to-server lines to/from a normalizedNetEvent/NetActionmodel. The engine never touches a raw line, so a new ircd = one new module. InspIRCd is the first.engine/— the services engine: live networkstate, anEventLog(every persistent change is anEvent; state is a fold over the log — this is what makes replicating across nodes a later addition, not a rewrite), and theServicetrait.services/— the pseudo-clients: NickServ first, then ChanServ / OperServ / …
Run
cp config.example.toml config.toml # edit uplink + link password
cargo run -- config.toml
Status
Early scaffold: links to an InspIRCd uplink and introduces NickServ. Burst/mode handling and account persistence are next.