{"id":51015896,"url":"https://github.com/elythi0n/virta","last_synced_at":"2026-06-21T10:30:27.472Z","repository":{"id":363185705,"uuid":"1260086668","full_name":"elythi0n/virta","owner":"elythi0n","description":"🎥 Virta is the ultimate cross-platform chat aggregation engine for live streaming.","archived":false,"fork":false,"pushed_at":"2026-06-07T19:46:22.000Z","size":15611,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-07T21:11:46.059Z","etag":null,"topics":["broadcast","chat-aggregation","kick","live","streaming","twitch"],"latest_commit_sha":null,"homepage":"https://virta.lol","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elythi0n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-05T06:29:10.000Z","updated_at":"2026-06-07T19:53:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/elythi0n/virta","commit_stats":null,"previous_names":["elythi0n/virta"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/elythi0n/virta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elythi0n%2Fvirta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elythi0n%2Fvirta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elythi0n%2Fvirta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elythi0n%2Fvirta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elythi0n","download_url":"https://codeload.github.com/elythi0n/virta/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elythi0n%2Fvirta/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34607126,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["broadcast","chat-aggregation","kick","live","streaming","twitch"],"created_at":"2026-06-21T10:30:26.906Z","updated_at":"2026-06-21T10:30:27.466Z","avatar_url":"https://github.com/elythi0n.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ccenter\u003e\u003ca href=\"https://virta.lol\"\u003e\u003cimg src=\"./assets/banner.png\" alt=\"Virta\" /\u003e\u003c/a\u003e\u003c/center\u003e\n\n# Virta\n\n\u003ca href=\"https://www.electronjs.org\"\u003e\u003cimg src=\"https://img.shields.io/badge/desktop-Electron-47848F?logo=electron\u0026logoColor=white\" alt=\"Built with Electron\" /\u003e\u003c/a\u003e\n\n### Every stream. One current.\n\nVirta is a cross-platform open-source streaming command center. It pulls together the chat from\nevery platform you broadcast to into a single real-time feed with moderation, cross-posting,\nfiltering, live analytics, highlights detection, and a plugin marketplace built on top. It stays\nfast and legible under heavy load, and new platforms slot in without changes to the core.\n\nOne engine powers every interface: a desktop app, a terminal client, the browser, and a built-in\nOBS overlay, with your channels, filters, profiles, and themes in sync across all of them. Run it\non your own machine by default, or host it on a server or in the cloud and reach it from\nanywhere.\n\n## Features\n\n- **Unified, platform-tagged feed:** every chat in one strictly time-ordered stream, each\n  message marked by its origin\n- **Read anonymously, send when you sign in:** full read access with no account; auth is opt-in\n  and per platform\n- **Cross-posting:** one message to several platforms at once, rate-governed, with partial-send\n  awareness (unreachable targets shown *before* you hit enter, never failed after)\n- **Unified moderation:** timeouts/bans/deletes, slash commands, and an AutoMod/held-message\n  queue, across platforms, from one pane\n- **Filtering:** highlight, hide, and profanity-mask by platform/channel/author/keyword, plus a\n  **calm mode** that keeps high-velocity chat readable without dropping a message\n- **Full emotes:** native emotes plus 7TV, BTTV, and FFZ (animated, cached, live-updating)\n- **Dockable workspace:** VSCode-style dockable panels, multi-window pop-outs, a command palette,\n  and full keyboard navigation\n- **Live stats:** concurrent viewers *per platform and combined*, messages/sec, unique chatters,\n  emote leaderboards\n- **Embedded stream tiles:** watch your own broadcast next to chat via each platform's player\n- **Profiles:** saved workspaces (channels, layout, filters, theme, accounts) you switch between\n  from a list; your last session is always restored when you open the app\n- **Highlights timeline:** scrollable history of hype moments, spikes, and keyword hits from the\n  session\n- **Plugin marketplace:** install and manage plugins; VOD replay included out of the box\n- **Local-first \u0026 private:** ephemeral by default, optional logging with instant search, SQLite\n  or Postgres, secrets in your OS keychain\n- **Every surface:** desktop app, terminal UI, web, and a zero-install OBS overlay, all from one\n  engine\n- **Extensible:** a public local API with scoped tokens, signed outbound webhooks, and shareable\n  theme packs\n\n## Table of contents\n\n- [Why Virta](#why-virta)\n- [Currently supported platforms](#currently-supported-platforms)\n- [What it does](#what-it-does)\n- [Surfaces](#surfaces)\n- [Your data, your machine](#your-data-your-machine)\n- [Extend it](#extend-it)\n- [On the roadmap](#on-the-roadmap)\n- [Cross-platform](#cross-platform)\n- [Build \u0026 run](#build--run)\n- [License](#license)\n\n## Why Virta\n\nCreators who stream to more than one place currently juggle several browser tabs (or pay a\nsubscription) just to see their own chat. Moderators working communities that span platforms\nhave no single pane and no fast, reliable cross-platform tooling. Viewers who follow a creator\neverywhere want one window, not several.\n\n- **Unified, not bolted-on.** Every platform normalizes into one message model, so filters,\n  profiles, emote resolution, stats, and moderation are written once and apply everywhere.\n- **Local-first, deploy anywhere.** The engine runs on your own machine by default, with no\n  third-party service in the loop. The same design lets you host it on a server or in a container\n  instead and reach it from any interface.\n- **Built for performance.** The feed stays smooth and legible at high message rates; rendering\n  and message processing are engineered to keep heavy work off the hot path.\n- **Scales with you.** From a single channel to many across platforms, and from the built-in\n  SQLite store to Postgres when you need it.\n- **Transparent.** When a source degrades, the interface shows a clear, labeled state, never a\n  quietly empty feed.\n- **Extensible by design.** Adding a platform is a self-contained adapter; the engine, pipeline,\n  storage, and interfaces stay untouched.\n\n## Currently supported platforms\n\nVirta is platform-agnostic at its core; these are the platforms shipping today, each declared\nwith the access it honestly provides.\n\n| Platform | Read | Send \u0026 moderate | Notes |\n|---|---|---|---|\n| **Twitch** | anonymous or signed in | signed in | full chat, emotes, badges, events, replies |\n| **Kick** | anonymous or signed in | signed in | official API for send \u0026 moderation |\n| **YouTube** | anonymous or signed in | read-only | live chat via innertube; send and moderation not yet supported |\n| **X** (live broadcasts) | best-effort | experimental | no official chat API exists anywhere; runs in your own browser session, clearly labeled, and isolated so its breakage never affects the others |\n\nEach platform reports its real-time capabilities, so the UI only offers actions a platform (and\nyour sign-in state) actually supports. More platforms are planned; the adapter model makes them\ncommunity-contributable without engine changes.\n\n## What it does\n\n**The feed**\n- Unified, strictly time-ordered feed with an origin mark on every row\n- Per-channel panes alongside the unified feed\n- Emotes: native plus 7TV / BTTV / FFZ (animated, disk-cached, live updates)\n- Badges and contrast-clamped name colors; sub / raid / gift / follow event rows\n- Replies and threading (quoted context, click-to-jump) where supported\n- First-time-chatter highlighting\n- Pause-on-hover with scrollback and an \"N new messages\" resume pill\n\n**Filtering \u0026 focus**\n- Keyword/mention **highlights** with desktop notifications\n- **Hide** by type, author, keyword, or platform\n- **Profanity / content filter:** masks matched terms with click-to-reveal, from per-language\n  lists plus your own; applied before TTS and outbound integrations\n- **Calm mode** for high-velocity chat: combo-collapse (\"KEKW ×41\"), emote-only collapse, smart\n  sampling with a \"+37 messages\" expander, and priority lanes (mentions, mods, subs, first-timers\n  are never sampled away). Shapes display only; logging and stats still see everything.\n\n**Sending \u0026 moderation**\n- Authenticated send with a send-target picker\n- **Cross-posting:** one message to several targets at once, rate-governed, with **partial-send\n  awareness** that shows unreachable targets dimmed and excludes them *before* the send rather\n  than failing it\n- **Slash commands** (`/ban`, `/timeout`, `/me`, `/slow`, …) routed to typed actions:\n  capability-checked, rate-governed; unknown commands are hinted, never sent\n- **Unified mod actions** from the feed (timeout/ban/delete) plus quick chat-settings toggles\n  (slow mode, followers-only, emote-only)\n- **AutoMod / held-message queue** with approve/deny; held messages never hit the feed until\n  approved\n- Transparent send queue: paced sends show a countdown and are never silently dropped\n\n**Workspace**\n- A VSCode-style dockable workspace: drag, resize, split, tab, and pop out any panel; saved per\n  profile; collapses responsively down to mobile\n- Command palette and full keyboard navigation; multi-window pop-outs (always-on-top)\n- Embedded **stream preview tiles:** watch your broadcast next to chat via the platform's\n  official player, with a live/offline + viewer badge (no video is ingested)\n- **Live stats:** concurrent viewers per platform *and* a combined total, messages/sec, unique\n  chatters, emote leaderboard, hype meter, and moment detection; works without logging\n- **Highlights timeline:** scrollable panel of notable moments, hype spikes, and keyword hits\n  from the session\n- Mention inbox, user hovercards and pinned user cards (cross-platform identity, session context,\n  quick actions, notes)\n- Quick replies / canned messages; emote and @mention autocomplete\n\n## Surfaces\n\nEach surface is a full client of the same engine, with no feature locked to one of them:\n\n- **Desktop** app with a native shell (tray, global hotkeys, multi-window)\n- **Terminal UI** (SSH-able)\n- **Web** app\n- **OBS overlay** served directly by the engine: zero-install, profile-themed\n\n## Your data, your machine\n\n- **Ephemeral by default:** chat is never written to disk unless you turn on logging\n- Optional logging with instant full-text search and retention control\n- **SQLite** by default, switchable to **Postgres**; export or delete your data anytime\n- Secrets live in your **OS keychain** (encrypted file-vault fallback), never in the database\n- **No telemetry** without explicit opt-in\n\n## Extend it\n\n- A public, versioned local API (the same one the apps use) with scoped tokens\n- Outbound, HMAC-signed webhooks (e.g. raid triggers lights) with retries and a delivery log\n- Theme packs with a live-preview editor and shareable theme files\n- **Plugin marketplace:** install and manage plugins from the built-in marketplace; supports\n  remote GUI panels and local archive installs; includes VOD replay out of the box\n\n## On the roadmap\n\n- Live translation (offline detection + tiered engines)\n- Per-viewer audience stats (opt-in): top fans, visit counts, favorite emotes\n- An intelligence layer: search, semantic recall over your logs, and an MCP server\n- Team/collaboration mode for co-streams and mod teams: coordination only, never pooled\n  credentials\n- Same-person linking across platforms, accessibility passes, and more platforms\n\n## Cross-platform\n\nWindows, macOS, and Linux are equal targets; OS-specific capabilities ship with declared\nfallbacks.\n\n## Install\n\nPre-built installers will be on [virta.lol](https://virta.lol) once the first release is tagged.\nUntil then, build from source.\n\n## Build \u0026 run\n\nRequires **Go 1.26+**.\n\n```sh\nmake ci      # build + lint + test (race + coverage) + cross-compile; must be green\nmake run     # run the engine daemon (virtad)\nmake app     # produce the one-click desktop app for the current OS\n```\n\nThe daemon binds to loopback on an ephemeral port and writes a discovery file with a bearer\ntoken, so a frontend on the same machine finds and authenticates to it with no configuration.\n\n## License\n\n[AGPL-3.0](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felythi0n%2Fvirta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felythi0n%2Fvirta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felythi0n%2Fvirta/lists"}