Nori Health Coach
Send health questions to Nori and return the response. Nori analyzes data from wearables (Apple Watch, Oura, Garmin, Whoop, etc.), meals, workouts, weight, and lab results.
Setup
- Install the Nori iOS app and connect your wearables
- In the Nori app, go to Settings > Integrations > OpenClaw
- Generate an API key (starts with
nori_)
- Set the environment variable:
export NORI_API_KEY="nori_your_key_here"
Or add to ~/.openclaw/openclaw.json:{
"skills": {
"entries": {
"nori-health": {
"apiKey": "nori_your_key_here"
}
}
}
}
When to Use
- "Compare my sleep on days I work out vs rest days"
- "What should I eat to hit my protein goal today?"
- "Show me my resting heart rate trend this month"
- "How's my recovery looking after yesterday's run?"
- "I had two eggs and toast with avocado for breakfast"
- "I did 30 minutes of strength training"
- "What patterns do you see between my sleep and HRV?"
Usage
Send the user's message to Nori via the chat endpoint. Always forward the user's exact words.
Use jq -n to safely escape the user's message into valid JSON, and capture the HTTP status code to handle errors:
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "https://api.nori.health/api/v1/openclaw/chat" \
-H "Authorization: Bearer $NORI_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg msg "USER_MESSAGE_HERE" '{message: $msg}')")
HTTP_CODE=$(echo "$RESPONSE" | tail -1)
BODY=$(echo "$RESPONSE" | sed '$d')
if [ "$HTTP_CODE" -eq 200 ]; then
echo "$BODY" | jq -r '.reply'
elif [ "$HTTP_CODE" -eq 401 ]; then
echo "Your Nori API key is invalid. Please regenerate it in the Nori app under Settings > Integrations > OpenClaw."
elif [ "$HTTP_CODE" -eq 429 ]; then
echo "Rate limited. Wait a moment and try again."
else
echo "Something went wrong connecting to Nori (HTTP $HTTP_CODE)."
fi
Response Handling
- On success (200): return the
.reply field directly to the user as plain text. Do not add markdown formatting, bullet points, or other decoration.
- On 401: tell the user their Nori API key is invalid and to regenerate it in the Nori app.
- On 429: tell the user to wait a moment and try again.
- On other errors: tell the user something went wrong connecting to Nori, including the HTTP status code.
Important
- Forward the user's message verbatim. Do not rephrase, summarize, or add context.
- Return Nori's reply verbatim. Do not reformat, summarize, or add commentary.
- Nori handles all health data analysis, logging, and coaching. Your job is just to relay messages.
- Nori is not a medical service. If the user asks for medical diagnosis or emergency help, direct them to a doctor or emergency services instead.
1---2name: nori-health3description: Nori Health Coach4---56# Nori Health Coach78Send health questions to Nori and return the response. Nori analyzes data from wearables (Apple Watch, Oura, Garmin, Whoop, etc.), meals, workouts, weight, and lab results.910## Setup11121. Install the Nori iOS app and connect your wearables132. In the Nori app, go to Settings > Integrations > OpenClaw143. Generate an API key (starts with `nori_`)154. Set the environment variable:16 ```bash17 export NORI_API_KEY="nori_your_key_here"18 ```19 Or add to `~/.openclaw/openclaw.json`:20 ```json21 {22 "skills": {23 "entries": {24 "nori-health": {25 "apiKey": "nori_your_key_here"26 }27 }28 }29 }30 ```3132## When to Use3334- "Compare my sleep on days I work out vs rest days"35- "What should I eat to hit my protein goal today?"36- "Show me my resting heart rate trend this month"37- "How's my recovery looking after yesterday's run?"38- "I had two eggs and toast with avocado for breakfast"39- "I did 30 minutes of strength training"40- "What patterns do you see between my sleep and HRV?"4142## Usage4344Send the user's message to Nori via the chat endpoint. Always forward the user's exact words.4546Use `jq -n` to safely escape the user's message into valid JSON, and capture the HTTP status code to handle errors:4748```bash49RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "https://api.nori.health/api/v1/openclaw/chat" \50 -H "Authorization: Bearer $NORI_API_KEY" \51 -H "Content-Type: application/json" \52 -d "$(jq -n --arg msg "USER_MESSAGE_HERE" '{message: $msg}')")53HTTP_CODE=$(echo "$RESPONSE" | tail -1)54BODY=$(echo "$RESPONSE" | sed '$d')5556if [ "$HTTP_CODE" -eq 200 ]; then57 echo "$BODY" | jq -r '.reply'58elif [ "$HTTP_CODE" -eq 401 ]; then59 echo "Your Nori API key is invalid. Please regenerate it in the Nori app under Settings > Integrations > OpenClaw."60elif [ "$HTTP_CODE" -eq 429 ]; then61 echo "Rate limited. Wait a moment and try again."62else63 echo "Something went wrong connecting to Nori (HTTP $HTTP_CODE)."64fi65```6667## Response Handling6869- On success (200): return the `.reply` field directly to the user as plain text. Do not add markdown formatting, bullet points, or other decoration.70- On 401: tell the user their Nori API key is invalid and to regenerate it in the Nori app.71- On 429: tell the user to wait a moment and try again.72- On other errors: tell the user something went wrong connecting to Nori, including the HTTP status code.7374## Important7576- Forward the user's message verbatim. Do not rephrase, summarize, or add context.77- Return Nori's reply verbatim. Do not reformat, summarize, or add commentary.78- Nori handles all health data analysis, logging, and coaching. Your job is just to relay messages.79- Nori is not a medical service. If the user asks for medical diagnosis or emergency help, direct them to a doctor or emergency services instead.