Skip to content

Focus together, stream better.

A co-working Pomodoro timer and shared task list for your Twitch stream. You run the timer, your chat runs the tasks, and OBS shows it all — on your own Cloudflare account, no SaaS in the middle.

One Dirework per streamer · Free plan-friendly · No lock-in

Open source Your data, your Cloudflare Discord community
01Who 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

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

Getting started

For viewers

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

Chat commands

For self-hosters

One Cloudflare account, two workers, one D1 database. Better Auth, tRPC, Drizzle. No server to babysit, no accounts to manage but your own.

Deployment guide
02Twitch 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 every reply is yours to reword. The bot runs from a private browser page you keep open in OBS or a pinned tab — no extra software to run.

Full command reference
#stream chat
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
Focus
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
03Overlays & themes

Transparent. Live. Zero refresh.

Two transparent browser sources — a timer and a task list — for OBS. Each checks for changes every few seconds, so a !done in chat lands on screen in about three seconds — and the countdown ticks smoothly on the overlay itself. Start from one of six presets and tune every color, font, size, and corner radius — pick a theme to preview it live.

Set up the overlays
04What'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 that update within seconds. Circle or squircle progress rings and a smooth, always-live countdown.

Theme Center

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

05Honest comparison

Why self-host Dirework?

Hosted task widgets are convenient until they're not. Dirework trades a one-time setup for full ownership — on Cloudflare's free plan.

FeatureDireworkSelf-hosted botsFirebot · Mix It Up · Streamer.botHosted platformsStreamElements · Streamlabs
Pomodoro + per-viewer task list, built in
Live overlays, zero refresh
Runs serverless — no always-on PC
Setup on Mac & Linux, not Windows-only
Own your data & instance
Free to run
Fully themeable overlays
Open source

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

Not sold on hosting a whole app? Honest alternatives worth a look: Firebot and Mix It Up (all-in-one bots), or single-purpose OBS overlays like jujoco's task list and unfloned's pomodoro.

06For self-hosters & devs

Two workers. One database.
Yours to fork.

A Next.js app and a Hono API on Cloudflare Workers, with Drizzle on D1. Deploy with Alchemy, set five secrets, and you're live on the free plan.

Quick start
git clone https://github.com/mrdemonwolf/dirework.git
cd dirework
bun install
bun run dev   # web :3001 · api :3000 · docs :4000
The stack
  • Next.js 16 (App Router, React 19) on Workers via OpenNext
  • Hono API worker + tRPC v11 (overlays poll every 3s)
  • Better Auth — Twitch OAuth, 30-day sessions
  • Drizzle ORM on Cloudflare D1 (SQLite)
  • Alchemy IaC + GitHub Actions deploy
07Questions, 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 Cloudflare Workers + D1 via Alchemy — it runs happily on the free plan.
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 stay in sync?
The overlays check for changes every few seconds, and the countdown ticks on the overlay itself from the timer's end time — so a !done lands within a few seconds with no flicker. There's no fragile real-time connection to babysit, which is exactly what keeps it on Cloudflare's free plan.
Is it really free?
Yes. Open source on GitHub, and it fits inside Cloudflare's free Workers + D1 tiers. 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