Skip to main content
The full command tree (run omi --help for the live version):

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