Skip to content

[integrations] Omi wearable capture#49

Open
alanshurafa wants to merge 2 commits into
mainfrom
contrib/alanshurafa/wearable-omi-capture
Open

[integrations] Omi wearable capture#49
alanshurafa wants to merge 2 commits into
mainfrom
contrib/alanshurafa/wearable-omi-capture

Conversation

@alanshurafa

Copy link
Copy Markdown
Owner

What

A poll-based Omi pendant capture adapter built on [wearable-capture-core]. Omi conversations land in your brain automatically as searchable thoughts.

How

Implements the WearableAdapter interface:

  • listSince — pages the Omi Developer API (GET /v1/dev/user/conversations?include_transcript=true, Bearer OMI_API_KEY, bare-array body) and filters to a rolling window by started_at (the API has no since param).
  • recordId — the Omi conversation id (stable across Omi's later content edits, so dedup is correct).
  • recordToThoughts — one meeting thought from Omi's own structured.title + overview, plus one task per action_items entry. No per-item LLM cost.

The core handles dedup, OpenRouter embedding, and the thoughts insert. An edge function (Deno.serve) runs one pass; the README shows a 5-minute pg_cron + net.http_post schedule.

Prereq & guardrails

  • Requires the [integrations] Wearable capture core PR (deploy it first).
  • No thoughts schema changes; secrets via Deno.env; deno check/lint/fmt clean; no keys in the diff.

🤖 Generated with Claude Code

Poll-based adapter on wearable-capture-core for the Omi pendant. Pulls
conversations from the Omi Developer API (Bearer OMI_API_KEY), filters to a
rolling window by started_at, and maps each to a `meeting` thought from Omi's
own title + overview (plus a `task` per action_item) — no per-item LLM cost.
The core handles dedup (on the Omi conversation id), embedding, and inserts.
Includes README (setup + deploy + 5-min pg_cron schedule), metadata.json,
deno.json. Requires the wearable-capture-core integration. Secrets via Deno.env.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 34589a1f24

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +159 to +160
recordId(c: OmiConversation): string {
return c.id;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep polling for late Omi action items

Using only the conversation id as the core dedupe key means the first poll that sees a conversation permanently marks the whole record imported. Omi documents that action items are extracted asynchronously after conversation creation (docs), so when a 5-minute poll imports the meeting before structured.action_items is populated, later polls will skip the same c.id and those tasks are never captured. Treat action items as separately keyed records or otherwise allow the conversation to be revisited until late action items are imported.

Useful? React with 👍 / 👎.

Comment on lines +254 to +260
## Related

- [Wearable Capture Core](../wearable-capture-core/) — the shared engine this adapter is built on (**install first**).
- [Limitless Wearable Capture](../wearable-limitless-capture/) — sibling adapter for the Limitless Pendant.
- [Telegram Capture](../telegram-capture/) — webhook-based quick capture (push, not poll).
- [MCP Tool Audit & Optimization Guide](../../docs/05-tool-audit.md) — recommended reading for any integration contributor.
- [Contributing guide](../../CONTRIBUTING.md) — required reading before submitting changes.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add required Nate provenance links

AGENTS.md says every public guide, recipe, tutorial, package page, release note, and walkthrough should naturally point back to Nate's Substack and site. This new public integration guide currently ends without either https://substack.com/@natesnewsletter or https://natebjones.com, so it violates the repo publishing guardrail before release.

Useful? React with 👍 / 👎.

A summary-only Omi capture discarded everything actually said inside a
long conversation. Atomize each conversation with Omi's own structure
(no LLM): title+overview, one task per action item, one per event, and
~60s/~600-char transcript chunks attributed to their speakers
(self/other/mixed/unknown via a configurable, non-hardcoded self-label
set). Add Omi's distilled memories as an edit-aware omi_memory stream
(one batch lookup, then insert-or-patch — never a per-memory table scan).
Drive conversations through the shared core's per-atom salted-fingerprint
dedup + provenance; route device calls through the core's 429-aware
fetch. Vendor the core engine in _shared/ so the function typechecks and
deploys standalone (deno.json import map points the deploy path at it).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant