Track your recovery, strain, sleep, and workouts from your Whoop through Omi chat.
Recovery Score - Check your daily recovery and HRV
Strain Score - View your daily strain level
Sleep Data - See sleep duration, stages, and quality
Workouts - Review your recent training sessions
Weekly Summary - Get trends and averages
Body Measurements - View height, weight, max HR
Profile - Access your Whoop profile info
1. Create Whoop Developer App
Go to Whoop Developer Portal
Create a new application
Fill in application details:
Name: "Omi Integration"
Description: Your app description
Redirect URI: Add your callback URL (see below)
Request the following scopes:
read:recovery
read:cycles
read:sleep
read:workout
read:profile
read:body_measurement
offline
Copy the Client ID and Client Secret
Create a new project on Railway
Connect your GitHub repo or deploy from this folder
Add a Redis service to your project
Set environment variables:
WHOOP_CLIENT_ID=your_client_id
WHOOP_CLIENT_SECRET=your_client_secret
WHOOP_REDIRECT_URI=https://your-app.up.railway.app/auth/whoop/callback
Deploy! Railway will automatically:
Install dependencies from requirements.txt
Start the server using railway.toml config
Provide PORT and REDIS_URL environment variables
3. Update Whoop OAuth Redirect URI
After deployment, update your Whoop app's redirect URI:
https://your-app.up.railway.app/auth/whoop/callback
When creating/updating the Omi app, use these URLs:
Field
Value
Setup URL
https://your-app.up.railway.app/?uid={{uid}}
Setup Completed URL
https://your-app.up.railway.app/setup/whoop?uid={{uid}}
Chat Tools Manifest URL
https://your-app.up.railway.app/.well-known/omi-tools.json
Endpoint
Description
/tools/get_recovery
Get recovery score and HRV
/tools/get_strain
Get daily strain score
/tools/get_sleep
Get sleep data
/tools/get_workouts
Get recent workouts
/tools/get_weekly_summary
Get weekly averages
/tools/get_body_measurements
Get body measurements
/tools/get_profile
Get user profile
Endpoint
Description
/
Home page / setup UI
/auth/whoop?uid=<uid>
Start OAuth flow
/auth/whoop/callback
OAuth callback
/setup/whoop?uid=<uid>
Check setup status
/disconnect?uid=<uid>
Disconnect account
/health
Health check
/.well-known/omi-tools.json
Chat tools manifest
Copy .env.example to .env and fill in your credentials
Set WHOOP_REDIRECT_URI=http://localhost:8080/auth/whoop/callback
Add this to your Whoop app's redirect URIs
Install dependencies: pip install -r requirements.txt
Run: python main.py
Variable
Description
Required
WHOOP_CLIENT_ID
Whoop OAuth Client ID
Yes
WHOOP_CLIENT_SECRET
Whoop OAuth Client Secret
Yes
WHOOP_REDIRECT_URI
OAuth callback URL
Yes
PORT
Server port (default: 8080)
No
REDIS_URL
Redis connection URL
No (uses file storage if not set)
"What's my recovery today?"
"How did I sleep last night?"
"What's my strain level?"
"Show my recent workouts"
"Give me my weekly summary"
"What's my HRV?"
Understanding Whoop Metrics
Green (67-100%) : High recovery, ready for strain
Yellow (34-66%) : Moderate recovery, proceed with caution
Red (0-33%) : Low recovery, prioritize rest
0-9 : Light day
10-13 : Moderate strain
14-17 : High strain
18-21 : Overreaching (very high)
HRV (Heart Rate Variability) : Higher is generally better
RHR (Resting Heart Rate) : Lower is generally better
Sleep Performance : How well you met your sleep need
Sleep Efficiency : Time asleep vs time in bed