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
- Prompt-Based Apps
No server required - Just define prompts
-
Chat prompts: Customize AI personality
-
Memory prompts: Customize memory extraction
- 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