MIT · Svelte 5 + Tailwind v4 · backend-agnostic

The headless Slack
you actually own.

A themeable, composable collaboration UI shell — channels, DMs, reactions, mentions, tasks, presence. Wire it to any WebSocket backend, or run it standalone against the bundled mock server.

OS
# general
AL
Ada Lovelace9:24 AM
Welcome to the workspace! 👋 This whole UI is one npm package.
🎉 4
YU
You9:25 AM
No backend lock-in — it just speaks a tiny WebSocket protocol.
GH
Grace Hopper9:26 AM
And theming is pure CSS tokens. Ship it however you like.
🔥 2
Message #general…

Why Open Slack

A blank Slack you make yours.

It's a UI framework for collaboration apps — not a finished product. The primitives are built; the look and the backend are yours.

Backend-agnostic

Talks a small typed WebSocket protocol. Bring your own server — or run the bundled in-memory mock and have a working app in one command.

Theme-first

A 3-tier design-token system. No hardcoded colors, spacing, or fonts — restyle the whole shell by overriding CSS variables. Dark & light built in.

Plugin-driven

Rail items, sidebar sections, settings tabs, toolbar items — all data-driven. Extend the shell with pluginRegistry.register(), no core forks.

Batteries included

Channels, DMs, threads, reactions, @mentions, typing, presence, unread badges, tasks, members & roles, search — wired, optimistic, and reconnect-safe.

Svelte 5, no SSR

Pure runes ($state / $derived), adapter-static output. Deploy to any CDN, or wrap it in Electron / Tauri.

shadcn-svelte base

Built on shadcn-svelte primitives + Tailwind v4. Familiar, accessible, and easy to extend with your own components.

Quickstart

Running in under a minute.

# in your SvelteKit + Tailwind v4 project
npx shadcn-svelte@latest init

# add the whole UI — one command, no clone
npx shadcn-svelte@latest add https://open-slack.web.app/r/open-slack.json
  ✓ avatar, dialog, tooltip … (shadcn primitives)
  ✓ open-slack            → src/lib (core + components)
  ✓ open-slack-theme      → src/open-slack-theme.css

# then import the tokens in src/app.css
@import "./open-slack-theme.css";
1

Install like any shadcn component

One shadcn-svelte add command copies the code into your project — you own it. No fork, no dependency to track.

2

Or à la carte

Add just what you need: open-slack-message, -composer, -channel, -panes, or -core.

3

Theme it

Override the design tokens in open-slack-theme.css. One file controls the entire look, dark & light.

4

Wire your backend

Implement the documented PROTOCOL.md (the mock server is the reference), or extend the typed SlackClient.

Build your collaboration app, not your chat UI.

Open source under MIT. Clone it, theme it, make it yours.