vext (Rhodium Standard Edition) is a modernized, well-maintained fork of the irker IRC notification daemon. It provides real-time commit notifications from version control systems (Git, Mercurial, Subversion) to IRC channels with minimal resource overhead and no join/leave connection spam.
Traditional commit notification systems suffer from several challenges:
- Connection Overhead: Individual notification scripts create new IRC connections for each commit, generating wasteful join/leave spam
- Resource Inefficiency: Spawning new processes for every notification consumes system resources
- Single Point of Failure: Centralized notification services create dependencies
- Inflexibility: Hard-coded or difficult-to-configure notification formats
- Maintenance Burden: Original irker lacks modern documentation and active maintenance
vext solves these problems through:
- Persistent Daemon Architecture: Single long-running process maintains connection state
- Decentralized Design: Each repository maintains its own irker instance, no central server
- Lightweight Implementation: Python-based with minimal dependencies
- JSON Protocol: Language-agnostic, extensible notification format
- Active Maintenance: Improved documentation, modern Python support, community-driven development
vext works through a two-component system:
Repository Commit
↓
Post-Commit Hook (irkerhook.py)
↓ JSON Notification
Daemon Listener (irkerd)
↓ Long-lived connections
IRC Server & Channels
The hook script triggers on commit, sends a JSON message to the daemon, and the daemon handles IRC delivery. This separation of concerns enables efficient connection management while keeping hooks simple and stateless.
-
Development Team Coordination
- Real-time visibility of repository activity
- Multiple developers stay informed without email spam
- Rapid feedback for code reviews and merges
-
Continuous Integration Pipelines
- Trigger CI workflows based on commit notifications
- Route test results and build status to project channels
- Integration with existing IRC-based workflows
-
Project Milestone Tracking
- Announce releases and major commits
- Multi-channel broadcasting (e.g., #releases, #commits)
- Historical log of project activity in IRC archives
-
Multi-Team Awareness
- Route commits from multiple repositories to dedicated channels
- Cross-team visibility and collaboration signals
- Integration with legacy IRC infrastructure
- Forge site deployment (GitHub, GitLab, Gitea instances)
- Academic project collaboration
- Open-source project governance
- Legacy system integration
-
irkerd: Daemon process that:
- Listens on configurable TCP/UDP port (default 6659)
- Maintains connection state to IRC servers
- Parses JSON notification requests
- Routes messages to destination channels
- Handles rate limiting and flood prevention
-
irkerhook.py: Hook script that:
- Integrates with repository post-commit hooks
- Extracts commit metadata from VCS
- Formats notification JSON
- Sends to daemon via network socket
- Supports Git, Mercurial, and Subversion
-
Configuration System:
- Environment variables for simple deployment
- Configuration files for advanced setups
- Systemd service files for Linux integration
{
"to": "irc://irc.libera.chat#myproject",
"privmsg": "[abc1234] Alice: Fix critical bug in parser",
"nick": "myproject-bot",
"color": "ANSI"
}| Feature | vext | Slack | Centralized CI | |
|---|---|---|---|---|
| Real-time | ✓ | ✗ | ✓ | ✓ |
| No central dependency | ✓ | ✓ | ✗ | ✗ |
| Self-hosted | ✓ | ✓ | ✗ | ✓ |
| Low resource overhead | ✓ | ✗ | ✓ | ✗ |
| Works offline | ✗ | ✗ | ✗ | ✗ |
| IRC integration | ✓ | ✗ | ✗ | ✗ |
| No spam (no join/leave) | ✓ | ✓ | ✓ | ✓ |
- Primary Language: Python 2.7+, Python 3.4+
- Architecture Style: Event-driven daemon with threading
- Network Protocols: TCP, UDP, IRC (RFC 1459)
- Data Format: JSON
- Deployment: systemd (Linux), traditional sysvinit, manual process management
- Dependencies: Python standard library (minimal external deps)
- Binary Size: ~50-100 KB (Python bytecode)
- Memory Usage: ~10-50 MB running (depends on connected channels)
- Storage: ~1 MB for code and configs
- Network: Outbound TCP/UDP to IRC server, inbound on configured port
-
Network Security:
- Restrict daemon listener to internal networks if not needed externally
- Use firewall rules to limit access to repository hooks
- Consider placing daemon behind SSH tunnel for remote deployments
-
Process Security:
- Run daemon as unprivileged user (e.g., 'irker')
- Use seccomp sandboxing if available
- Limit process file descriptor count
-
Data Security:
- Commit messages may contain sensitive information
- Configure channel access controls
- Consider encrypted IRC connections (TLS)
- Notification Latency: <100ms from commit to IRC message (typically <50ms)
- Memory per Channel: ~1-5 MB
- CPU Usage: <1% idle, <5% under heavy notification load
- Concurrent Connections: 100+ channels from single daemon
- Message Throughput: 1000+ messages/second capacity
vext scales through:
- Horizontal: Deploy multiple daemon instances for different projects/teams
- Vertical: Single daemon handles many channels efficiently
- Geographic: Route to different IRC servers by project/team
- Topical: Multiple channels per repository for different notification types
vext uses a community-maintained development model:
- Regular updates for Python version compatibility
- Bug fixes and security patches
- Documentation improvements
- Community contributions and extensions
- Compatibility with modern IRC servers (libera.chat, etc.)
| Aspect | irker (original) | vext (RSR) |
|---|---|---|
| Python 3 support | Partial | Full |
| Documentation | Basic | Comprehensive |
| Active maintenance | Maintenance mode | Active |
| Configuration | Minimal | Enhanced |
| VCS support | Git/Hg/SVN | Git/Hg/SVN + extensible |
| Testing | Limited | Comprehensive |
| Examples | Few | Many |
| Community | Small | Growing |
- Single Server: One daemon instance for organization
- Per-Team: Separate daemons for different teams/projects
- High Availability: Multiple daemons with load balancing
- Cloud Native: Container deployment with orchestration
Planned enhancements for vext:
-
Short Term (v1.x):
- Enhanced configuration management
- Improved error handling and logging
- Better testing coverage
-
Medium Term (v2.x):
- Matrix/Element support alongside IRC
- Kubernetes-native deployment
- Web-based administration interface
-
Long Term (v3.x):
- Plugin architecture for custom VCS support
- Advanced routing and filtering
- Metrics and observability improvements
vext represents the Rhodium Standard Edition of IRC-based commit notification, maintaining the elegant simplicity of irker while adding modern maintenance, comprehensive documentation, and production-ready tooling. It's ideal for teams that already use IRC infrastructure or need a lightweight, self-hosted notification system without external dependencies.