Overview
Discover what makes Kiwi IRC powerful
Kiwi IRC is a **fully static, web‑based IRC client** that can be dropped into any HTTP server or CDN without a backend component. It is written in **JavaScript** and built with **Vue JS**, **Webpack**, and **Babel**, resulting in a lightweight bundle (~400 KB gzipped) that runs natively in the browser. The client fetches a single `config.json` at runtime, allowing dynamic adjustment of networks, themes, and plugin sets without redeploying the static assets.
Frontend
Runtime Configuration
Networking
Data Storage
Overview
Kiwi IRC is a fully static, web‑based IRC client that can be dropped into any HTTP server or CDN without a backend component. It is written in JavaScript and built with Vue JS, Webpack, and Babel, resulting in a lightweight bundle (~400 KB gzipped) that runs natively in the browser. The client fetches a single config.json at runtime, allowing dynamic adjustment of networks, themes, and plugin sets without redeploying the static assets.
Technical Stack & Architecture
- Frontend: Vue JS 2.x (component‑based, reactive UI), Webpack for module bundling, Babel for ES2015+ transpilation.
- Runtime Configuration: A JSON file (
/static/config.json) defines networks, layout, theming, and plugin registry. The client loads this via XHR/Fetch on startup. - Networking: Supports three connection modes:
- Direct WebSocket to an IRC server exposing the IRCWS protocol.
- Proxy via webircgateway (a WebSocket bridge to traditional IRC servers).
- Persistent sessions via KiwiBNC, a dedicated bouncer that maintains WebSocket connections.
- Data Storage: Uses the browser’s
localStoragefor session persistence (last channel, nick, network list). No server‑side database is required unless an external BNC or gateway is used.
Core Capabilities & APIs
- Plugin Architecture: Plugins are plain JavaScript modules that register hooks (
onMessage,onJoin, etc.) and UI components. The built‑in plugin system supports file uploads, video calling (WebRTC), custom commands, and more. Developers can ship their own plugins or extend existing ones via the public API exposed inkiwiirc.js. - Event Bus: A global event emitter (
kiwi.events) allows external scripts to listen for IRC events or trigger actions (e.g., sending a message programmatically). - Theming: CSS variables and a theme JSON allow runtime skinning. Custom themes can be loaded via the config file.
- RESTful Hooks: While the core is client‑only, integration with external services can be achieved by embedding the Kiwi iframe and communicating through
postMessageor via a custom plugin that exposes webhooks.
Deployment & Infrastructure
Because Kiwi is static, deployment is trivial:
- Copy the
dist/folder to any web server (Apache, Nginx, Caddy) or host it on a CDN. - Optionally wrap the client in an iframe for embedding into other sites.
- For scalability, serve the static bundle via HTTP/2 and cache aggressively. Connection scaling is handled by the chosen WebSocket backend (webircgateway or KiwiBNC), which can be horizontally scaled behind a load balancer.
Containerization is straightforward: a minimal nginx image can serve the static files, and separate containers can host webircgateway or KiwiBNC. Kubernetes deployments typically consist of:
nginxpod for the client.webircgatewaypod(s) behind a Service exposing port 443 for WebSocket.- Optional
kiwibncpod(s) if persistent sessions are required.
Integration & Extensibility
- Plugin Ecosystem: The official plugin registry is hosted on GitHub; developers can fork, modify, or publish new plugins. The API is documented in the wiki, detailing hook signatures and configuration options.
- Webhooks & Callbacks: Plugins can expose REST endpoints or WebSocket events, enabling integration with chatbots, CI pipelines, or monitoring dashboards.
- Customization: Beyond plugins, the UI can be restructured by editing Vue components or injecting CSS. The configuration file allows per‑network overrides, custom command prefixes, and advanced layout tweaks.
Developer Experience
- Documentation: The project’s wiki provides a clear guide for building from source, configuring networks, and developing plugins. API references are concise.
- Community: Active GitHub issues, a dedicated Discord channel, and frequent updates ensure quick support. The license is MIT, encouraging commercial use without licensing fees.
- Modularity: The separation of configuration and code means that developers can rapidly prototype new features or themes without touching the core build pipeline.
Use Cases
- Self‑Hosted IRC for Enterprises – Deploy Kiwi as an internal chat portal with custom branding and file sharing, backed by a private IRC network or BNC.
- Embedded Chat Widgets – Embed the client into product landing pages or support portals to provide real‑time IRC access without a full‑featured desktop client.
- Educational Platforms – Use Kiwi to expose IRC channels for class discussions, with plugins adding video conferencing or collaborative editing.
- Open‑Source Projects – Host a lightweight IRC interface for community channels, with plugins enabling automated bot notifications or CI alerts.
Advantages Over Alternatives
| Feature | Kiwi IRC | Competitor (e.g., Mibbit) |
|---|---|---|
| Static Deploy | ✔️ (no server) | ❌ (requires backend) |
| Open Source & MIT | ✔️ | ❌ (proprietary) |
| Plugin Extensibility | ✔️ | Limited |
| Scalable WebSocket Backend | ✅ (webircgateway/kiwibnc) | ❌ |
| Custom Themes & Layouts | ✔️ | ❌ |
| **Direct |
Open SourceReady to get started?
Join the community and start self-hosting Kiwi IRC today
Related Apps in apis-services
Mastodon
Decentralized, real‑time social networking
Discourse
Open‑source community forum platform with real‑time chat and AI
Rocket.Chat
Secure, open‑source team communication platform
Novu
Unified notification platform for multi‑channel delivery
Mattermost
Secure, self‑hosted team collaboration with chat, voice, and AI
Jitsi Meet
Free, encrypted video conferencing for everyone
Weekly Views
Repository Health
Information
Explore More Apps
Gokapi
Secure, expiring file shares for teams and individuals
Homer
Static dashboard for your services
Tracim
Collaborative workspace for teams
Flarum
Fast, lightweight community forum software
sigal
Self-hosted other
Input
Self-hosted, no-code form builder for brandable surveys
