Open-source voice AI plugins for OpenHome — build, share, and remix.
---Abilities are modular voice AI plugins that extend what OpenHome Personalities can do. They're triggered by spoken phrases and can do anything — call APIs, play audio, run quizzes, control devices, have multi-turn conversations.
Each Ability is just one file: main.py — your Python logic.
Write your code, zip it, upload it to OpenHome, set your trigger words in the dashboard, and your Personality can do something new.
1. Pick a template
git clone https://github.com/openhome-dev/abilities.git
cp -r abilities/templates/basic-template my-first-ability2. Edit main.py — here's the simplest possible Ability:
import json
from src.agent.capability import MatchingCapability
from src.main import AgentWorker
from src.agent.capability_worker import CapabilityWorker
class MyFirstCapability(MatchingCapability):
worker: AgentWorker = None
capability_worker: CapabilityWorker = None
# Do not change following tag of register capability
#{{register capability}}
def call(self, worker: AgentWorker):
self.worker = worker
self.capability_worker = CapabilityWorker(self.worker)
self.worker.session_tasks.create(self.run())
async def run(self):
await self.capability_worker.speak("Hi! Tell me what's on your mind.")
user_input = await self.capability_worker.user_response()
response = self.capability_worker.text_to_text_response(
f"Give a short, helpful response to: {user_input}"
)
await self.capability_worker.speak(response)
self.capability_worker.resume_normal_flow()Note: The
#{{register_capability}}This line is required boilerplate — copy it exactly. The platform handlesconfig.jsonautomatically; you never need to create or edit it.
3. Upload to OpenHome
- Zip your folder
- Go to app.openhome.com → Abilities → Add Custom Ability
- Upload the zip
- Set your trigger words in the dashboard (the phrases that activate your Ability)
- Test it in the Live Editor
4. Trigger it — Say one of your trigger words in a conversation and your Ability takes over.
📖 Full guide: docs/getting-started.md
Maintained by the OpenHome team. Tested, stable, and supported.
| Ability | Description | Example Triggers | API Required | Docs |
|---|---|---|---|---|
| Basic Advisor | Daily life advice | "give me advice", "help me" | None | README |
| Quiz Game | AI-generated trivia | "start a quiz", "quiz me" | None | README |
| Sound Generator | AI sound effects | "make a sound", "create a sound" | ElevenLabs | README |
| Weather | Current weather by location | "what's the weather" | None | README |
| Music Player | Play music from URL or file | "play music", "play a song" | None | README |
Trigger words are configured in the OpenHome dashboard when you install an Ability, not in the code.
Built by the community. Reviewed for security and SDK compliance before merging.
| Ability | Description | Author | API Required |
|---|---|---|---|
| Your Ability here | Contribute one → |
Note: Community Abilities are reviewed for security and SDK compliance. OpenHome does not guarantee ongoing maintenance. See Contributing for details.
Don't start from scratch — grab a template:
| Template | Best For | Pattern |
|---|---|---|
| basic-template | First-timers | Speak → Listen → Respond → Exit |
| api-template | API integrations | Speak → Call API → Speak result → Exit |
| loop-template | Interactive apps | Loop with listen → process → respond → exit command |
We welcome community Abilities! Here's the short version:
- Fork this repo
- Copy a template into
community/your-ability-name/ - Build your Ability
- Open a Pull Request
Full guide: CONTRIBUTING.md
First time? Look for issues labeled good-first-issue.
Exceptional community Abilities can be promoted to Official status. We look for:
- Stability — No critical bugs for 30+ days
- Quality — Clean code, good voice UX
- Maintenance — Author is responsive
When promoted, the Ability moves to official/, gets the blue badge on Marketplace, and the author is credited permanently. Learn more →
| Doc | Description |
|---|---|
| Getting Started | Build your first Ability in 5 minutes |
| CapabilityWorker | Full SDK reference |
| Patterns Cookbook | Common patterns with code examples |
| Publishing to Marketplace | How to ship your Ability to users |
| Promotion Path | How community Abilities become official |
| OpenHome SDK Reference | Complete guide to SDK |
| Building Great OpenHome Abilities | Guide to buil great OpenHome abilities |
This project is licensed under the MIT License.
All contributions to community/ are licensed under the same terms. By submitting a PR, you agree to these terms. Original authorship is always credited.