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 18a28ed49b
Handle the account-registration relay from an ircd
As the registration authority, fedserv accepts an account-registration request
relayed over the server link (ACCTREGISTER), creates the account through the
same store as classic NickServ REGISTER, and replies (ACCTREGRESULT) with
success or an error carrying the IRCv3 FAIL code — one account-creation path for
both the classic command and the draft/account-registration capability.
2026-07-11 20:50:18 +00:00
src Handle the account-registration relay from an ircd 2026-07-11 20:50:18 +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.