A native-feeling Twitch and Kick viewer for Windows with official and high-performance native playback, plus multistream.
Important
VioletWire is alpha software. Core playback and chat work, but Twitch, Streamlink, and third-party emote APIs can change without notice.
VioletWire is an Electron, React, and TypeScript client for Twitch and Kick.com, designed to feel like a focused Windows application instead of a generic browser wrapper. Public streams on either service can be watched without signing in. Signing in unlocks followed channels, account-aware chat, following, subscription status, and other authenticated data — through Twitch's OAuth and, separately, a Kick sign-in.
VioletWire is an independent project and is not affiliated with, endorsed by, or sponsored by Twitch, Kick, 7TV, FrankerFaceZ, BetterTTV, or Streamlink.
Followed live channels
|
Browse categories
|
Standard Twitch player
|
VioletWire Native player
|
Multistream
|
|
- Watch Twitch and Kick channels side by side in one app
- Followed lists from both services, filtered to Twitch, Kick, or both, with each avatar ringed by its service colour
- Kick chat, followed channels, sign-in, following, and native/7TV emotes, alongside the full Twitch feature set
- Followed channels separated into live and offline groups, with offline ones dimmed
- Favorite channels, set from a right-click menu, marked with a star and pinned to the top of their group
- Live channel cards with thumbnails, titles, categories, viewers, and uptime
- Browse popular categories on Twitch or Kick, highest-viewer-first, and open one to view its live streams
- A dedicated search page for channels and categories across Twitch and Kick, with an independent service scope
- Type
twitch:orkick:in the search box to jump straight to a channel on that service - Collapse the followed-channels sidebar to icons
- Infinite pagination with loading and error states
- Twitch's official player for maximum website compatibility
- Low-latency Streamlink + hls.js Native player, which also plays Kick streams
- Automatic and manual quality selection
- Source quality when Twitch exposes it
- Volume, mute, pause, fullscreen, theater mode, and picture-in-picture where available
- Volume remembered between streams and across sessions
- Go-live state and low-latency-oriented native playback
- Optional dynamic audio compression
- Floating mini player that keeps a stream playing while you browse, draggable and resizable
- Create Twitch clips from the player controls
- Resizable side chat and a movable, resizable chat overlay
- Controls that hide automatically, with a configurable one-to-ten-second delay
- Watch up to four Native streams at once in a grid that adapts to the tile count
- Audio focus so only the tile you pick plays sound; click another tile to move it
- Per-tile mute, volume, audio compressor, and quality
- Theater mode and fullscreen that hide the app chrome so the grid fills the window
- Mix Twitch and Kick streams in the same grid, each tile labelled with its service
- Tabbed Stream Chat with every tile's chat connected at once (Twitch or Kick), so switching tabs is instant
- Native Twitch and Kick chat, reading and sending
- Twitch badges, colors, emotes, replies, subscription notices, moderation events, and deleted messages
- Kick chat with history on connect, its native emotes and badges (moderator, verified, VIP, sub gifter, subscriber tiers), and follower/subscriber chat restrictions
- Clickable reply threads that keep their conversation context
- Clickable usernames with an in-app profile card and that user's recent messages
- Username and emote autocomplete
- Mention highlighting with an optional notification sound and a choice of four alert tones
- 7TV global and channel emotes on both Twitch and Kick
- FrankerFaceZ and BetterTTV global and channel emotes on Twitch
- Channel-aware Twitch emote picker with favorites and resizing
- Searchable Twitch, 7TV, FrankerFaceZ, and BetterTTV emote groups
- Rich emote tooltips with provider attribution
- Hover cards for Twitch clip links, YouTube links, and image links
- Configurable timestamps and recent-message history
- Pause autoscroll while reading older messages
- Bounded message history to prevent unbounded memory growth
- Safe text rendering without arbitrary chat HTML
- Official Twitch Device Code OAuth flow
- Separate Kick sign-in in its own isolated session, for following and account-aware Kick chat
- Follow and subscribe on either service — subscribing opens the channel's real subscribe page in an in-app modal
- Minimum-purpose Twitch scopes
- Tokens encrypted using Electron
safeStorageand Windows DPAPI - Separate, optional Twitch website playback session
- Complete sign-out and credential removal
- No Twitch passwords, copied browser cookies, or hardcoded personal tokens
- Windows 11-inspired dark interface
- OLED true-black mode
- High-DPI and multi-monitor support
- Keyboard controls
- In-app changelog viewer
- NSIS installer
- GitHub Releases automatic updates
Download the newest installer from GitHub Releases, or from violetwire.lucaboox.win.
The alpha installer is currently unsigned, so Windows SmartScreen may show an unknown-publisher warning. Code signing is planned before a wider release.
The Windows installer includes a pinned, checksum-verified Streamlink runtime, so the Native player works without installing anything else. Custom developer builds can still supply Streamlink with:
VIOLETWIRE_STREAMLINK_PATH=C:\path\to\streamlink.exe
The override takes priority over the bundled Streamlink runtime. Without it,
VioletWire prefers its bundled copy and then falls back to PATH and common
system installation locations.
VioletWire uses Twitch's official public Device Code flow. A Client Secret is not stored or required.
Requested scopes:
user:read:followsuser:read:subscriptionsclips:edituser:read:chatuser:write:chatuser:read:emotesuser:manage:chat_coloruser:read:moderated_channelsmoderator:manage:banned_usersmoderator:manage:chat_messagesmoderator:manage:announcementsmoderator:manage:chat_settingsmoderator:manage:warningsmoderator:manage:shield_mode
Follow and subscription purchases still open Twitch-controlled pages because Twitch does not provide public APIs for those mutations.
Requirements:
- Windows 10 or Windows 11
- Node.js 22+
- npm
git clone https://github.com/lucaboox/VioletWire.git
cd VioletWire
npm install
npm run devVerification:
npm run typecheck
npm run lint
npm test
npm run buildBuild the Windows installer:
npm run package:winArtifacts are written to release/.
Installed GitHub release builds check for updates shortly after launch and every six hours afterward. Updates download in the background and prompt before restarting. Development builds and local installers without a configured release feed do not contact an update server.
Pushing a version tag such as v0.1.0-alpha.1 runs the Windows release workflow.
The tag must match the version in package.json.
VioletWire redistributes and invokes Streamlink as a separate executable when the Native player is selected. Chromium and hls.js render the resolved stream.
- Streamlink is licensed under the BSD 2-Clause License. See THIRD_PARTY_NOTICES.md and bundled Streamlink source information for the licenses, exact versions, checksums, build definitions, and corresponding source locations.
Copyright (C) 2026 lucaboox and VioletWire contributors.
VioletWire-authored source code is free software licensed under the GNU General Public License v3.0 or later. If you distribute a modified version of VioletWire, the GPL requires you to provide its corresponding source code under the same license.
Bundled third-party software, provider marks, and adapted assets are not relicensed under the GPL. They remain subject to their respective licenses and notices described in THIRD_PARTY_NOTICES.md and bundled Streamlink source information.