MCPSERV.CLUB
Convos

Convos

Self-Hosted

Browser‑based IRC client with persistent bouncer and video chat

Stale(60)
1.1kstars
0views
Updated Feb 7, 2025
Convos screenshot 1
1 / 2

Overview

Discover what makes Convos powerful

**Convos** is a browser‑first, self‑hosted IRC client that bundles a lightweight bouncer with a modern UI. From a developer’s perspective, it is a full‑stack application that leverages Perl on the server side and Svelte on the client, exposing a clean WebSocket API for real‑time communication. The core idea is to keep users online even when the browser tab is closed, by maintaining persistent IRC connections on the server and replaying messages to reconnecting clients. This architecture eliminates the need for external bouncers such as ZNC, simplifying deployment while still offering a familiar IRC experience.

Backend

Frontend

Data Persistence

Containerization

Overview

Convos is a browser‑first, self‑hosted IRC client that bundles a lightweight bouncer with a modern UI. From a developer’s perspective, it is a full‑stack application that leverages Perl on the server side and Svelte on the client, exposing a clean WebSocket API for real‑time communication. The core idea is to keep users online even when the browser tab is closed, by maintaining persistent IRC connections on the server and replaying messages to reconnecting clients. This architecture eliminates the need for external bouncers such as ZNC, simplifying deployment while still offering a familiar IRC experience.

Technical Stack

  • Backend – Written in Perl 5.38+ using the Mojolicious web framework, which natively supports WebSockets and asynchronous I/O. Mojolicious’ event loop (POE or AnyEvent) handles concurrent IRC connections, message buffering, and user session management.
  • Frontend – Built with Svelte 5, a compile‑time framework that produces highly efficient JavaScript bundles. The UI is responsive, supports themes, rich media rendering (emojis, images), and integrates a WebRTC layer for video chat via the browser’s native APIs.
  • Data Persistence – Uses a simple SQLite or PostgreSQL database for user accounts, channel subscriptions, and archived logs. File uploads (for media in chats) are stored on the local filesystem under a configurable data directory.
  • Containerization – Official Docker images are published to GitHub Container Registry. The container exposes port 3000 (mapped to 8080 by default) and mounts a persistent /data volume, making it trivial to run Convos on any OCI‑compatible platform.

Core Capabilities & APIs

  • WebSocket API – Clients connect to /ws and exchange JSON messages that mirror IRC commands (PRIVMSG, JOIN, NICK, etc.). The server translates these into IRC protocol packets and vice versa, enabling seamless integration with any IRC network.
  • Bouncer Functionality – The server keeps a persistent connection to the IRC server, buffering messages for offline clients. When a user reconnects, Convos replays missed messages and restores the session state.
  • Video Chat – A peer‑to‑peer WebRTC implementation allows one‑on‑one or group video calls directly from the chat interface. The signaling server runs over the same WebSocket connection, avoiding additional ports.
  • Extensibility – Convos exposes a plugin API in Perl. Developers can write modules that hook into events (e.g., message received, user joined) and augment behavior. The front‑end can also consume custom REST endpoints for advanced integrations.

Deployment & Infrastructure

  • Self‑Hosting – Requires only Perl, a web server (or the built‑in Mojolicious server), and an IRC network. No external bouncers or reverse proxies are mandatory, though deploying behind Nginx/Traefik is common for TLS termination.
  • Scalability – The stateless nature of the web socket connections means multiple Convos instances can run behind a load balancer, sharing session data via a shared database or Redis store. Horizontal scaling is straightforward; the primary bottleneck is IRC server limits.
  • Container Support – The Docker image ships with all dependencies pre‑installed. For Kubernetes, the convos.yaml manifests can be adapted to use persistent volumes and secrets for configuration.

Integration & Extensibility

  • Plugin System – Perl modules can register callbacks for IRC events, allowing developers to add bots, moderation tools, or custom command handlers.
  • Webhooks – Convos can emit HTTP POST requests on specific events (e.g., message posted) to external services like Slack, Mattermost, or custom dashboards.
  • REST API – Basic endpoints exist for user management and channel listing, enabling programmatic control of Convos from other applications or CI pipelines.

Developer Experience

  • Configuration – A single convos.conf file (YAML/JSON) controls IRC server settings, authentication backends, and feature flags. The CLI (convos daemon, convos build) offers a streamlined workflow for development and release.
  • Documentation – The project hosts comprehensive docs on its website (convos.chat/doc/) covering architecture, plugin development, and deployment scenarios. The source code is well‑structured with clear module boundaries.
  • Community & Support – Active GitHub issues, a dedicated IRC channel (#convos), and frequent CI builds provide rapid feedback. The license is permissive (MIT), encouraging commercial use without licensing overhead.

Use Cases

  1. Private Team Communication – Deploy on a company’s intranet to provide an IRC‑based chat with persistent logs and video support.
  2. Educational Projects – Use as a teaching tool for web sockets, real‑time systems, or Perl web frameworks.
  3. Open Source Collaboration – Host a self‑managed IRC client for projects that prefer control over third‑party services.
  4. Hybrid Chat Platforms – Combine Convos with other protocols via plugins to create a unified chat gateway.

Advantages Over Alternatives

  • Full Self‑Hosting – No reliance on external services; all data stays within the organization’s control.
  • Modern UI with Minimal Overhead – Svelte delivers a fast, lightweight front‑end without the bundle size of larger frameworks.
  • Built‑in Bouncer – Eliminates the need for separate bouncers, reducing attack surface and operational complexity.
  • Extensible Architecture – Perl plugin hooks

Open SourceReady to get started?

Join the community and start self-hosting Convos today

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
apis-services
License
ARTISTIC-2.0
Stars
1.1k
Technical Specs
Pricing
Open Source
Docker
Official
Supported OS
LinuxDocker
Author
convos-chat
convos-chat
Last Updated
Feb 7, 2025