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 add, plan and finish work over MCP or the command line, on a server you run yourself, and every change says who made it.
Free and open source under Apache-2.0. No account and no hosted service.
$ DAYHAND_API_KEY=$AGENT_KEY dayhand add "Draft the VAT reply" --due "today 16:00" --remind 30
Added:
#3 [ ] today 16:00 Draft the VAT reply
$ dayhand
Today, Sat 24 Oct 2026 (Europe/London)
OVERDUE (1)
#1 [ ] yesterday Send the invoice to Anna #work
TODAY
#2 [ ] 14:00 Call the accountant #admin
#3 [ ] 16:00 Draft the VAT reply
What Dayhand does
One plan for the day, kept by you and by the agents you let in.
-
Today and quick add
Overdue tasks, the one you are working on now and the rest of the day on one screen. Quick add reads dates like
fri 2pmorin 3 days. -
Calendar
Week and day views on the phone, and a read-only feed that shows dated tasks in Google Calendar, Apple Calendar or any app that subscribes by URL.
-
Reminders
Reminders and a morning summary on Android, macOS and Linux, worked out on the device, so they arrive without a connection.
-
Planning
A board, repeating tasks, checklists and labels, dependencies with a blocked reason, and a backup file you keep.
-
Agents with criteria and proof
Give a task acceptance criteria and a plan. An agent claims it, and it is done only when the criteria are met and the agent says what it did.
-
Approvals
Before a risky step an agent asks, and you pick an answer on the phone. One switch pauses every agent; a policy per key allows, asks for or denies each tool.
-
Who did what
Each person and each agent key signs its changes. The activity log and the task history show who changed what, so an agent's edits stand out.
-
Your own server
No shared cloud. One command starts a server on macOS or Linux, or deploys one to your own Convex account on any supported platform. The apps also work with no server at all.
Today, wherever you are
The same plan on every screen you use, each one working offline and catching up when the server can be reached.
- Android
- Today, the week and day calendar, the board, task details with repeats, checklists and reminders. Starts without any server.
- macOS
- Today, quick add from the menu bar or a global shortcut, reminders and the morning summary.
- 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 uishows Today, the board, the week and the trash full screen, with vim-style keys, in your terminal's colours.
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 runs commands can work on the plan. Here is one task from start to finish.
-
Give the agent its own key
Each agent gets a key with a scope. Its changes are signed with its name, and you can revoke the key at any time.
-
Connect it
The server speaks MCP at
/mcp. Thedayhandcommand line does the same, and with--jsonit prints exactly what the MCP tools return. -
Claim, work, prove
The agent claims the task so other agents leave it alone, marks the criteria it met and finishes with a summary and checks.
-
You review and decide
Answer approval requests on the phone, accept or reject proposed work in an inbox, or pause every agent with one switch.
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"
TASK_ID=$(dayhand add "Send the Q4 invoices" --due "today 17:00" --accept "One PDF per client" --plan "Export, then check the totals" --json | jq -er .id)
DAYHAND_API_KEY=$AGENT_KEY dayhand claim "$TASK_ID" --minutes 30
DAYHAND_API_KEY=$AGENT_KEY dayhand criteria "$TASK_ID" --met all
DAYHAND_API_KEY=$AGENT_KEY dayhand done "$TASK_ID" --summary "3 PDFs sent" --check totals=pass
dayhand log --by agent
Dayhand records your decisions and the agents' work in the plan. It cannot stop what an agent does outside Dayhand.
Install
No release is published yet. Everything below builds from the source today; the rest is marked as coming soon.
-
Build the command line
You need Node.js 22.12 or newer and git.
npm linkputsdayhandand its short namedhon your PATH.git clone https://github.com/maiarowsky/helm.git dayhand cd dayhand/cli && npm ci --ignore-scripts && npm run build && npm link && cd .. -
Start a local server (macOS and Linux only)
The first run downloads the Convex local backend once, signs
dayhandin and prints a pairing code for the phone.dayhand server startOn Windows, use
dayhand server deployinstead to set up a server on your own Convex account. It also signsdayhandin and prints a pairing code; see the deployment guide. -
Plan your day
In a second terminal in the same folder:
dayhand add "Call the accountant" --due "today 14:00" -l admin dayhand
Apps
-
Android
Coming soon Signed APK on GitHub Releases
Coming soon Google Play
Today you can build the app yourself.
-
macOS
From source
(cd macos && scripts/build-app.sh) open macos/dist/Dayhand.appComing soon Signed download
-
Linux
From source
(cd packaging/arch && makepkg -si)Other distributions build with CMake: Linux guide. Not on the AUR.
-
Terminal and CLI
From source As in step 1 above
Coming soon npm
Coming soon Homebrew
Run these from the folder you cloned in step 1. There is no iPhone app yet.
Your plan stays on your server
Dayhand has no shared server to sign up for, and the apps have no built-in server address.
-
On this computer (macOS and Linux only)
dayhand server startruns a server on your machine. Data and keys stay in a private folder. A phone reaches it over HTTPS throughtailscale serve. -
On your own Convex account
dayhand server deploydeploys to your free Convex account and gives a public HTTPS address, which the Claude apps and a phone away from home need. Nothing to pay on the Free plan. -
On the phone only
The Android app works with no server, with sample data or an empty plan. Android backups are off for Dayhand, so keep a backup file.
The Android app has no analytics, no crash reporting and no other outside services. This site sets no cookies and loads nothing from other servers.
Open source
Dayhand is licensed under the Apache License 2.0. The code, the apps and the documentation live in one repository: github.com/maiarowsky/helm.
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
source-available under FSL-1.1-Apache-2.0, at a pinned version with a verified checksum.
Questions
Is there a hosted version or an account to create?
No. You run the server yourself, on your computer or on your own Convex account, or use the apps with no server. Dayhand is a personal project with no hosted service.
What does it cost?
Dayhand is free. A server on your computer costs nothing, and so does Convex's Free plan; its limits are in the deployment guide.
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.
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.
Is there an app for iPhone or Windows?
Not yet. The iPhone app is not started. On Windows, the dayhand command line works with a
server on your own Convex account via dayhand server deploy; there is no desktop app.
Why is the repository called helm?
Dayhand was called Helm until backend 0.9.0 and CLI 0.10.0. The old hlm command still
works with a warning; what
changed.