omi-plugin-development
SKILL.md
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
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
@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
Weekly Installs
9
Repository
basedhardware/omiGitHub Stars
7.8K
First Seen
Jan 29, 2026
Security Audits
Installed on
opencode9
claude-code9
cursor9
mcpjam8
openhands8
zencoder8