Get started
Install
| Piece | Runs on | Install |
|---|---|---|
Command line (dayhand, dh, dayhand ui) |
macOS, Linux, Windows; Node.js 22.12+ | npm i -g dayhand or brew install maiarowsky/tap/dayhand |
| Your own server | macOS and Linux (on this computer), or your Convex account | dayhand server start or dayhand server deploy |
| Android | Android 8.0 or newer | build it yourself; coming soon: signed APK on GitHub Releases, Google Play |
| macOS | macOS 13 or newer; built with Xcode 26 | from source; coming soon: signed, notarized download |
| Linux | Qt 6 desktops; a package for Arch Linux and Omarchy | from source |
The iPhone and iPad app is in development and has nothing to install yet. There is no Windows desktop app; on Windows the command line works with a server on your own Convex account.
Command line: dayhand
You need Node.js 22.12 or newer, on macOS, Linux or Windows. Install it with npm:
npm i -g dayhand
or with Homebrew on macOS and Linux (Homebrew brings Node.js along):
brew install maiarowsky/tap/dayhand
or try it without installing: npx dayhand --help.
dayhandanddh(the same command, shorter) are then on your PATH. On Debian and Ubuntu, debhelper has adhcommand of its own; typedayhandthere.- Update:
npm i -g dayhand@latestorbrew upgrade dayhand.dayhand versionshows the CLI and server versions and whether they work together. - Remove:
npm rm -g dayhandorbrew uninstall dayhand. - Shell completion for bash, zsh, fish and PowerShell:
dayhand help completion(Homebrew sets up bash, zsh and fish by itself). - Manual pages:
man dayhandandman dh.
Next, sign dayhand in to a server. dayhand server start and dayhand server deploy do it by
themselves; for a server that already runs, dayhand login --url https://<deployment>.convex.site
asks for a key (command reference).
From source
For contributors, and to try changes that are not released yet. You also need git:
git clone https://github.com/maiarowsky/dayhand.git
cd dayhand && (cd cli && npm ci --ignore-scripts && npm run build && npm link)
npm linkputs this checkout’sdayhandanddhon your PATH;npm unlink -g dayhandremoves the link. Where that needs administrator rights, runnode cli/dist/bin/dayhand.jsfrom the checkout instead.--ignore-scriptskeeps the install scripts of dependencies from running. The packages come from the lockfile.- Update:
git pull, thencd cli && npm ci --ignore-scripts && npm run build. - Manual pages from the checkout:
man ./man/dayhand.1.
Your own server
The server is the backend/ folder of the repository, deployed to Convex.
The dayhand package carries that folder, so the command line sets the server up with no clone of the
repository and nothing to build:
- On this computer (macOS or Linux, x64 or arm64):
dayhand server startdownloads the Convex local backend once and runs your server until Ctrl+C. No account needed. - On your own free Convex account (from macOS, Linux or Windows):
dayhand server deploylogs in to Convex in the browser and deploys. The server gets a public HTTPS address.
Backend selection, the writable copy’s location, and keeping keys and data across updates are covered in Your own server, together with costs, backups and updates. The apps also work with no server at all, each on its own device.
Android
Android 8.0 (API 26) or newer.
Coming soon: a signed APK on GitHub Releases and Google Play. The release build is prepared and signed with the project’s key, but no release is published yet.
Build it yourself with JDK 17 or newer and the Android SDK (platform 36). With a phone connected over USB with debugging on, or an emulator running, in the checkout:
cd android
./gradlew :app:installDebug
./gradlew :app:assembleDebug makes the APK (app/build/outputs/apk/debug/app-debug.apk) without
installing it. A debug build can also talk to a server over plain HTTP, which helps with a server on
your computer during development; release builds use HTTPS only. A release build needs a signing key of
your own (DAYHAND_RELEASE_KEYSTORE): see android/README.md. Keep
that key, because every update must be signed with the same one.
Then open Dayhand and choose On this phone only or Connect to my server: Android.
macOS
macOS 13 or newer. Building needs Xcode 26 or later.
(cd macos && scripts/build-app.sh)
open macos/dist/Dayhand.app
The app is built for the Mac that built it: it is not signed with a Developer ID or notarized, so
other Macs would refuse it. Updates are built in (Sparkle) but stay off in local builds, which say
so in Settings → Updates; update a local build by pulling and building again. Then connect it with a
code from dayhand pair, or choose Not now: macOS.
Coming soon: a signed, notarized download that updates itself.
Linux and Omarchy
A Qt 6 app, dayhand-qt. On Arch Linux or Omarchy, build and install the package from the checkout
(not from the AUR, where there is no package):
cd packaging/arch
makepkg -si
It builds linux/, runs its tests (they need weston and dbus; --nocheck skips them) and
installs dayhand-qt with its launcher entry and icon. It depends on qt6-base, qt6-declarative,
qt6-svg, qt6-wayland and libsecret; the sign-in is kept by a Secret Service such as
gnome-keyring. For Japanese and Chinese, install a CJK font such as noto-fonts-cjk.
On other distributions, build it with CMake 3.21+ and Ninja against Qt 6 (Base, Declarative, SVG, Tools, Wayland) and libsecret, from your distribution’s packages:
cmake -S linux -B linux/build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build linux/build
ctest --test-dir linux/build --output-on-failure
sudo cmake --install linux/build
The install step puts dayhand-qt, its launcher entry, the AppStream metadata and the icon under
/usr/local. Setting it up on the desktop (a key for quick add, the tray, themes): Linux and
Omarchy. Only Arch Linux builds are tested in the project; the CMake path on other
distributions is not.
dayhand ui, the terminal app, comes with the command line, on Linux as
everywhere else; dayhand ui on Omarchy makes it an app of its own.
This page is docs/install.md in the repository, where
you can suggest a change.