Manage your Linear issues with voice commands through your Omi device. Create issues, track your work, update statuses, and add comments β all hands-free!
Current ngrok URL: https://spacious-undiscouragingly-kelle.ngrok-free.dev
| Field | Value |
|---|---|
| App Name | Linear |
| Category | Productivity |
| Description | Manage your Linear issues with voice commands. Create issues, track work, update statuses, and add comments β all hands-free through your Omi device. |
| Field | URL |
|---|---|
| App Home URL | https://spacious-undiscouragingly-kelle.ngrok-free.dev/ |
| Setup Completed URL | https://spacious-undiscouragingly-kelle.ngrok-free.dev/setup/linear |
| Chat Tools Manifest URL | https://spacious-undiscouragingly-kelle.ngrok-free.dev/.well-known/omi-tools.json |
https://spacious-undiscouragingly-kelle.ngrok-free.dev/auth/linear/callback
- β External Integration (required for chat tools)
- β Chat (for voice command responses)
- β Create Issues - Create new issues with title, description, and priority
- π List My Issues - See all issues assigned to you
- π Update Status - Move issues through workflow states (Todo β In Progress β Done)
- π Search Issues - Find issues by keyword or topic
- π Get Issue Details - View full details of any issue
- π¬ Add Comments - Add comments and updates to issues
- Install the Linear app from the Omi App Store
- Click "Connect Linear" to authenticate with your workspace
- (Optional) Set a default team for issue creation
- Start using voice commands!
| Command | Description |
|---|---|
| "Create an issue: Fix login bug" | Create a new issue |
| "Create urgent issue: Server is down" | Create with priority |
| "Show my issues" | List your assigned issues |
| "Show my in-progress issues" | Filter by status |
| "Move ENG-123 to Done" | Update issue status |
| "Mark PROD-456 as In Progress" | Start working on an issue |
| "Search for authentication issues" | Find issues by keyword |
| "What's the status of ENG-789?" | Get issue details |
| "Tell me about PROD-123" | Get full issue information |
| "Add comment to ENG-456: Fixed the bug" | Add a comment to an issue |
| Field | Value |
|---|---|
| App Name | Linear |
| Category | Productivity & Work |
| Description | Manage your Linear issues with voice commands. Create issues, track work, update statuses, and add comments β all hands-free through your Omi device. |
| Author | Omi Community |
| Version | 1.0.0 |
- β External Integration (required for chat tools)
- β Chat (for voice command responses)
| URL Type | URL |
|---|---|
| App Home URL | https://YOUR-APP.up.railway.app/ |
| Setup Completed URL | https://YOUR-APP.up.railway.app/setup/linear |
| Chat Tools Manifest URL | https://YOUR-APP.up.railway.app/.well-known/omi-tools.json |
Important: Omi automatically appends
?uid=USER_IDto these URLs. Do NOT include{uid}in the URL.
This app exposes a manifest endpoint at /.well-known/omi-tools.json that Omi automatically fetches when the app is created or updated.
| Tool | Description |
|---|---|
create_issue |
Create a new issue in Linear |
list_my_issues |
List issues assigned to the user |
update_issue_status |
Update an issue's workflow status |
search_issues |
Search for issues by text |
get_issue |
Get detailed info about an issue |
add_comment |
Add a comment to an existing issue |
- Go to Linear Settings > API
- Click "Create OAuth application"
- Fill in the details:
- Application name: Omi Integration
- Developer name: Your name
- Developer URL: https://omi.me
- Redirect URI:
https://YOUR-APP.up.railway.app/auth/linear/callback
- Note your Client ID and Client Secret
The app requests these Linear permissions:
read- Read access to workspace datawrite- Write access to issuesissues:create- Create new issuescomments:create- Add comments to issues
- Python 3.8+
- Linear workspace with admin access
# Navigate to the plugin directory
cd plugins/linear
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Copy environment file and configure
cp .env.example .env
# Edit .env with your credentials
# Run the server
python main.pyLINEAR_CLIENT_ID=your_client_id
LINEAR_CLIENT_SECRET=your_client_secret
LINEAR_REDIRECT_URI=https://your-domain.com/auth/linear/callback
PORT=8080
REDIS_URL= # Optional: for production use# Start ngrok
ngrok http 8080
# Update LINEAR_REDIRECT_URI in .env with ngrok URL
# Update redirect URI in Linear OAuth app settings- Go to Railway and sign in
- Click "New Project" β "Deploy from GitHub repo"
- Select your repository and choose the
plugins/linearfolder
- In your Railway project, click "+ New" β "Database" β "Add Redis"
- Railway automatically creates and connects the Redis instance
- The
REDIS_URLenvironment variable is set automatically
Go to your service's Variables tab and add:
| Variable | Value |
|---|---|
LINEAR_CLIENT_ID |
Your Linear OAuth Client ID |
LINEAR_CLIENT_SECRET |
Your Linear OAuth Client Secret |
LINEAR_REDIRECT_URI |
https://YOUR-APP.up.railway.app/auth/linear/callback |
Note: Replace
YOUR-APPwith your actual Railway app domain (shown in Settings β Domains)
If deploying from the main repo, set the Root Directory to plugins/linear:
- Go to Settings β Build β Root Directory
- Enter:
plugins/linear
Add your Railway URL as a redirect URI in your Linear OAuth application settings:
https://YOUR-APP.up.railway.app/auth/linear/callback
Update your app URLs in the Omi App Store:
| URL Type | Value |
|---|---|
| App Home URL | https://YOUR-APP.up.railway.app/ |
| Setup Completed URL | https://YOUR-APP.up.railway.app/setup/linear |
| Chat Tools Manifest URL | https://YOUR-APP.up.railway.app/.well-known/omi-tools.json |
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Railway Project β
βββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββ βββββββββββββββββββββ β
β β Linear App ββββββΆβ Redis Database β β
β β (FastAPI) β β (Persistent) β β
β β β β β β
β β - OAuth β β - User tokens β β
β β - Chat tools β β - Settings β β
β β - GraphQL β β - Default teams β β
β βββββββββββββββββ βββββββββββββββββββββ β
β β β
β βΌ β
β https://YOUR-APP.up.railway.app β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Home page / App settings |
/health |
GET | Health check |
/auth/linear |
GET | Start OAuth flow |
/auth/linear/callback |
GET | OAuth callback |
/setup/linear |
GET | Check setup status |
/disconnect |
GET | Disconnect account |
/tools/create_issue |
POST | Chat tool: Create issue |
/tools/list_my_issues |
POST | Chat tool: List my issues |
/tools/update_issue_status |
POST | Chat tool: Update status |
/tools/search_issues |
POST | Chat tool: Search issues |
/tools/get_issue |
POST | Chat tool: Get issue details |
/tools/add_comment |
POST | Chat tool: Add comment |
When creating issues, you can specify priority:
| Priority | Color | Description |
|---|---|---|
| π΄ Urgent | Red | Critical issues needing immediate attention |
| π High | Orange | Important issues to address soon |
| π‘ Medium | Yellow | Standard priority issues |
| π΅ Low | Blue | Nice-to-have or backlog items |
| βͺ None | Gray | No priority set |
- Complete the Linear OAuth flow by clicking "Connect Linear" in app settings
- Ensure you have access to at least one team in your Linear workspace
- Try reconnecting your Linear account
- Verify the issue identifier is correct (e.g., "ENG-123")
- Ensure the issue exists in a team you have access to
- Check that the status name is valid for your team's workflow
- Try using standard names: "Backlog", "Todo", "In Progress", "Done"
MIT License - feel free to modify and distribute.
For issues or feature requests, please open an issue on GitHub or contact the Omi community.
Made with β€οΈ for Omi