omi-plugin-development

Omi Plugin Development Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "omi-plugin-development" with this command: npx skills add basedhardware/omi/basedhardware-omi-omi-plugin-development

Omi Plugin Development Skill

This skill provides guidance for developing Omi plugins/apps, including webhook patterns, chat tools, and OAuth flows.

When to Use

Use this skill when:

  • Creating new Omi plugins/apps

  • Implementing webhook handlers

  • Adding chat tools for LangGraph

  • Setting up OAuth integrations

  • Building prompt-based apps

Key Patterns

Plugin Types

  1. Prompt-Based Apps

No server required - Just define prompts

  • Chat prompts: Customize AI personality

  • Memory prompts: Customize memory extraction

  1. Integration Apps

Requires server endpoint - Webhook-based

  • Memory triggers: Webhook on memory creation

  • Real-time transcript: Webhook for live transcripts

  • Chat tools: Custom tools for LangGraph

  • Audio streaming: Raw audio processing

Webhook Patterns

Memory Creation Webhook

from fastapi import FastAPI from pydantic import BaseModel

app = FastAPI()

class MemoryWebhook(BaseModel): id: str content: str category: str user_id: str

@app.post("/webhook/memory-created") async def memory_created(webhook: MemoryWebhook): """Called when a memory is created.""" # Process memory # Can create new memories via API # Can trigger actions return {"status": "processed"}

Real-time Transcript Webhook

@app.post("/webhook/transcript") async def transcript_segment(segment: dict): """Called with live transcript segments.""" text = segment.get("text")

# Process in real-time
if "hey omi" in text.lower():
    await trigger_action()

return {"status": "received"}

Chat Tools

Creating a Chat Tool

from langchain.tools import tool

@tool def my_custom_tool(query: str) -> str: """Description of what this tool does.

Args:
    query: The search query
    
Returns:
    Results as a string
"""
result = perform_search(query)
return json.dumps(result)

Register in app configuration

CHAT_TOOLS = [my_custom_tool]

Usage: Tool becomes available in agentic chat path when app is enabled

OAuth Integration

Setting Up OAuth

from authlib.integrations.fastapi_oauth2 import OAuth2

oauth = OAuth2( client_id=os.getenv("CLIENT_ID"), client_secret=os.getenv("CLIENT_SECRET"), server_metadata_url="https://accounts.google.com/.well-known/openid-configuration", )

@app.get("/auth") async def auth(): return await oauth.google.authorize_redirect( redirect_uri="https://your-app.com/callback" )

Plugin Configuration

App Manifest

{ "id": "my-plugin", "name": "My Plugin", "description": "Plugin description", "capabilities": [ "memory_trigger", "real_time_transcript", "chat_tools" ], "webhook_url": "https://your-app.com/webhook" }

Common Tasks

Creating a New Plugin

  • Choose plugin type (prompt-based or integration)

  • Set up server (if integration app)

  • Implement webhook handlers

  • Register plugin in Omi app

  • Test with webhook.site first

Adding Chat Tools

  • Create tool function with @tool decorator

  • Write clear tool description

  • Register in app configuration

  • Tool becomes available when app enabled

Setting Up OAuth

  • Create OAuth app in provider (Google, Apple, etc.)

  • Configure redirect URIs

  • Implement OAuth flow in plugin

  • Store tokens securely

Best Practices

  • Error Handling: Handle webhook errors gracefully

  • Idempotency: Make webhooks idempotent

  • Rate Limiting: Implement rate limiting

  • Security: Verify webhook signatures

  • Documentation: Document your plugin API

  • Testing: Test with webhook.site first

Related Documentation

The docs/ folder is the single source of truth for all user-facing documentation, deployed at docs.omi.me.

  • Plugin Introduction: docs/doc/developer/apps/Introduction.mdx

  • View online

  • Integrations: docs/doc/developer/apps/Integrations.mdx

  • View online

  • Chat Tools: docs/doc/developer/apps/ChatTools.mdx

  • View online

  • OAuth: docs/doc/developer/apps/Oauth.mdx

  • View online

  • Prompt-Based Apps: docs/doc/developer/apps/PromptBased.mdx

  • View online

  • Audio Streaming: docs/doc/developer/apps/AudioStreaming.mdx

  • View online

  • Submitting Apps: docs/doc/developer/apps/Submitting.mdx

  • View online

  • Plugin Development: .cursor/rules/plugin-development.mdc

Related Cursor Resources

Rules

  • .cursor/rules/plugin-development.mdc

  • Plugin development patterns

  • .cursor/rules/plugin-apps-js.mdc

  • JavaScript plugin patterns

  • .cursor/rules/backend-api-patterns.mdc

  • Backend API patterns

  • .cursor/rules/backend-architecture.mdc

  • Backend architecture

Subagents

  • .cursor/agents/plugin-developer/
  • Uses this skill for plugin development

Commands

  • /create-plugin

  • Uses this skill for plugin scaffolding

  • /create-app

  • Uses this skill for app creation

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

local-dev

No summary provided by upstream source.

Repository SourceNeeds Review
General

rotate-key

No summary provided by upstream source.

Repository SourceNeeds Review
General

self-improvement

No summary provided by upstream source.

Repository SourceNeeds Review