Offhand

Offhand: Voice To Do & Notes

Your daily planner powered by on-device AI

No account, no internet needed.

Available for macOS, iOS

Offhand for Mac

Add a task from any app with ⌥Space.

Press ⌥Space in any app, say what you need to do, and carry on.

Offhand File Edit View Window Help Wed 16 Sep  9:41
About Offhand Check for Updates… Settings…⌘, Hide Offhand⌘H Quit Offhand⌘Q
Today Add by voice ⌥ Space

Today

Wednesday, September 16 · 89 open tasks

Release3 Team3

Post the standup summary WeekdaysTeam
Cut the 2.3 release build Release

Morning12

Rebase the auth branch this morning
Fix the flaky login test this morning

AfternoonNOW2

Bump the dependency pins this afternoonRelease
Triage the new crash reports this afternoonTeam

Tonight3

Review Dana's pull request at eight8:00 PMTeam
Watch the WWDC session replay tonight
Today 9 open tasks

Release3 Team3

Post the standup summaryWeekdays
Cut the 2.3 release buildcodex · workingcodex · finished

Morning2

Rebase the auth branch this morning
Fix the flaky login test this morningclaude · workingclaude · finished

Tonight3

Drag a task into any app

Claude Example

Fix the flaky login test this morningIt passes locally and fails on CI, always the same one.

Found it: a timeout CI never met. Pushed, and marked for your review.

Reply to Claude… Fix the flaky login test this morningIt passes locally and fails on CI, always the same one.
codex — offhand — 80×24

~/work/offhand codex

› Cut the 2.3 release buildTag it off main once the dependency pins are in, and put the changelog in the release doc.

● read the task from offhand

● cut 2.3 · handed back for review

Fix the flaky login test this morning
Cut the 2.3 release build

What do you need to do? Rebase the auth branch this morning, it is three commits behind main and the merge queue keeps rejecting it

0:00 Listening… 1 task on Today Cancel Save

I need to work on the Kubernetti’sKubernetes deploy that keeps failing the retry test. GrifanaGrafana shows the pods restarting in a loop. Data DogDatadog is alerting on every rollout, and I think it is the memory limit we dropped.

0:19 Reading it again… Three words changed Cancel Save

Voice capture with ⌥Space. The panel opens over whatever has the screen.

Drag a task into any app. The whole task lands, unsent.

A second model improves the transcript. Off until you fetch the model.

On-device AI, stored on this Mac. Its one request is the update check, and it asks first.

How the Mac app works

Speak it, drag it, hand it to an agent.

Say it

Press ⌥Space in any app. The panel opens over what you were doing, and you do not leave it.

Drag it where the work is

Drop a card into anything that takes text and the task arrives with the note it came out of.

Hand it to an agent

Two tools read the list, one writes where a task got to. Nothing runs until you set it up.

Everything stays on your device.

Transcription, extraction, history and recordings stay where you spoke. How to check it.

  • Transcription by SpeechAnalyzer, on device
  • Task extraction by Foundation Models, on device
  • Second reading by Whisper or Qwen3-ASR, on the Mac if you fetch it
  • No account, and nothing to sign in to
  • No analytics, no server, no third-party SDK

How it works

Say it once. It is on both devices.

  1. 1 · Capture

    Speak the way you normally would.

    The Action Button on an iPhone, ⌥Space on a Mac.

    “Book the flights at 9 this morning, chase up the invoice at 2, get eggs and milk at 4, then grab something for dinner at 6.”

  2. 2 · Save

    A model on your device reads it.

    Transcription and extraction both run where you spoke. Nothing is uploaded.

  3. 3 · Review

    Four tasks, each with the time you said.

    Filed under Morning, Afternoon and Tonight.

    • Book the flights9:00 AM
    • Chase up the invoice2:00 PM
    • Get eggs and milk4:00 PM
    • Grab something for dinner6:00 PM

Key features

What the app does.

Times from your words

“Tomorrow at nine” becomes a task on tomorrow at 9:00, and it alerts you at nine.

Nothing goes in your calendar unless you switch the Calendar mirror on.

Sample demo

“Send the proposal tomorrow at 3.”

Send the proposalTomorrow · 3:00 PMWork

On-device transcription

SpeechAnalyzer runs on the iPhone. No upload, no queue.

Four parts of a day

Morning, Afternoon, Tonight, Anytime — not a calendar to maintain.

Move it to another day

Hold a card at the edge of the screen and the day changes underneath it.

Transcript and recording kept

Every capture keeps its transcript and its recording.

Notes, not tasks

A thought with nothing to do stays a note, not a task.

Send it to another app

Drag a card into another app, or continue in Shortcuts. Nothing leaves on its own.

Say it Offhand.

Download on the App Store

Free, with an optional Pro subscription.