weathercli
Weather CLI
Use the weathercli command to retrieve weather information for any location worldwide.
Commands
Current Weather
Get real-time weather conditions including temperature, humidity, wind, and precipitation.
weathercli current "<location>"
weathercli current "<location>" --json
Returns: Current temperature, "feels like" temperature, humidity %, wind speed/direction, pressure, cloud cover, UV index, precipitation, weather condition description, and timestamp in local timezone.
Forecast
Get daily or hourly weather forecasts.
# Daily forecast (default: 7 days, max: 16)
weathercli forecast "<location>" --days <N>
# Hourly forecast (max: 384 hours)
weathercli forecast "<location>" --hourly --hours <N>
# JSON output for parsing
weathercli forecast "<location>" --json
Returns: For each day/hour: temperature (high/low or current), weather condition, precipitation probability and amount, wind speed/direction, UV index, sunrise/sunset times (daily only).
Location Search
Find coordinates and timezone information for a location.
weathercli search "<location>"
weathercli search "<location>" --json
Returns: Location name, coordinates (lat/lon), country, region/state, timezone.
Location Format
Locations are flexible and geocoded automatically:
- City names:
"London","Tokyo","New York" - City + country:
"Paris, France","Berlin, Germany" - City + state/region:
"Portland, Oregon","Barcelona, Catalonia" - Ambiguous names: Add country/region for precision
Options
--json- Output structured JSON (recommended for parsing)--no-color- Disable color output (for plain text parsing)--days N- Number of days for forecast (1-16, default: 7)--hourly- Show hourly instead of daily forecast--hours N- Number of hours for hourly forecast (1-384)--verbose- Show detailed request information
Output Format
Human-Readable (default)
Color-coded temperatures, formatted with emojis and units. Times shown in location's local timezone.
JSON Structure
Current weather:
{
"location": {
"name": "Tokyo",
"latitude": 35.6895,
"longitude": 139.6917,
"country": "Japan",
"timezone": "Asia/Tokyo"
},
"time": "2026-01-12T18:45:00+09:00",
"temperature": 4.7,
"apparent": 1.8,
"humidity": 66,
"wind_speed": 3.6,
"wind_direction": 135,
"condition": "Clear sky",
"weather_code": 0,
"precipitation": 0,
"cloud_cover": 0,
"pressure": 1015.2,
"uv_index": 0
}
Forecast:
{
"location": { ... },
"daily": [
{
"date": "2026-01-12",
"temp_max": 12.1,
"temp_min": 4.3,
"condition": "Slight rain",
"precip_prob": 75,
"precipitation": 1.5,
"sunrise": "2026-01-12T08:04:00+09:00",
"sunset": "2026-01-12T16:45:00+09:00",
"wind_speed_max": 15.3,
"wind_direction": 202,
"uv_index_max": 2.4
}
]
}
Usage Guidelines
When to Use
- User asks for weather, temperature, forecast, or conditions
- Planning activities and need weather data
- Checking if it will rain, snow, or be sunny
- Getting climate information for travel planning
- Need sunrise/sunset times
- Comparing weather across locations
Location Handling
- If user provides clear location, use it directly
- If ambiguous (e.g., "Portland"), ask for clarification or add context
- If location not found, suggest checking spelling or adding country
- For coordinates, use
searchcommand first to validate
Parsing Output
- Always use
--jsonfor programmatic parsing - Extract
temperature,condition,wind_speedfor quick summaries - Check
precip_probfor rain likelihood - Use
sunrise/sunsetfor daylight planning weather_codefollows WMO standard (0-99)
Best Practices
- Request 3-5 days for travel planning (not full 16)
- Use hourly forecast for detailed day planning
- Check
apparenttemperature for "feels like" comfort - UV index >3 = recommend sun protection
- Wind speed >20 km/h = mention it's windy
Examples
Quick weather check:
weathercli current "London" --json | jq '.temperature, .condition'
Week forecast for trip:
weathercli forecast "Barcelona" --days 5 --json
Detailed today's hourly:
weathercli forecast "Seattle" --hourly --hours 24
Check multiple cities:
for city in "Tokyo" "London" "New York"; do
weathercli current "$city" --json | jq -r '"\(.location.name): \(.temperature)°C, \(.condition)"'
done
Find exact location:
weathercli search "Springfield" --json
Notes
- No API key required - Uses free Open-Meteo API
- Worldwide coverage - Works for any location globally
- Temperatures in Celsius - Convert if needed (°F = °C × 9/5 + 32)
- Wind speed in km/h - Convert to mph if needed (×0.621)
- Local timezone - All times automatically converted
- Rate limits - Reasonable for personal/agent use; avoid hammering
- Accuracy - Data from multiple meteorological sources
- Updates - Current weather updates every 15 minutes
- Offline - Requires internet connection
Error Handling
Location not found:
Error: location not found: Atlantis
→ Check spelling, try adding country/region
Network error:
Error: weather API error: network timeout
→ Retry after brief delay
Invalid input:
Error: invalid days value
→ Check --days is between 1-16
Installation
If weathercli is not available:
# Via Go
go install github.com/pjtf93/weathercli/cmd/weathercli@latest
# Or download binary from releases
# https://github.com/pjtf93/weathercli/releases