Voice-activated GitHub issue creation through your OMI device. Simply say "Feedback Post" followed by your detailed problem description, and AI will automatically create a properly formatted GitHub issue!
- π€ Voice-Activated - Say "Feedback Post" and describe your problem
- π§ AI-Powered - Collects 5 segments for detailed feedback, generates title + description
- π OAuth Authentication - Secure GitHub OAuth 2.0 integration
- π¦ Repository Selection - Choose which repo receives issues during setup
- βοΈ Flexible Settings - Change target repository anytime from mobile-first homepage
- π€ Smart Formatting - AI extracts key info and formats professional issues
- π Silent Collection - Only notifies when issue is created
- π± Mobile-First UI - Beautiful responsive design for all devices
- Install the app in your OMI mobile app
- Authenticate your GitHub account (one-time)
- Select repository where issues should be created
- Start reporting issues!
- Say: "Feedback Post, the app keeps crashing when I upload photos..."
- Keep describing the problem naturally for 15-20 seconds
- AI processes your speech and creates a formatted issue
- You get a notification with the issue link! β
- "Feedback Post"
- "Create Issue"
- "Report Issue"
- "File Issue"
- "New Issue"
The app intelligently collects and processes your feedback:
- Detects "Feedback Post" β Starts collecting
- Automatically collects 5 segments (15-20 seconds of detailed speech)
- Sends all segments to AI
- AI generates professional title and detailed description
- Creates GitHub issue with "voice-feedback" label
- Notifies you with issue link! π
Example:
You: "Feedback Post, the search function isn't working"
[collecting silently...]
You: "when I type in the search bar nothing happens"
[collecting silently...]
You: "I've tried on both Chrome and Safari"
[collecting silently...]
You: "and it worked fine last week but now"
[collecting silently...]
You: "it's completely broken on all browsers"
β AI processes all 5 segments
AI Generated Issue:
Title: "Search function not working across browsers"
Description:
The search function is currently not working. When typing in the search bar,
no results appear. This issue has been tested on both Chrome and Safari browsers.
The search functionality was working correctly last week but is now completely
non-functional across all browsers.
β Issue created! π
| Field | Value |
|---|---|
| Webhook URL | https://your-app.up.railway.app/webhook |
| App Home URL | https://your-app.up.railway.app/ |
| Auth URL | https://your-app.up.railway.app/auth |
| Setup Completed URL | https://your-app.up.railway.app/setup-completed |
- Python 3.10+
- GitHub account
- OpenAI API key
- OMI device and app
# Clone the repository
cd github
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your API keysCreate .env file with:
# GitHub OAuth Credentials (from github.com/settings/developers)
GITHUB_CLIENT_ID=your_client_id
GITHUB_CLIENT_SECRET=your_client_secret
# OAuth Redirect URL
OAUTH_REDIRECT_URL=http://localhost:8000/auth/callback
# OpenAI API Key (for AI issue generation)
OPENAI_API_KEY=your_openai_key
# App Settings
APP_HOST=0.0.0.0
APP_PORT=8000- Go to GitHub Developer Settings
- Click "New OAuth App"
- Fill in:
- Application name: "OMI GitHub Issues"
- Homepage URL:
http://localhost:8000(or your deployment URL) - Authorization callback URL:
http://localhost:8000/auth/callback
- Click "Register application"
- Copy Client ID and Client Secret to your
.env - For production: Update callback URL to your Railway/deployment URL
source venv/bin/activate
python main.pyVisit http://localhost:8000/test to test!
-
Push to GitHub
git init git add . git commit -m "Initial commit" git push origin main
-
Deploy on Railway
- Go to railway.app
- New Project β Deploy from GitHub
- Select your repo
- Add environment variables (from your
.env)
-
Get your URL
- Settings β Networking β Generate Domain
- You'll get:
your-app.up.railway.app
-
Update OAuth Callback
- Railway Variables:
OAUTH_REDIRECT_URL=https://your-app.up.railway.app/auth/callback - GitHub OAuth App: Update callback URL to same
- Railway Variables:
-
Configure OMI
- Use your Railway URLs in OMI app settings
Add these in Railway dashboard:
GITHUB_CLIENT_ID
GITHUB_CLIENT_SECRET
OPENAI_API_KEY
OAUTH_REDIRECT_URL=https://your-app.up.railway.app/auth/callback
APP_HOST=0.0.0.0
APP_PORT=8000
Visit https://your-app.up.railway.app/test to:
- Authenticate your GitHub account
- Test voice commands by typing
- See real-time logs
- Verify issues are being created
- Configure webhook URLs in OMI Developer Settings
- Enable the integration
- Authenticate GitHub and select repository
- Say: "Feedback Post, the app crashes when I upload images..."
- Continue describing the problem naturally
- Wait for AI processing (silent)
- Get notification with issue link! π
The app uses OpenAI for intelligent issue generation:
- Collection - Gathers 5 segments (~15-20 seconds) for detailed context
- Title Generation - Creates concise, descriptive title
- Description Formatting - Structures problem statement professionally
- Cleanup - Removes filler words, fixes grammar, adds proper formatting
Example Transformation:
Input (5 segments):
"the app keeps crashing when I um try to upload photos
it happens every single time on my iPhone 14 like
the app just freezes for a second and then
it completely closes and this started happening
after the latest update yesterday"
AI Output:
Title: "App crashes when uploading photos on iPhone 14"
Description:
The app consistently crashes during photo uploads. When attempting to
upload a photo, the app freezes briefly and then closes completely.
This issue occurs every time on iPhone 14 and started after the latest
update.
OMI sends transcripts in segments as you speak. The app:
- β Detects "Feedback Post" trigger
- β Collects exactly 5 segments
- β Silent during collection (no spam)
- β AI processes all 5 together
- β One notification on completion
Why 5 segments?
- Allows detailed problem description
- Captures ~15-20 seconds of speech
- Gives context for better issue formatting
- AI has full information for title/description generation
- Visit app homepage:
https://your-app.up.railway.app/?uid=<your_uid> - Select new repository from dropdown
- Click "Save Repository"
- Future issues will go to the new repo!
Click "Refresh Repos" to:
- Fetch latest list from GitHub
- Include newly created repositories
- Update repository access permissions
- β OAuth 2.0 authentication (no password storage)
- β Tokens stored securely with file persistence
- β Per-user token isolation
- β HTTPS enforced in production
- β State parameter for CSRF protection
- β
Secure scope: only
repoaccess
- Complete GitHub OAuth flow
- Check Railway logs for auth errors
- Re-authenticate if needed
- Visit app homepage
- Select a repository from the dropdown
- Click "Save Repository"
- Check Railway logs for errors
- Verify repository exists and you have access
- Ensure OAuth app has correct permissions
- Check GitHub API rate limits
- Click "Refresh Repos" on homepage
- Ensure you have push access to the repository
- Check GitHub OAuth app permissions
- Verify all environment variables are set
- Check build logs for specific errors
- Ensure
OAUTH_REDIRECT_URLmatches GitHub OAuth app
github/
βββ main.py # FastAPI application with mobile-first UI
βββ github_client.py # GitHub API integration
βββ issue_detector.py # AI-powered issue detection & generation
βββ simple_storage.py # File-based storage (users & sessions)
βββ requirements.txt # Python dependencies
βββ railway.toml # Railway deployment config
βββ runtime.txt # Python version
βββ Procfile # Alternative deployment platforms
βββ .env.example # Environment template
βββ .gitignore # Git ignore rules
βββ LICENSE # MIT License
βββ README.md # This file
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Homepage with repo selection (mobile-first) |
/auth |
GET | Start GitHub OAuth flow |
/auth/callback |
GET | OAuth callback handler |
/setup-completed |
GET | Check if user authenticated & repo selected |
/webhook |
POST | Real-time transcript processor |
/update-repo |
POST | Update selected repository |
/refresh-repos |
POST | Refresh repository list |
/test |
GET | Web testing interface |
/health |
GET | Health check |
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing) - Open a Pull Request
MIT License - see LICENSE file for details.
- OMI Docs: docs.omi.me
- GitHub API: docs.github.com/rest
Built for the OMI ecosystem.
- OMI Team - Amazing wearable AI platform
- GitHub - Issue tracking and collaboration
- OpenAI - Intelligent text processing
Made with β€οΈ for voice-first development workflows
Features:
- π€ Voice-activated issue creation
- π§ AI-powered title & description generation
- π± Mobile-first repository management
- π Secure GitHub OAuth integration
- β‘ Real-time processing with Railway deployment