Releases: maxboettinger/omnifocus-cli
Release list
v0.2.0
Added
- AI features through OpenRouter (
OPENROUTER_API_KEY, optional
~/.config/omnifocus-cli/config.jsonwithai.apiKey/ai.model,--modelper run,
$OF_AI_MODELglobally; default modelgoogle/gemini-3.8-flash). Nothing else in the CLI
needs a key. task breakdown <ref>(of t b): splits a task into granular, AuDHD-friendly nano
subtasks using structured output, with full context (parents, project, existing and
completed subtasks, siblings, tags) and optional--contexttext. Human mode previews the
tree and loops apply / revise-with-feedback / quit; applying creates the whole nested tree,
estimates, tags and sequential/parallel flags in one OmniFocus round-trip.--jsonprints
the plan and changes nothing;--json --applyapplies and reports per item.task why [ref](of t w): an interactive "five whys" coaching session about an avoided
task, streamed turn by turn, ending only on Esc, Ctrl-C, Ctrl-D or/quit.- System prompts are Markdown files in
src/prompts/, embedded in the binary and
overridable per user via~/.config/omnifocus-cli/prompts/<name>.mdor$OF_PROMPTS_DIR. - Bridge ops
task.contextandtask.createTree(also accepts aprojectIdtarget). - Status cues in human output: completed (
✓), dropped (⊘), blocked (‖) and deferred
(→) tasks are marked with a glyph, and finished ones have their name dimmed and struck
through. Active items render exactly as before.task showstates the status on its own
line under the name, marking one held only through the project or parent as
(inherited);project list/project showcarry the same glyphs (on hold →‖). The
glyph rather than the color carries the meaning, so the cue survivesNO_COLOR. - Task records now report
dropped,effectivelyCompletedandeffectivelyDropped. A task
inside a done or dropped project keeps its own flags false, so until now it listed as if
it were still actionable — in--jsontoo. of fcas a shortcut forof forecast. Standalone root commands can now carry a short
alias of their own;fcrather thanfbecausefis thefoldernoun.task search --id <id>looks a single task up by id instead of by keyword, accepting
either a short id from a listing or a raw OmniFocus id. Output stays search's list
format (a one-element array in--json), and unlike a keyword search it finds
completed tasks.task searchnow requires exactly one of<query>or--id.
Install
brew install maxboettinger/tap/omnifocus-cliOr download a prebuilt binary (Apple Silicon shown; use of-darwin-x64.tar.gz on Intel):
curl -fsSL https://github.com/maxboettinger/omnifocus-cli/releases/download/v0.2.0/of-darwin-arm64.tar.gz | tar -xz
xattr -d com.apple.quarantine of
mv of ~/.local/bin/Checksums (SHA-256)
d043e9415e83910203533dc0c6c8c4722685e2d1cf76ac716d7d7716dd53c0f5 of-darwin-arm64.tar.gz
b27d0e01f3f94797cc653ebc1a627cc0cd6d1c4faea129a808833d1199ae5bca of-darwin-x64.tar.gz
Full changelog: CHANGELOG.md
v0.1.0
The first public release of of, a command-line interface for OmniFocus on macOS, built for people who live in a terminal and for the agents and scripts that work alongside them.
of talks to OmniFocus through a single Apple Events bridge, so everything you can do in the app's task, project, tag and inbox views you can now do from the shell, with output that is readable by humans on a terminal and JSON the moment it is piped.
Highlights
- Fast by design. Every noun and every verb has a one-letter alias:
of t c 42completes task 42,of t m 42 tomorrowreschedules it,of i llists the inbox. - Short task ids. Human-mode listings prefix each task with a small, stable number you can pass to any command in place of a name or OmniFocus id. Numbers are never reused.
- Dates the way you type them.
tomorrow,fri 5pm,2d,next week,10.9.work everywhere a date is accepted, because the text goes to OmniFocus's own parser. ISO dates are parsed locally and stay exact. Every date write is read back and verified before it is reported. - Agent-ready. Piped stdout is JSON, piped stderr is one JSON object per line, exit codes are stable, and JSON mode carries zero UI chrome. Ambiguous names return candidates instead of a guess.
- Safe to script. Every destructive verb requires
--confirm, and stdin-driven commands fail fast with a usage example instead of hanging on a terminal.
What's inside
Tasks — add, list, show, search, update, move, complete, tag, delete, plus subtasks via add --parent. complete takes any number of references and reports each one. move reschedules due, defer and planned dates in one call.
Notifications — task notification list|add|update|delete|clear with absolute and due-relative reminders (--offset -1h) and repeat intervals.
Projects, tags, folders — create, list, show, update, rename and delete, with status and folder filters.
Inbox — inbox list --newest-first, inbox add, inbox process for single-item triage, and inbox process-many for JSON-driven batch triage.
Bulk — bulk add, bulk update, bulk complete from stdin JSON.
Views — forecast (overdue, due, planned, upcoming), review (weekly review summary), stats, and collect (recently completed tasks).
Shell — of completion bash|zsh|fish generates completions from the live command tree, aliases included.
Install
Prebuilt binary (Apple Silicon shown; use of-darwin-x64.tar.gz on Intel):
curl -fsSL https://github.com/maxboettinger/omnifocus-cli/releases/download/v0.1.0/of-darwin-arm64.tar.gz | tar -xz
xattr -d com.apple.quarantine of
mv of ~/.local/bin/
of --versionThe binary is not notarized, hence the xattr step to clear Gatekeeper's quarantine flag.
From source with Bun:
git clone https://github.com/maxboettinger/omnifocus-cli.git && cd omnifocus-cli
bun install && bun linkFirst run: macOS asks whether your terminal may control OmniFocus. If you decline, of explains how to grant it under System Settings → Privacy & Security → Automation.
Requirements
- macOS with OmniFocus installed.
ofexits with a clear error on other platforms. - Bun ≥ 1.0 for the source install only. The prebuilt binaries have no runtime dependency.
Checksums (SHA-256)
d4e4628776f12d8a642800ec97078da4fd0d0eb8225db8dd91eb8c941199786f of-darwin-arm64.tar.gz
25943f8deb9bf4e69571406ced35c104288df89f39a0b732e838db0eaecdbbbb of-darwin-x64.tar.gz
Notes
- The Intel build is cross-compiled and was verified under Rosetta 2; please report anything odd on native Intel hardware.
- This is an unofficial community project, not affiliated with or endorsed by The Omni Group. OmniFocus is a trademark of The Omni Group.
Full changelog: CHANGELOG.md · all commits