Skip to main content

Overview

Beyond publishing to the Omi app store, you can open-source your app by contributing it to the BasedHardware/omi repository. This gives your app maximum visibility, lets other developers learn from and build on your work, and contributes to the Omi ecosystem.

Community Visibility

Your app is discoverable by thousands of Omi developers

Contribution Rewards

Significant contributions earn free DevKit hardware

Repository Structure

Open-source apps live in the plugins/ directory:
omi/
├── plugins/
│   ├── your-app-name/
│   │   ├── README.md          # Required: documentation
│   │   ├── requirements.txt   # Python dependencies
│   │   ├── main.py            # Entry point
│   │   ├── .env.example       # Environment variable template
│   │   └── ...                # Your app code
Each app should be a self-contained directory with everything needed to run it independently.

Step-by-Step Guide

1

Fork the Repository

Go to github.com/BasedHardware/omi and click Fork to create your own copy.
git clone https://github.com/YOUR_USERNAME/omi.git
cd omi
2

Create Your App Directory

Create a new folder under plugins/ with a descriptive name:
mkdir plugins/your-app-name
cd plugins/your-app-name
Use lowercase, hyphens for spaces (e.g., meeting-summarizer, crm-sync, daily-journal).
3

Add Your App Code

Structure your app with these files at minimum:
FileRequiredDescription
README.mdDocumentation (see template below)
main.pyApp entry point
requirements.txtPython dependencies
.env.exampleEnvironment variable template (no secrets!)
.gitignoreRecommendedIgnore .env, __pycache__/, etc.
Never commit secrets, API keys, or credentials. Use .env.example with placeholder values and add .env to .gitignore.
4

Write a Great README

Your README is the first thing developers see. Include:
# Your App Name

Brief description of what your app does.

## Features
- Feature 1
- Feature 2

## How It Works
Explain the architecture and how it integrates with Omi.

## Setup

### Prerequisites
- Python 3.8+
- Any external service accounts needed

### Installation
1. Clone the repo
2. `pip install -r requirements.txt`
3. Copy `.env.example` to `.env` and fill in your values
4. Run `python main.py` or `fastapi run`

### Environment Variables
| Variable | Description |
|----------|-------------|
| `API_KEY` | Your API key for X service |

## Registering with Omi
Explain how to register the app (webhook URLs, etc.)

## Usage
How users interact with the app once it's running.

## License
MIT
5

Test Thoroughly

Before submitting, make sure:
  • App runs from a clean install following your README
  • All environment variables are documented in .env.example
  • No hardcoded secrets or API keys in the code
  • Webhooks handle errors gracefully
  • Code is clean and reasonably commented
6

Create a Branch and Commit

git checkout -b add-your-app-name
git add plugins/your-app-name/
git commit -m "feat: add your-app-name plugin"
7

Open a Pull Request

Push your branch and open a PR against main:
git push origin add-your-app-name
Then go to GitHub and create a Pull Request with:
  • Title: feat: add [your-app-name] plugin
  • Description: What the app does, how to use it, and any relevant context
  • Screenshots/demo (if applicable)

PR Review Checklist

Our team will review your PR against these criteria:
  • Clean, readable code
  • No unnecessary dependencies
  • Proper error handling
  • No hardcoded secrets or credentials
  • Complete README with setup instructions
  • .env.example with all required variables
  • Clear explanation of what the app does
  • App runs independently from its directory
  • All dependencies listed in requirements.txt
  • No modifications to core Omi code
  • Respects user privacy
  • No harmful or inappropriate content
  • Provides genuine value to users

Tips for a Successful Contribution

Start Simple

A well-documented simple app is better than a complex, undocumented one

Show, Don't Tell

Include screenshots, GIFs, or a demo video in your README

Be Responsive

Respond to review feedback quickly to get your PR merged faster

Follow Existing Patterns

Look at existing apps in plugins/ for style and structure inspiration

Contribution Rewards

Significant open-source contributions earn rewards:
ContributionsReward
1 merged PRFree DevKit device (necklace or glasses)
2+ merged PRsAdditional DevKit + community recognition
See the full Contribution Guide for details on rewards and bounties.