Task control roomRuns on your hardware

Work that
wakes up
finished.

One queue for your work and your agents’ work. Write a task down, talk to it while it runs, and see exactly what shipped.

The app has no public pages. This tour uses dummy data. A real queue lives on your machine and stays there.

Todoboy’s PSP-themed dashboard showing a running task, queued work, a personal reminder, and model budgets using dummy data
01 The real interface · dummy queue

The premise

A place where work
changes state.

A note becomes queued. Queued becomes running. A question becomes a reply. A commit becomes a release. A finished task becomes history you can search.

Todoboy keeps that whole path in one place, from the first note to the live check.

01

Drop it once.

Write the task, attach files, pick a model and a time. The queue takes it from there.

02

Stay in context.

Every running task is a conversation. Questions, replies, files, and progress stay on its thread.

03

Trust the finish.

A change ships through tests, a reviewed commit, a deploy, and a live check. Then it counts as done.

The actual product

See the loop
close.

These clips are the real interface running on a demo database.

01

Queue → working

One list for all of it.

Agent tasks and personal reminders share the queue. The dashboard shows what’s running, what’s waiting, and what it costs.

  • Run now, on a schedule, or when the next usage window opens
  • Assign a task to the agent or to yourself
  • Per-task model and reasoning effort
6 sec loopPSP / XMB theme
Todoboy’s Threads workspace with four open agent tasks and a selected task conversation using dummy data
Your messages and the live worker trace share one timeline.
02

Thread → answer

Talk to the work while it is happening.

A running task is a conversation. Watch the live worker stream, answer its questions, dictate a reply, or pick the thread back up after a restart.

“Replies resume waiting tasks.”
03

Conversation → momentum

Switch tasks without losing the sentence.

Per-task drafts, thread selection, and the conversation rail survive reconnects and reloads.

Follow the full lifecycle
7 sec loopreal interaction
The Todoboy queue on a phone with five dummy tasks and the mobile navigation bar

The queue comes with you

Answer from
the pocket.

Todoboy installs as a PWA. Questions land on your phone as push notifications, so a blocked task gets its answer from wherever you are.

Web Push
Questions, failures, replies, and finished work
Voice mode
Dictate replies and hear new messages read aloud
Built in
The server implements push itself; payloads are encrypted end to end

Five verbs, one history

From loose end
to live.

  1. 01

    Capture

    Tell it what matters.

    Add a task from the dashboard or from chat. Attach files, pick timing, assignee, model, and reasoning level.

  2. 02

    Dispatch

    Let capacity open.

    Instant work jumps the line. Schedules and routines wake on time. Provider caps keep the fleet sane.

  3. 03

    Converse

    Keep the thread durable.

    Progress, questions, replies, attachments, and the live worker trace stay attached to their task.

  4. 04

    Release

    Prove it shipped.

    A website change passes its tests, merges at the reviewed commit, deploys from a clean checkout, and gets checked live.

  5. 05

    Remember

    Find the result later.

    History, a global changelog, release receipts, and the artifact shelf keep every result findable.

Bring your own agents

The CLIs you
already pay for.

Todoboy holds no API keys and calls no model endpoints. Each task launches a real coding-agent process in its own git worktree, on your subscriptions and your credit.

Provider · Anthropic

claude -p --model <id>

Claude Code

Headless mode on your Claude subscription. The workhorse.

  • haiku
  • sonnet
  • opus
  • fable

Provider · OpenAI

codex exec -m <id>

Codex CLI

Your ChatGPT account, with a per-task reasoning effort dial.

  • sol
  • terra
  • luna
  • 5.5

Provider · OpenRouter

ANTHROPIC_BASE_URL=… claude -p

Open models

The Claude CLI pointed at OpenRouter credit. Same harness, same rules.

  • deepseek
  • qwen
  • kimi
  • glm
  • grok
models.json
One file maps each shortname to an exact model id. Adopting a new model is a one-line edit; the picker and the dispatcher follow.
Concurrency caps
A global cap plus one per provider. The dispatcher fills free slots and leaves the rest queued.
Next window
Subscriptions meter usage in five-hour windows. Schedule a heavy task for the next window and it starts on a fresh budget, timed off the provider’s own reset clock.
Usage meter
Burn rate and cost per window, your real subscription quota, and remaining OpenRouter credit, side by side.
Session resume
Every dispatch records its CLI session id. Reply to a waiting task and that exact session continues. Any run in history can be reopened live in a terminal.

The queue can text

Message the
control room.

Chatboy is our end-to-end encrypted browser chat. Pair it with Todoboy and the queue gets a phone number, more or less: you text it work, it texts back results.

the pricing page footer overlaps the form on mobile

Task 214 created · linked to this chat

Task 214: which width? It renders clean for me at 390px.

iphone SE, 375

READY: footer unpinned below 400px, fix verified live.

Made-up conversation. The mechanics are real.

Pairing is one code.

Todoboy prints a one-time code and Chatboy stores it in its encrypted vault. The code derives two private channels: your conversation and a task mailbox. Rotate it and both move; the old pairing is dead.

The relay reads nothing.

Chatboy’s server stores ciphertext, full stop. Every accepted message also carries a cryptographic proof that it came from your pairing, so any of your linked devices can write.

Small talk stays small.

A bounded model turn reads each message and either replies in a few seconds or takes exactly one action: create a task, update a linked task, or answer a task’s question. It holds no keys, no task authority, and no tools on your machine. Todoboy validates the action and executes it itself.

Work reports back.

Linked tasks return progress, questions, final summaries, and inline images to the same thread. Reactions mark the outcome: 👍 answered, 🔍 looked it up, ✅ task created.

Your words carry.

When a message updates a task, the worker reads your original text. Nothing paraphrases you.

More than a queue

The control room
has rooms.

Projects

See code and production in the same frame.

Repo state, dirty files, ahead/behind counts, release receipts, and deploy lag for every registered project.

Recurring

Routines that respect the calendar.

Intervals, dailies, weeklies, time zones, previews, pause, and run-now.

Usage

See the burn as it happens.

Five-hour estimates, per-model breakdowns, subscription windows, and OpenRouter credit.

Constellation

Watch the worker fleet move.

Research, build, test, deploy, conversation, and waiting states on a live map.

Artifacts

Finished output gets a shelf.

Reports, documents, images, and interactive pages stay grouped, previewable, and shareable.

Private by construction

Your queue
stays home.

todo.boy.dev is a static tour with demo media. A running Todoboy is one process and one SQLite file on a machine you own, bound to loopback, with no public routes at all.

Public edgeThis page. Static files and demo media.

Your machineQueue, threads, and attachments in local SQLite

Loopback bindThe server never listens on a public interface

That’s Todoboy

Put the next loose end
somewhere it can finish.