A Neovim plugin for integrating WHOOP fitness data directly into your development environment.
whoop.nvim provides seamless access to your WHOOP recovery, sleep, and workout data without leaving Neovim. View your physiological metrics through an elegant terminal interface designed for developers.
- Interactive Dashboard: Visualize recovery scores, sleep metrics, and recent workouts
- Real-time Data: Direct integration with WHOOP API v2
- Secure Authentication: OAuth 2.0 with local token storage
- Configurable Refresh: Automatic and manual data updates
- Vim-native Interface: Keyboard-driven navigation with familiar motions
- Neovim 0.8+
- plenary.nvim
- nui.nvim
- WHOOP membership with developer API access
{
"idossha/whoop.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
},
config = function()
require("whoop").setup({
client_id = vim.env.WHOOP_CLIENT_ID,
client_secret = vim.env.WHOOP_CLIENT_SECRET,
})
end,
}use {
"idossha/whoop.nvim",
requires = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
},
config = function()
require("whoop").setup({
client_id = vim.env.WHOOP_CLIENT_ID,
client_secret = vim.env.WHOOP_CLIENT_SECRET,
})
end,
}require("whoop").setup({
-- API credentials (required)
client_id = os.getenv("WHOOP_CLIENT_ID"),
client_secret = os.getenv("WHOOP_CLIENT_SECRET"),
-- Data refresh settings
refresh_interval = 3600, -- seconds
auto_refresh = true,
default_days = 7, -- days of historical data
-- UI preferences
theme = "auto", -- "light", "dark", or "auto"
show_trends = true,
-- Key mappings
mappings = {
dashboard = "<leader>wd",
refresh = "<leader>wr",
sync = "<leader>ws",
},
})For security, store credentials in environment variables:
# Add to ~/.bashrc, ~/.zshrc, or similar
export WHOOP_CLIENT_ID="your_client_id"
export WHOOP_CLIENT_SECRET="your_client_secret"Obtain credentials from the WHOOP Developer Dashboard.
| Command | Description |
|---|---|
:WhoopDashboard |
Open fitness dashboard |
:WhoopRefresh |
Force data refresh |
:WhoopAuth |
Authenticate with WHOOP |
:WhoopTest |
Test API connectivity |
:WhoopClearAuth |
Clear authentication data |
- Initial Setup: Run
:WhoopAuthto authenticate with WHOOP - View Dashboard: Press
<leader>wdor run:WhoopDashboard - Refresh Data: Press
rin dashboard or run:WhoopRefresh - Navigate: Use standard Vim motions to navigate
r— Refresh dataq/<Esc>— Close dashboard
- Recovery score percentage with visual indicator
- Resting heart rate
- Heart rate variability (HRV)
- Total sleep duration
- Sleep efficiency percentage
- Recent activities with strain scores
- Up to 3 most recent workouts displayed
Your access token has expired. Run :WhoopAuth to re-authenticate.
Ensure you have:
- Valid WHOOP membership
- Recent WHOOP device sync
- Active internet connection
Verify the plugin loaded correctly:
:checkhealth whoopwhoop.nvim stores all data locally on your device. No personal information is transmitted to third parties except authenticated requests to the WHOOP API.
See PRIVACY.md for details.
MIT License — see LICENSE for details.
Contributions are welcome. Please submit issues and pull requests via GitHub.
- WHOOP for providing the Developer API
- Contributors to plenary.nvim and nui.nvim
