Plugin System & Marketplace
Relevant source files
The following files were used as context for generating this wiki page:
- plugins/PLUGIN_REFACTOR_AUDIT.md
- web/frontend/src/app/apps/[id]/page.tsx
- web/app/src/app/(public)/apps/[id]/page.tsx/apps/%5Bid%5D/page.tsx)
- plugins/omi-hive-app/README.md
- plugins/omi-linear-app/README.md
- plugins/omi-slack-app/README.md
- plugins/omi-shopify-app/README.md
- plugins/apps-js/README.md
- web/frontend/src/app/apps/utils/metadata.ts
The Omi Plugin System and Marketplace provide a modular framework for extending the capabilities of Omi AI wearables through third-party integrations. The system allows developers to build specialized applications (plugins) that consume real-time transcript data and provide AI-driven chat tools, external service integrations, and proactive notifications. The Marketplace serves as the central hub for discovery, installation, and management of these plugins across web and mobile platforms.
Sources: README.md, plugins/PLUGIN_REFACTOR_AUDIT.md, web/frontend/src/app/apps/[id]/page.tsx:32-45
Architecture Overview
The architecture is built on a decoupled model where plugins operate as independent services (often hosted on platforms like Railway) and communicate with the Omi ecosystem via standardized webhooks and manifest files.
Component Interaction
Plugins expose a standard set of endpoints, including a chat tools manifest usually located at /.well-known/omi-tools.json. Omi's backend fetches this manifest to understand what capabilities and voice commands a plugin supports.
The diagram above illustrates the relationship between the Omi device, the central backend, and independent third-party plugin services.
Sources: plugins/omi-hive-app/README.md:58-70, plugins/omi-linear-app/README.md:120-135
Marketplace Data Model
The Marketplace manages plugin metadata, user installations, and categorization. Metadata is used for SEO, structured data generation (Schema.org), and UI rendering.
Plugin Attributes
| Field | Type | Description |
|---|---|---|
id | String | Unique identifier for the plugin |
name | String | Display name in the marketplace |
description | String | Detailed explanation of app capabilities |
category | String | e.g., productivity, health, social, utility |
capabilities | Set | Enabled features (e.g., "external_integration", "chat") |
rating_avg | Float | Average user rating |
installs | Integer | Total download/install count |
Sources: web/frontend/src/app/apps/[id]/page.tsx:10-30, web/app/src/app/(public)/apps/[id]/page.tsx:120-150
Categorization System
The marketplace organizes apps into several primary categories to facilitate discovery.
- Productivity: Task management and workflow automation.
- Health: Fitness tracking and wellness insights.
- Entertainment: Music and interactive experiences.
- Integration: Smart home and service synchronization.
- Social: Communication and messaging.
Sources: web/frontend/src/app/apps/utils/metadata.ts:10-75
Plugin Development & SDK
Plugins are typically developed using Python (FastAPI) or Node.js. A neutral Python SDK (omi-plugin-sdk) provides canonical webhook models and authentication helpers.
SDK Components
The SDK standardizes how transcript data is parsed and how responses are formatted.
omi_plugin_sdk.models: ContainsConversation,ActionItem, andStructuredmodels.fastapi.py: Primitives for building FastAPI-based plugins.webhook.py: Logic for parsing incoming Omi webhooks.
Sources: plugins/PLUGIN_REFACTOR_AUDIT.md:10-35
Chat Tools Integration
Plugins define "Chat Tools" that the Omi AI can invoke during personal conversations. When a user gives a voice command related to a plugin (e.g., "Create a Linear issue"), the Omi backend refers to the plugin's manifest to execute the corresponding tool.
This sequence diagram shows the flow of a voice command from the wearable through the backend to a specific plugin tool.
Sources: plugins/omi-hive-app/README.md:75-85, plugins/omi-slack-app/README.md:30-55
Marketplace Web Implementation
The web marketplace is built with Next.js (App Router) and uses both static and dynamic rendering.
SEO and Structured Data
The system generates rich JSON-LD data for search engines, including SoftwareApplication and Product schemas.
export function generateStructuredData(plugin: Plugin, categoryName: string) {
return {
__html: JSON.stringify([
{
'@context': 'https://schema.org',
'@type': 'SoftwareApplication',
name: plugin.name,
applicationCategory: categoryName,
operatingSystem: 'iOS, Android',
author: { '@type': 'Person', name: plugin.author },
interactionStatistic: {
'@type': 'InteractionCounter',
userInteractionCount: plugin.installs,
},
},
]),
};
}
Sources: web/frontend/src/app/apps/[id]/page.tsx:65-105
Installation Flow
The marketplace provides direct links to mobile app stores (iOS/Android). Since plugins extend the wearable's capability, they often require a setup phase where users connect their external accounts (e.g., Slack, GitHub, Shopify) via OAuth.
Sources: web/frontend/src/app/apps/[id]/page.tsx:150-170, plugins/omi-shopify-app/README.md:15-30
Common Plugin Patterns
Most plugins follow a standard set of endpoints for integration with the Omi ecosystem:
| Endpoint | Method | Purpose |
|---|---|---|
/ | GET | Plugin settings and landing page |
/webhook | POST | Receive real-time transcript segments |
/.well-known/omi-tools.json | GET | Manifest for AI chat tools |
/setup/status | GET | Verify if the user has completed OAuth/setup |
/auth/callback | GET | Handle OAuth redirects from external services |
Sources: plugins/omi-github-app/QUICKSTART.md:90-110, plugins/omi-notion-app/README.md:70-95
Conclusion
The Omi Plugin System & Marketplace transition the wearable from a standalone recording device into a flexible platform for ambient computing. By leveraging a manifest-driven architecture and standardized SDKs, it enables a broad range of integrations—from simple voice-activated messaging (Slack) to complex productivity workflows (Linear, Hive, Notion). The marketplace infrastructure ensures these extensions are discoverable, secure, and properly indexed for a seamless user experience.
Sources: README.md, plugins/PLUGIN_REFACTOR_AUDIT.md