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
Find a file
Jean 9285105afd
Add persisted account store with NickServ REGISTER/IDENTIFY
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.
2026-07-11 20:28:42 +00:00
src Add persisted account store with NickServ REGISTER/IDENTIFY 2026-07-11 20:28:42 +00:00
testing Fix InspIRCd UID and message-tag parsing; add irctest controller 2026-07-11 19:59:47 +00:00
.gitignore Add persisted account store with NickServ REGISTER/IDENTIFY 2026-07-11 20:28:42 +00:00
Cargo.lock Add persisted account store with NickServ REGISTER/IDENTIFY 2026-07-11 20:28:42 +00:00
Cargo.toml Add persisted account store with NickServ REGISTER/IDENTIFY 2026-07-11 20:28:42 +00:00
config.example.toml Scaffold the federated services daemon 2026-07-11 19:28:30 +00:00
README.md Scaffold the federated services daemon 2026-07-11 19:28:30 +00:00

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. A Protocol trait maps raw server-to-server lines to/from a normalized NetEvent/NetAction model. The engine never touches a raw line, so a new ircd = one new module. InspIRCd is the first.
  • engine/ — the services engine: live network state, an EventLog (every persistent change is an Event; state is a fold over the log — this is what makes replicating across nodes a later addition, not a rewrite), and the Service trait.
  • 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.