Skip to main content
The full command tree, generated from the CLI source (run omi --help for the live version):

Command inventory

omi auth — Manage authentication: login, logout, status. omi config — View and modify CLI configuration / profiles. omi memory — Memories — facts and learnings about the user. omi conversation — Conversations — captured & processed audio + text. omi action-item — Action items — tasks and follow-ups. omi goal — Goals — tracked progress metrics. omi local — Local Omi Desktop API tools. omi app — Build and test Omi apps: webhook events, samples, local receiver.

Global flags

Global flags must come before the subcommand (omi --json memory list, not omi memory list --json). This is a Click framework constraint; you’ll get a friendly usage message if you put them in the wrong place.

omi auth

OAuth ID tokens are auto-refreshed before each request when the cached token is past (or near) its expiry. You should rarely need to call refresh by hand. The refresh token rotates if Firebase decides to.

omi config

omi memory

Categories: core, hobbies, lifestyle, interests, habits, work, skills, learnings, other, system. Visibility: public or private.

omi conversation

The --text flag accepts - to read from stdin:

omi action-item

omi goal

Use omi goal update ID --unit liters to set a unit label or omi goal update ID --clear-unit to remove it. These options are mutually exclusive. Omitting both leaves the unit unchanged. Goal types: boolean, scale, numeric. Up to 3 active goals per user; the oldest is deactivated automatically when you create a fourth.

omi app

Build and test an Omi app without a device. Every event is a POST to the URL the user configures in Developer Settings; these commands replay the same request locally and receive it locally. Events: memory_created, realtime_transcript, day_summary, audio_bytes, button_event.
send exits non-zero when the receiver does not answer 2xx, so it works as a check in CI. It also reports what Omi would do next: whether the delivery would be retried or dropped, and for realtime_transcript whether your reply was long enough to reach the user as a notification. verify posts every event to one URL and prints a report card: whether Omi’s delivery client would accept the URL at all, the status and latency per event, whether a failure would be retried or dropped, and whether a realtime_transcript reply would reach the user. A private or loopback host, a redirect, or a response slower than 30 seconds all fail, because the backend refuses the first, never follows the second, and gives up on the third. It exits non-zero when any check fails. The events it posts are real deliveries, so point it at staging if your app writes somewhere on receipt.

Environment variables