Free and open source Apache-2.0

A day plan for one-person businesses and the AI agents that work for them.

Tasks, a calendar and reminders on your phone, your Mac and your Linux desktop, offline first. Your agents plan and finish work over MCP or the command line and ask you before a risky step, on a server you run yourself.

  • Free, with no paid plan
  • No account with us
  • Your data stays with you
Dayhand for macOS. On the left, Today: one overdue task, Send the October invoices; the task being worked on now, Write the proposal for the bakery website; and seven tasks for today. On the right, the details of Write the case study for the logo project: in progress, due today, labelled marketing, with two of three checklist items done. Dayhand for Android showing the same Today: a card that sums up the plan, with one overdue task, one approval request, one blocked task and one proposal, then the overdue invoices, the task being worked on now and the tasks for today with their times.
Dayhand for macOS and Android, with the same made-up plan.

One plan on every screen

Your phone, your Mac, your Linux desktop and your terminal show the same plan. Each keeps its own copy, works offline and catches up when your server can be reached.

Today on Android: a summary card of the plan, the overdue invoices with a To today button, the task being worked on now with where it stopped, and the tasks for today with their times.
Today. What is overdue, what you are on now and the rest of the day.
The board on Android with three tabs, To do 8, In progress 3 and Done 7. In progress shows the proposal for the bakery website marked Now, Update the pricing page at 16:00 and the case study for the logo project, each with its label.
Board. To do, in progress and done, with labels and the task you are on now.
The week calendar on Android for 19 to 25 October 2026. Tasks sit at their times as blocks; the finished ones carry a check mark, and today's column is shaded.
Calendar. A week and a day view, and a feed your calendar app can subscribe to.
Android
Today, the week and day calendar, the board, repeats, checklists, reminders and approvals. Starts without any server.
macOS
Today, quick add from the menu bar or a global shortcut, reminders, the morning summary, the trash and each task's history.
Linux
A Qt 6 app with Today, a quick add window for a key binding, a tray icon and desktop notifications. Follows Omarchy themes.
Terminal
dayhand ui shows Today, the board, the week and the trash full screen, with vim-style keys, in your terminal's colours.
iPhone and iPad In the works
Not out yet, so there is nothing to install or test. Until then the plan is on Android, macOS, Linux and the terminal.
$ dayhand
Today, Sat 24 Oct 2026 (Europe/London)
NOW  #7 Write the proposal for the bakery website
     next: The pricing table is next
OVERDUE (1)
  #6   [ ]  yesterday  Send the October invoices                  #billing
TODAY
  #8   [ ]  09:30      Review the agent's pull request #18        #dev 1/3
  #9   [ ]  11:00      Call the accountant about VAT              #admin
  #11  [~]  16:00      Update the pricing page                    #site
  #12  [ ]  17:00      Publish the October newsletter             #marketing
  #7   [~]             Write the proposal for the bakery website  #clients now
  #13  [ ]             Back up the server                         #ops ↻
  #14  [ ]             Answer the support emails                  #support
  #20  [~]             Write the case study for the logo project  #marketing 2/3
DONE (1)
  #10  [x]  12:00      Export the Q3 sales report                 #billing
The same plan in the terminal: dayhand alone prints Today.

The apps and dayhand ui speak English, Polish, German, Spanish, French, Brazilian Portuguese, Japanese and Simplified Chinese.

Built for agents, with you in charge

Any MCP client, or any agent that can run a command, works on the same plan you do. Here is one made-up day of that work.

Say what done means

Give a task acceptance criteria, a plan and a note before the work starts. The agent reads them over MCP or with dayhand show, ticks each criterion as it meets it and leaves the note where it stopped.

$ dayhand show 12
#12 Publish the October newsletter
status   todo
due      2026-10-24 17:00 (today)
labels   marketing
claimed  claude until 2026-10-24 19:01
id       m97akk9x3n5fd3j4fbdva7jf818gxt1v
acceptance:
  1. [x] Every link opens
  2. [x] The unsubscribe link works
  3. [ ] You approved the final text
plan:
  Draft it from this month's notes, check every link, then ask before sending
note:
  The draft is in newsletter-october.md.
One task as dayhand show prints it; the change history that follows is cut here.
  1. The task Update the pricing page on Android, in progress, with the line agent: claude works until 19:01, and its acceptance criteria, one of two met.
    Claim. claude holds this task until 19:01, so no other agent can change it. When the time runs out, anyone may take it; your own changes always go through.
  2. An approval request on Android: claude asks to send the October newsletter to the mailing list, which cannot be undone, with a deadline and two answers, Send now and Keep it as a draft.
    Ask. Before a step that cannot be undone, the agent asks and waits. You pick an answer; with none by the deadline, the request expires and the agent is told.
  3. The finished task Export the Q3 sales report on Android, with both acceptance criteria met and the proof of completion: three CSV files are in reports/q3 and the totals match the bank statement, with two passed checks.
    Prove. A task with criteria is done only when they are met and the agent says what it did, with named checks such as totals=pass.

You set the rules

One switch pauses every agent. A policy for each agent key allows, asks for or denies each tool, and work an agent proposes waits in an inbox until you accept, merge or reject it. A health card above Today shows what needs a look.

The phone checks for new approval requests about every 15 minutes and shows them as a notification. Dayhand uses no push service, so nothing sits between your server and your phone.

An Android notification from Dayhand: claude asks for your approval, Send the October newsletter to the mailing list. The Agents screen on Android: the Pause agents switch, one request waiting for you, one proposal from claude, and tool policies that deny delete_task to bookkeeper and claude and ask before claude completes a task.

See who did what

Every person and every agent key signs its changes, so an agent's edits stand out in the task history and the activity log, and dayhand log --by agent lists them in the terminal. Revoke a key and that agent is out.

Dayhand for macOS with the history of Write the case study for the logo project, newest first: the agent claude moved it to in progress, added a note, ticked two checklist items and claimed it, after you created it from the command line.

Connect an agent

The server speaks MCP at /mcp. Any MCP client connects with the address and an Authorization: Bearer header; for Claude Code it is one command. The Claude apps connect as a custom connector with OAuth, and you approve each connection on your phone.

Agents that run shell commands use dayhand. With --json it prints exactly what the MCP tools return, and a ready Agent Skill teaches an agent the commands.

AGENT_KEY=$(dayhand key create claude --scope write --json | jq -r .key)
claude mcp add --transport http dayhand http://127.0.0.1:3211/mcp \
  --header "Authorization: Bearer $AGENT_KEY"

Dayhand records your decisions and the agents' work in the plan. It cannot stop what an agent does outside Dayhand.

Your plan, on your own server

There is no Dayhand cloud and no server address built into the apps. You run the server, with one command, or skip it: the apps also work on their own.

  1. Start a server on this computer

    On macOS or Linux, with the dayhand command from Download, which carries the server code (backend/), so there is no repository to clone. The first run downloads the Convex local backend once, signs dayhand in and prints a pairing code. Data and keys stay in a private folder.

    dayhand server start
  2. Connect your phone

    In the app, choose Settings, Server, Connect to my server, and scan the code. Release builds connect only over HTTPS, so a server on your computer needs tailscale serve in front of it.

    dayhand pair
  3. Or use your own Convex account

    This deploys to your free Convex account and gives a public HTTPS address, which the Claude apps and a phone away from home need. It works from Windows too, and the Free plan costs nothing.

    dayhand server deploy

No server at all? The Android app starts with an empty plan or sample data and keeps everything on the phone. Android backups are off for Dayhand, so keep a backup file. Costs, backups, updates and Tailscale: the deployment guide.

Download

Pre-release The apps have no published release yet: they build from the source today, and ready-made downloads are marked Coming soon.

The build commands for the apps run in a copy of the repository; the install guide shows how to get one and what each app needs.

Free and open source

Dayhand is licensed under the Apache License 2.0. The apps, the server, the command line, the documentation and this site live in one public repository, github.com/maiarowsky/dayhand, and you may use them for your business, change them and share them.

There is no paid plan and no hosted service, and no account to create. There is nothing to sell you and nothing that only paying users get.

Contributions are accepted under the Developer Certificate of Origin (how to contribute). Security problems go privately, never in an issue (security policy).

The Convex local backend that dayhand server start downloads on macOS and Linux is not part of Dayhand: it is source-available under FSL-1.1-Apache-2.0, fetched at a pinned version with a verified checksum.

Questions

Is Dayhand really free?

Yes. Every app, the server and the command line are free, with no paid plan and no trial. A server on your computer costs nothing, and so does a server on Convex's Free plan; its limits are in the deployment guide.

Why is it free?

Dayhand is a personal project with no hosted service, so there is nothing to bill for. It is shared under the Apache License 2.0, and support is what the issues on GitHub offer: bugs you can reproduce and ideas, with no promise of a reply time.

Do I need an account?

Not with us; there is no Dayhand account. A server on your computer needs no account. To reach it from your phone you put Tailscale in front of it, which has its own sign-in, and dayhand server deploy asks you to log in to your own Convex account.

Where does my data live?

On your devices and on the server you chose: your computer or your own Convex account. Each app keeps a copy for working offline. Nothing goes to us, because there is no server of ours to send it to.

Which agents can use it?

Any MCP client, with the server address and an Authorization: Bearer header; Claude Code is one command. The Claude apps connect as a custom connector with OAuth, which you approve on the phone. Agents that run shell commands can use dayhand, and a ready Agent Skill teaches them how.

Can an agent do something I did not allow?

Inside Dayhand, a policy per agent key allows, asks for or denies each tool, risky steps wait for your answer, and one switch pauses every agent. Dayhand cannot stop what an agent does outside Dayhand.

Does it work offline?

Yes. The Android, macOS and Linux apps keep the plan on the device and send changes to the server, in order, when it can be reached.

Is there an app for iPhone or Windows?

The iPhone app is in the works and not out yet. On Windows, the dayhand command line works with a server on your own Convex account; there is no desktop app.

When can I download a ready-made app?

The apps have no published release yet and there is no date. The signed Android build is prepared; until it is out, the apps build from the source as shown under Download, beside the commands that install the command line.

Can I see my tasks in Google Calendar?

Yes, through a read-only calendar feed that any calendar app can subscribe to. Changes are made in Dayhand.

Why do some names still say helm?

Dayhand was called Helm until backend 0.9.0 and CLI 0.10.0, and the repository moved from maiarowsky/helm to maiarowsky/dayhand; old links redirect. The old hlm command still works with a warning, and a few names stored in data stay as they were: what changed.

Where is the full documentation?

In the documentation: installing, the command line, MCP, the REST API, webhooks, the calendar feed and running your own server.

Plan the day with a spare pair of hands.

Free and open source, on your own server.