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
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 startedFor 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 commandsFor 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 guideChat 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.
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.
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.
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.
| Feature | Dirework | Self-hosted botsFirebot · Mix It Up · Streamer.bot | Hosted 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.
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.
git clone https://github.com/mrdemonwolf/dirework.git cd dirework bun install bun run dev # web :3001 · api :3000 · docs :4000
- 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
Anything else?
Short answers here. Longer ones live in the docs.
Do I need to host it myself?
Does it work with anything other than Twitch?
Can viewers really edit the task list?
How do the overlays stay in sync?
Is it really free?
More questions? Ask in Discord.
Start the timer.
Bring the whole chat.
Self-hosted · Open source · Built for co-working streams