Skip to main content

A visually pleasing terminal weather tool focusing on Real Feel and Windchill.

Project description

Isobar CLI

CI Coverage PyPI version Version Ruff Python License Security Scan

A terminal weather tool designed to provide a fast, clean sense of what the weather feels like outside; right now and for the week ahead. Built with Python and Rich.

Philosophy

Isobar CLI answers a simple question: "What does it feel like outside right now, and do I need a jacket?"

Most weather apps overwhelm with data. Isobar strips away everything except what matters when deciding how to prepare for the day.

Design Principles

  • Essential over comprehensive — Show Real Feel, not 47 data points.
  • Terminal-native — Built for quick checks within a developer workflow.
  • Zero friction — No API keys or configuration files required.
  • Information density — Clean, borderless UI for maximum readability.
  • Intentional features — Each feature must answer: "Does this help someone understand what it feels like outside?"

✨ Features

  • Auto-Locationisobar detects the city automatically 🌍
  • Weather Condition Icons — WMO-standard emoji + plain-English description (☀️ Clear sky, 🌨️ Moderate snow, ⛈️ Thunderstorm)
  • Real Feel — Apparent temperature metrics (what it actually feels like).
  • Air Quality Index — US AQI with health classifications 😷
  • 7-Day Forecast — Full week outlook with color-coded highs/lows and daily rain %
  • Hourly Outlook — Next 12 hours of temperature and rain chance (--hourly)
  • Multiple Cities — Compare weather across several cities side-by-side.
  • Smart Suggestions — Fuzzy city name matching if there is a typo.
  • Shell Completion — Tab-complete city names based on search history.
  • Dynamic Timezone — Sunrise/sunset shown in the city's local time, not yours.
  • Precipitation Forecast — Next 6h rain/snow chance and totals.
  • Smart Caching — 15-minute cache per city (~/.cache/isobar/)
  • Color-Coded Temps — Intuitive color mapping for temperature ranges.
  • Metric Support--metric or -m for Celsius, km/h, and mm.
  • No API Keys — Free Open-Meteo and ip-api.com.
  • Zero Config — Works instantly after installation.
  • Phase 7: Intuition & Analysis — Higher-level context and automated insights:
    • Preparation Guidance — Clothing and gear suggestions based on conditions 🧥☂️🧴
    • Temporal Context — Comparison with previous day conditions 📈
    • UV Index Monitoring — Sun protection guidance with intensity levels ☀️
    • Wind Gust Alerts — Highlighting of significant gust events 💨⚠️
    • Home City Persistence — Set a default city with isobar home "Your City" 🏠

🚀 Installation

The recommended way to install Isobar is via pipx:

pipx install isobar-cli

Installation is also supported via Homebrew:

brew install KnowOneActual/tap/isobar

Note: Installing via Homebrew builds several high-performance dependencies (like numpy and h3) from source. This ensures a robust, isolated install but may take 5-10 minutes to complete.

Alternatively, install directly from PyPI:

pip install isobar-cli

Or install from source:

git clone https://github.com/KnowOneActual/isobar-cli.git
cd isobar-cli
pip install .

📱 Usage

# Auto-detect location
isobar

# Specify a city
isobar Chicago
isobar London Tokyo Paris     # Multiple cities
isobar "New York"             # Use quotes for multi-word cities

# Hourly outlook (next 12h)
isobar --hourly
isobar -H

# 7-day forecast
isobar --forecast
isobar -f
isobar "San Francisco" --forecast
isobar -f Sydney

# Metric units (Celsius, km/h, mm)
isobar --metric
isobar -m
isobar Tokyo -m

# Home city management
isobar home "New York"    # Set home city
isobar home               # Show current home city
isobar home --clear       # Clear home city
isobar                    # Uses home city if set (otherwise auto-detects)

⌨️ Shell Completion

Isobar supports tab-completion for city names. To enable it for a shell:

Zsh:

isobar --install-completion zsh

Bash:

isobar --install-completion bash

(Note: A terminal restart may be required after installation).

🖥️ Example Output

               Chicago, Illinois Weather
 ☀️  Conditions:                        Mainly clear
 🌡️  Temperature:                             75.2°F
 🤔  Real Feel:                               78.5°F
 💨  Wind Speed:                             12.4 mph
 💧  Humidity:                                   65%
 ☔  Precip Chance:  30% (6h) | Light rain likely
 🌅  Sunrise:                                6:29 AM
 🌇  Sunset:                                 5:37 PM
 ☀️  UV Index:                              6.5 (High)
 💨  Wind Alert:                     ⚠️ Gusts up to 25 mph
 😷  Air Quality:                        45 (Good)

↑ 5.2°F warmer than yesterday

Preparation Guidance:
  • 🧥 Light jacket
  • 🧴 Sunscreen recommended
  • 🕶️ Sunglasses recommended

           7-Day Forecast — Chicago, Illinois
  Day            Conditions        High     Low   Rain%  UV
  Today      ☁️  Overcast         78.7°F  63.9°F    30%   7.2
  Tue Apr 1  ⛅  Partly cloudy    82.4°F  65.4°F    20%   8.1
  Wed Apr 2  🌦️  Light drizzle    76.8°F  60.9°F    45%   5.8
  Thu Apr 3  ☀️  Clear sky        80.3°F  63.5°F    10%   8.5
  Fri Apr 4  ☀️  Clear sky        83.6°F  67.1°F     5%   9.0
  Sat Apr 5  ⛅  Partly cloudy    79.8°F  64.9°F    15%   7.8
  Sun Apr 6  🌤️  Mainly clear     81.2°F  66.3°F    10%   8.3

🛠 Tech Stack

Tool Purpose
Typer CLI framework
Rich Terminal UI
Open-Meteo Weather and forecast data
ipwho.is Auto-location detection
timezonefinder Dynamic timezone resolution
pytest Unit testing framework
requests-mock API testing
Ruff Linting and formatting
pip-audit Dependency security scanning
Phase 7 Features Intuition & Analysis
config.py Persistent home city configuration
Enhanced logic.py Preparation guidance, UV monitoring, gust alerts
Updated ui.py Contextual display of insights

🔒 Security

Security is a fundamental priority for Isobar CLI. Multiple layers of automated scanning ensure the tool remains safe and secure for all users.

Security Measures

  • Vulnerability Scanning: Trivy scans the filesystem and dependencies for known vulnerabilities.
  • Static Analysis (SAST): Bandit and Semgrep analyze the code for insecure patterns.
  • Dependency Auditing: pip-audit and GitHub Dependabot ensure third-party packages stay updated.
  • Script Linting: ShellCheck enforces best practices for Bash scripts.
  • Secret Scanning: Automated checks prevent the accidental commitment of sensitive credentials.

All security scans are integrated into the CI/CD pipeline and run on every push, pull request, and weekly schedule. Results are available via the GitHub Security tab.

📈 Project Status

Phase 1 Complete — Caching and Auto-Location
Phase 2 Complete — Precipitation, Sunrise/Sunset, and Condition Icons
Phase 3 Complete — 7-Day Forecast, Dynamic Timezone, and UI Refinements
Phase 4 Complete — Quality & Trust (Security, CI/CD)
Phase 5 Complete — Testing & Reliability
Phase 6 Complete — Distribution (PyPI, Homebrew)
Phase 7 Complete — Intuition & Analysis (v1.1.0)
Refer to ROADMAP.md and CHANGELOG.md for details.

🤝 Contributing

Detailed instructions are available in CONTRIBUTING.md. New features must answer: "Does this help someone understand what it feels like outside?"

📄 License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

isobar_cli-1.1.2.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isobar_cli-1.1.2-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file isobar_cli-1.1.2.tar.gz.

File metadata

  • Download URL: isobar_cli-1.1.2.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for isobar_cli-1.1.2.tar.gz
Algorithm Hash digest
SHA256 15765fa88f0bcf75bc4a6d0a831d02c61bf4a2a33eaab0c1b669c38f472c3f97
MD5 794ea6d098bf8ea9fafe580a11b43947
BLAKE2b-256 c48a043f38d25bea4d51020f73d59ff805e9c26db0b7710c5ffd3f34c244678b

See more details on using hashes here.

Provenance

The following attestation bundles were made for isobar_cli-1.1.2.tar.gz:

Publisher: publish.yml on KnowOneActual/isobar-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file isobar_cli-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: isobar_cli-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for isobar_cli-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b8ebccb1a287996596d67943c763e1111e0015f68df6fe1332734dc8eb558dc8
MD5 ced0c2c4b6d67c5d5b095274b21dca00
BLAKE2b-256 94a384636faab5d40e06f4ab06c0c60f5b92cefdcb06116b86eef9c260395f93

See more details on using hashes here.

Provenance

The following attestation bundles were made for isobar_cli-1.1.2-py3-none-any.whl:

Publisher: publish.yml on KnowOneActual/isobar-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page