Orion is a performant, stateful, clustered IRC server designed to run well in Kubernetes.
Orion is also my cat, and this project is dedicated to him.
Orion is an IRC server rewrite focused on predictable hot-path behavior, explicit state ownership, and operational safety.
The goal is not to rebuild the old codebase mechanically. The goal is to establish a simpler and more defensible foundation for a real IRC server that can grow into a production-grade, stateful, clustered system.
Orion is currently in the foundation phase of the rewrite.
What is already in place:
- IRC protocol command, reply, and error models
- a span-driven IRC message parser
- transport foundations for TCP-oriented runtime behavior
- broad automated coverage for the implemented IRC message surface
- generated DocFX documentation for the IRC messages currently implemented
This repository is active and real, but it is not pretending to be feature-complete yet.
The current work is centered on:
- protocol correctness
- parser behavior and coverage
- transport/runtime foundations
- contributor-facing documentation
- keeping the design KISS while staying compatible with Orion's clustered direction
src/Orion.Irc.Protocol: IRC protocol types, parser, commands, replies, and wire-level behaviorsrc/Orion.Server.Transports: transport foundations and network-facing runtime primitivessrc/Orion.Server: current server bootstrap and application entrypointsrc/Orion.Core: shared core primitives used by the rewritetests/Orion.Tests: protocol and transport coveragetests/Orion.Performance: focused benchmark coverage for hot-path protocol workdocs/: contributor documentation, including the generated IRC message reference
Clone the repository:
git clone https://github.com/tgiachi/orion.git
cd orionBuild the solution:
dotnet build Orion.slnxRun the main test suite:
dotnet test tests/Orion.Tests/Orion.Tests.csproj -v minimalBuild the documentation site:
dotnet tool restore
dotnet tool run docfx build docs/docfx.jsonThe IRC message reference is generated from the current implementation and its structured metadata. Each message has its own page with syntax, examples, references, source location, and related tests when available.
- Keep the architecture KISS.
- Treat protocol parsing, routing, buffering, and state transitions as hot paths.
- Prefer explicit, deterministic behavior over abstraction for its own sake.
- Design with stateful clustering in mind from the start.
- Keep Kubernetes operation, graceful shutdown, and runtime clarity part of the design.
Near-term priorities:
- continue hardening the runtime and server bootstrap
- build explicit state ownership for sessions, channels, and node behavior
- grow operability surfaces such as configuration, readiness, and shutdown behavior
- prepare the ground for clustered runtime semantics without polluting the current design
Contributions are welcome, but the rewrite is intentionally opinionated:
- favor correctness and clarity over cleverness
- do not reintroduce old abstractions without re-evaluating them
- keep performance, statefulness, and operational safety visible in design decisions
This project is licensed under the MIT License.
