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
2. 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
python
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
python
@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
python
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
python
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
json
{
"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
@tooldecorator - •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