Self-hosted · Twitch-native · Open source

Focus. Together.

Dirework is a self-hosted Pomodoro timer and shared task list for co-working and body-doubling streams. You run the timer, your Twitch chat runs the tasks, and OBS shows it all in real time.

Run it on your own box · One instance per streamer · No SaaS, no lock-in

Open source Your data, your server Discord community
Focus
18:24
Cycle 2 / 4

Who it's for

One timer. A whole room.

Co-working streams turn a lonely grind into a shared one. Dirework gives the streamer, the viewers, and the self-hoster each what they need.

For streamers

Log in with Twitch, connect a bot account, drop two browser sources in OBS. Run focus sprints without touching alt-tab mid-stream.

Getting started

For viewers

Add your own tasks straight from chat with !task, mark them !done, and watch your name show up on the shared overlay. Body-doubling that sticks.

Chat commands

For self-hosters

One Docker image, one Postgres, one streamer per instance. Better Auth, tRPC, Drizzle. No accounts to manage but your own.

Deployment guide

Twitch chat bot

Chat is the control panel.

Viewers run their own tasks with !task, !done, and !focus. Mods drive the timer with !timer start. Every command is aliasable, and replies are yours to reword.

Full command reference
ada_codes!task write migration tests
Dirework@ada_codes added task #1 and set it as your focus ✅
pixel_pat!task sketch logo concepts
ada_codes!done
Dirework@ada_codes nice — task #1 complete 🎉
night_owl!timer eta
DireworkFocus ends ~3:42pm · break in 18:24 · cycle 2/4
streamer1/2
Finish the design system docs
Review overlay PR
ada_codes1/2
Write migration tests
Coffee refill
pixel_pat0/1
Sketch new logo concepts

OBS overlays

Transparent. Real-time. Zero refresh.

Two browser sources — a timer and a task list — with transparent backgrounds for OBS. Updates stream over Server-Sent Events, so a !done in chat lands on screen instantly. Pick a circle or macOS-style squircle ring.

Set up the overlays

Theme Center

Eleven themes. Every pixel yours.

Start from a preset, then tune every color, font, size, and corner radius in a live editor. Or build the look of your whole channel from scratch.

18:24
@viewer
Default
18:24
@viewer
Liquid Glass
18:24
@viewer
Liquid Glass Dark
18:24
@viewer
Neon Cyberpunk
18:24
@viewer
Cozy Cottage
18:24
@viewer
Ocean Depths
18:24
@viewer
Sakura
18:24
@viewer
Retro Terminal
18:24
@viewer
Minimal Light
18:24
@viewer
Sunset
18:24
@viewer
Twitch Purple

What's in the box

Everything a focus stream needs.

Pomodoro timer

Configurable work, break, and long-break durations with automatic phase transitions and cycle tracking.

Twitch chat bot

Viewers manage tasks and mods drive the timer through chat — !task, !done, !timer, and friends.

OBS overlays

Transparent browser sources with real-time SSE updates. Circle or squircle progress rings.

Theme Center

Visual style editor with 11 presets. Customize every color, font, size, and spacing for both overlays.

Honest comparison

Why self-host Dirework?

Hosted task widgets are convenient until they're not. Dirework trades a one-time setup for full ownership.

FeatureDireworkHosted task widgetsGeneric timer bots
Pomodoro timer + overlay
Per-viewer task list
Real-time (no polling)
Self-hosted / own your data
Fully themeable overlays
Open source

Partial means "depends on the tool or your plan." See the full feature breakdown.

For self-hosters & devs

One image. One database.
Yours to fork.

A Next.js app, a tRPC API, and Drizzle on Postgres. Deploy with the Dockerfile, set six env vars, and you're live.

QUICK START

git clone https://github.com/mrdemonwolf/dirework.git
cd dirework
bun install
bun run db:start && bun run db:push
bun run dev   # web on :3001, docs on :4000

THE STACK

  • Next.js 16 (App Router, React 19, React Compiler)
  • tRPC v11 with SSE subscriptions for overlays
  • Better Auth — Twitch OAuth, 30-day sessions
  • Drizzle ORM on PostgreSQL 17
  • Docker + Coolify, output: standalone

Questions, answered

Anything else?

Short answers here. Longer ones live in the docs.

Do I need to host it myself?
Yes — Dirework is self-hosted, one instance per streamer. That's the trade for owning your data and never hitting a paywall. The deployment guide covers Docker and Coolify.
Does it work with anything other than Twitch?
Not today. Login and the chat bot are built on Twitch OAuth and IRC. Other platforms aren't supported yet.
Can viewers really edit the task list?
Each viewer manages their own tasks from chat — add, focus, complete, edit, remove. Broadcaster and mods get clear-all and per-user controls. See the chat commands.
How do the overlays update so fast?
Server-Sent Events over tRPC subscriptions. Task and timer writes emit events; the overlay listens and pushes fresh state — no polling, no flicker.
Is it really free?
Yes. Open source on GitHub. No premium tier, no telemetry.

More questions? Ask in Discord.

Start the timer.
Bring the whole chat.

Self-hosted · Open source · Built for co-working streams