Chrome extension

Install the vibe.

Overlay the mixer and timer on Meet, Discord, YouTube, or any tab where you're locking in. This is where the vibeclub actually happens.

Manifest V3·MIT · React 18 · Plasmo
#lofi-codersoverlay preview
32:14
focus · cycle 2
Ambient
35
Music
25
Page
85
renders on any tab
The vibe, visualized

Three layers. One sphere. Drag the faders.

A custom WebGL shader paints each fader as a color band on the orb. This is the same three-layer mix the extension runs — amber ambient, violet music, signal-green page audio — previewed here so you can feel the knobs before you install.

the mix · live
3 layers
Drag the faders

This is the extension, visualized. Every fader drives a shader uniform. The same three layers power your actual session — ambient, music, voice — in each listener's ears, never broadcast.

What it adds

Four things. Nothing else.

Mixer

Three faders.

Ambient + AI music + your tab. Independently controlled. Lives in your ears, not broadcast.
Rhythm

Synced pomodoro.

Everyone on the extension in the same vibeclub hits the same block. Supabase Realtime broadcast. No polling, no drift.
Recap

Auto-notes.

Session ends, Claude writes a two-liner, card lands on your profile. Shareable to X.
Anywhere

Any page, any time.

Meet, Discord, Zoom, Figma, GitHub, blank tab. Anywhere you're making something.
Privacy — the short version

Never reads page content. Ever.

Audio mixing is 100% local via Web Audio. The only data that leaves your browser: the pomodoro broadcast (club slug + timer state) and a session summary (duration + cycle count).

Open source so you can verify — read the source.

Keyboard

Shortcuts on any page.

  • J·Show / hide overlay
  • K·Start / pause pomodoro
  • M·Mute all layers
Fork it

MIT, Plasmo, zero lock-in.

The mixer, the pomodoro sync, the recap — all extracted into npm packages so you can drop them into your own product. Or fork the whole extension.

clone + dev
git clone https://github.com/frankxai/vibeclubs
cd vibeclubs
pnpm install
pnpm dev:extension
embed the mixer
import { createMixer } from '@vibeclubs/vibe-mix'
const mixer = createMixer()
await mixer.loadAmbient('lofi')
mixer.setLevel('ambient', 0.4)