Self-hosted task list · one person

Focus

home, projects and reminders in one list

A home-built replacement for Todoist. It runs on a small server at home, reachable only on a private network, and it talks to the things around it: a dashboard, GitHub, Claude Code and a smart ring. Reminders arrive on the phone from a push server that is also self-hosted.

Where it is now▮ owner's turn
In daily use
Live since the first deploy in October 2026. Nightly backups, with a restore test that passed on 10-26-2026.
Now: M1 · Two weeks of daily use
Used every day for two weeks with no code change. The proof is a dated two-week range with zero fixes.
Next build: the focus board
A focus board for projects, a new look, and a button that hands an issue to Claude (issue #27).
Worth gate: 2.9 · GO
Scored 10-26-2026: use 5, value 4, setup 2, upkeep 2, risk 3.
Quick Add with the line 'Buy milk tomorrow 5pm #Groceries p1 @errand': the date, priority, list, label and reminder are each picked out below it.
Quick Add. One line, read by plain code: date and time, list, priority, label and a reminder. The app as it looks today, before the Focus redesign.

What it does

01
  • Two sidesHome holds the inbox, groceries and house jobs. Projects holds ideas and one list per project, each linked to its GitHub repo.
  • Quick AddTodoist-style syntax, parsed by plain code with no AI in the app: #Project /Section @label p1 tomorrow 5pm every mon !30m. @1pm is a time, not a label.
  • Ring and Claude CodeA built-in MCP server. The smart ring's agent adds tasks with a double click-hold, and Claude Code reads and writes the same lists.
  • "Claude, remind me when..."Tag a task @claude. A sidecar runs Claude once to write a small watch rule, then plain code checks it every hour and pings the phone when it comes true. A hundred watches cost nothing to keep.
  • PhoneAn installable web app with a bottom bar, an Upcoming strip, search and filters, plus a home-screen widget for today's tasks.
  • New devicesPair with the six-digit code from an authenticator app. Each device gets its own key that can be revoked on its own.
  • Projects feedEach project carries a few facts (state, summary, next step). A read-only feed lists only the ones marked public, for the project website.
  • BackupsEvery night, kept for 14 days. Each one restores itself into a scratch copy to check it, and a separate restore test proves the newest one comes back.

The app today

02
A project as a board with three columns: To do, Doing and Review, one task in each.
Board view. A project's sections as columns; the header shows the linked repo. Test data from the automated suite.
A task open on a phone: due date box, priority buttons P1 to P4, and the label @errand.
A task on the phone. Due date in plain words, priority, labels, and a line that says when it will remind you.

Coming next: the focus board

03

The projects side becomes a focus board, with a new look. Designed and approved on 10-31-2026; not built yet.

Browse

Projects grouped under five headers: Worlds, Games, Stories, Labs and Tools. Up to three focus projects each, with a progress ring and the next issue.

Honest progress

Progress comes from each repo's GitHub milestones: closed issues out of all issues. Repos without milestones say "issues closed" instead.

Hand to Claude

One button on an issue starts a background run in its own branch, which opens a pull request and pings the phone when done.

The new look is called "ember ledger": coal, sage and mist from the phone's home screen, ember only where it is your turn, one hairline, DM Mono and Jura. This site uses it.

Can I use it?

04

Not as a service. Focus is built for one person and runs on his own server; the code is private. This site is the build log and the milestones, so the work is visible.