Omi: Open-Source AI Wearable for Ambient Memory and Productivity

May 16, 2025

Introduction

Modern professionals struggle with information overload, often losing critical details from meetings, browser sessions, and spontaneous conversations. Omi, an open-source AI wearable and ambient intelligence platform with over 10k GitHub stars, solves this by acting as a persistent observer that captures screen activity and audio conversations in real-time. By turning ambient context into a searchable personal memory, Omi replaces the need for manual note-taking and fragmented screenshots, providing a “second brain” that remembers everything you’ve seen and heard.

What Is Omi?

Omi is an open-source AI wearable platform that captures conversations and screen content to generate real-time transcriptions, summaries, and action items for users. Maintained by BasedHardware, the project is released under the MIT License, allowing developers to build custom plugins and self-host the backend for maximum privacy. It spans a full stack of hardware (wearables like the Omi pendant and Omi Glass), a mobile app (built with Flutter), and a Python-based backend (FastAPI) that integrates with LLMs and vector databases like Pinecone.

Why Omi Matters

Traditional productivity tools require active effort—you must decide what to record, when to start a meeting note, or where to save a screenshot. Omi shifts this paradigm to passive capture, where the environment is indexed automatically. This eliminates the cognitive load of manual documentation and ensures that no critical insight is lost during high-intensity information workflows.

The project has gained significant traction, trusted by over 300,000 professionals and boasting a large community of contributors. Its open-source nature is a critical differentiator; unlike proprietary “AI pins” or recorders, Omi allows users to inspect the code, customize the AI personas, and maintain sovereignty over their most sensitive personal data.

Key Features

  • Continuous Ambient Capture: Omi monitors audio conversations and screen activity without requiring manual activation, ensuring a complete record of your digital and physical interactions.
  • Real-Time Transcription: Utilizing advanced speech-to-text engines like Deepgram and Soniox, Omi provides high-quality, live transcriptions of meetings and voice memos.
  • Persistent AI Memory: Unlike session-based tools, Omi’s memory persists indefinitely across devices, allowing you to query your history (e.g., “What did we decide about the API architecture last Tuesday?”) via an AI chat.
  • Multi-Device Synchronization: Context captured on a wearable device syncs seamlessly to the mobile app and desktop client, creating a unified layer of personal context.
  • Extensible Plugin Ecosystem: A community-driven marketplace allows developers to add integrations for task management, CRM sync, and custom notification systems.
  • Hardware Flexibility: Supports multiple form factors including the Omi pendant (CV1), Omi Glass, and developer kits (DevKit 2) for those who want to build their own hardware.
  • Self-Hostable Backend: For privacy-conscious users, the entire backend stack can be deployed locally to avoid third-party cloud dependencies.
  • Speaker Diarization: The system can identify different speakers in a conversation, making transcriptions more organized and attributable.

How Omi Compares

Feature Omi Limitless Granola
Open Source Yes (MIT) No No
Hardware Options Pendant, Glass, DIY Pendant Software Only
Self-Hosting Supported Not Supported Not Supported
Plugin Ecosystem Community-driven Proprietary Limited

Omi’s primary differentiator is its commitment to openness. While Limitless and Granola offer polished, proprietary experiences, Omi provides the full blueprint for an AI second brain. For developers, this means the ability to modify the transcription engine, change the vector database, or build custom plugins that interact with their specific professional tools. The tradeoff is that Omi’s hardware build quality in early versions may be lower than some high-end proprietary competitors, but the flexibility and data sovereignty it provides are unmatched in the category.

Getting Started: Installation

Developer Quick Start (App)

To get the Omi app running locally for development, use the following commands:

git clone https://github.com/BasedHardware/omi.git
cd omi/app
bash setup.sh ios # Use 'android' or 'macos' instead of 'ios' depending on your target

Backend Setup

For a full local deployment of the backend stack, you will need to install prerequisites like Node.js and Rust. Then, execute the following:

git clone https://github.com/BasedHardware/omi.git
cd omi
make setup

Hardware Assembly (DIY)

For those building the Omi Glass or DevKit from scratch, the project provides a full BOM (Bill of Materials) and assembly guides. Prerequisites include an Arduino IDE and a 3D printer for the case.

git clone https://github.com/BasedHardware/omi.git
cd omi/omiGlass
npm install

How to Use Omi

The basic workflow of Omi begins with the wearable device. Once paired with the mobile app via Bluetooth, the device captures ambient audio. You can use physical controls on the device—such as a single squeeze to start/stop recording or a double squeeze to save a specific “moment” (memory tag)—to interact with the system.

Once the audio is captured, it is streamed to the Omi app, which handles the transcription and synchronization with the backend. The backend then processes the audio using an LLM to generate a summary of the conversation and a list of action items. You can then access these summaries in the app or use the AI chat to ask questions about your captured history across all your devices.

Code Examples

Developers can extend Omi by creating plugins. A plugin is essentially a Python-based app that lives in the plugins/ directory. Here is a conceptual example of how a plugin’s entry point is structured based on the repository’s plugin architecture:

# plugins/my-custom-plugin/main.py
import os
from omi_sdk import OmiPlugin

class MyCustomPlugin(OmiPlugin):
    def on_transcript(self, transcript):
        # Process the real-time transcript
        print(f"Processing transcript: {transcript}")
        # Example: Send to a custom CRM or task manager
        # send_to_crm(transcript)

    def on_memory(self, memory):
        # Process a newly created memory
        print(f"Memory captured: {memory}")

my_plugin = MyCustomPlugin()
my_plugin.run()

This structure allows Omi to trigger events based on real-time transcription or the creation of a new memory, enabling the integration of the ambient AI into external professional workflows.

Advanced Configuration

Omi requires several API keys to power its AI capabilities. These are configured via a .env file in the root directory of the backend. Common configuration options include:

# Core API Keys
OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=sk-your-anthropic-key
GROQ_API_KEY=gsk-your-groq-key

# Transcription Services
DEEPGRAM_API_KEY=your-deepgram-key

# Vector Database
PINECONE_API_KEY=your-pinecone-key
PINECONE_ENVIRONMENT=your-pinecone-env

By adjusting these keys, users can switch between different LLM providers (e.g., switching from OpenAI to Groq for lower latency) or change the transcription service to optimize for specific languages or accuracy.

Real-World Use Cases

  • Executive Meeting Minutes: A project manager uses Omi to record all stakeholder meetings. Instead of manual notes, they use the AI chat to instantly generate a meeting summary and sync the action items directly to their project management tool via a plugin.
  • Learning and Research: A developer learning a new framework via video tutorials and browser sessions. Omi captures the screen content and audio, allowing the developer to ask the AI, “What was the specific configuration step mentioned in the tutorial 10 minutes ago?”

  • AI Agent Integration: A developer builds a custom plugin that monitors for specific keywords in conversations. When a keyword is trigger, the plugin automatically creates a Jira ticket or updates a CRM record without the user ever opening an app.
  • Academic Lectures: A student uses the Omi pendant to record lectures. The system provides a real-time transcription and later generates a simplified summary of complex concepts, making review sessions more efficient.

Contributing to Omi

The Omi project encourages community contributions through a detailed CONTRIBUTING.md guide. Developers can contribute by reporting bugs, submitting pull requests for new features, or creating new plugins. The project also offers paid bounties for specific issues to incentivize high-quality contributions.

To contribute, developers should fork the repository, create a feature branch, and follow the PR review checklist provided in the documentation. All contributions are governed by the MIT License, ensuring the project remains open and accessible.

Community and Support

Omi has a vibrant community of developers and professionals. The primary channel for support and collaboration is the official Discord server, where users can discuss hardware builds and software extensions. GitHub Discussions is also used for more formal code-related questions and collaboration.

The project maintains a comprehensive documentation site at docs.omi.me, which includes setup guides, hardware assembly instructions and API references.

Conclusion

Omi is more than just a wearable recorder; it is a foundational layer for ambient intelligence. By combining open-source hardware and software, it provides a path toward a truly personalized AI assistant that respects user privacy and data sovereignty. For those who want to move beyond manual note-taking and eliminate the cognitive load of information capture, Omi is the right choice.

While the project is in an early stage and hardware iterations are frequent, the early adopters who can customize the laier of memory it creates are gaining a significant productivity edge. Star the repo, try the quickstart, and join the community to start building your second brain.

What is Omi and what problem does it solve?

Omi is an open-source AI wearable platform that captures ambient audio and screen content to create a searchable personal memory. It solves the problem of information overload and the loss of critical details from meetings and conversations by automating the capture and organization of context.

How do I install Omi for development?

Developers can install the Omi app locally by cloning the repository and running the bash setup.sh script in the omi/app directory. For the full backend stack, running make setup in the root directory after installing prerequisites like Node.js and Rust is the recommended path.

How does Omi compare to Limitless or Granola?

Unlike Limitless or Granola, Omi is fully open-source (MIT License), allowing for self-hosting and the community-driven plugin ecosystem. While proprietary alternatives may offer a more polished consumer experience, Omi provides total control over data privacy and the ability to customize the AI models used.

Can I use Omi for recording academic lectures?

Yes, Omi is designed for ambient capture. It is highly effective for recording lectures, providing real-time transcription and AI-generated summaries that make reviewing complex material more efficient.

What hardware is required to use Omi?

Users can use the official Omi pendant (CV1), Omi Glass, or build their own using the provided open-source hardware designs (e.g., using an ESP32-S3 for Omi Glass). Omi also works with a mobile app for processing and synchronization.

Is Omi's data stored in the cloud or locally?

By default, the official app uses secure cloud infrastructure. However, because the project is open-source, users can self-host the backend and use their own API keys for transcription and transcription services, ensuring 100% local storage and privacy.

How do I create a custom plugin for Omi?

Omi plugins are Python-based apps that live in the plugins/ directory. Developers can create a class inheriting from OmiPlugin and implement methods like on_transcript to process real-time data streams.

[/et_pb_column] [/et_pb_row]