Skip to main content

goes-abi

Standalone all-Rust GOES ABI renderer, native PNG generator, XYZ tile generator, and Python package.

This package is for people who want the GOES satellite rendering pieces without installing rustwx. It downloads public NOAA GOES ABI Level 2 NetCDF files, reads them with pure Rust dependencies, applies the ABI fixed-grid projection/scaling metadata, and writes PNGs plus JSON manifests.

Features

  • GOES-16, GOES-17, GOES-18, and GOES-19 ABI products.
  • Native fixed-grid PNG renders for ABI bands and RGB products.
  • Native crop/sequence rendering for workflow-friendly regional loops.
  • XYZ Web Mercator tile generation from local ABI channel files.
  • VIIRS active-fire detection ingest through NASA FIRMS CSV/API.
  • Python bindings through maturin and a goes_abi Python module.
  • No rustwx checkout, vendored dependency tree, C NetCDF, C HDF5, or Python geospatial stack required.

Install

Install the Rust CLI directly from GitHub:

cargo install --git https://github.com/FahrenheitResearch/goes-abi

Install the Python package directly from GitHub:

python -m pip install "git+https://github.com/FahrenheitResearch/goes-abi"

Install from PyPI:

python -m pip install goes-abi

Install the optional MCP server for Claude Desktop, Codex, and other MCP clients:

python -m pip install "goes-abi[mcp]"

From a local checkout:

cargo install --path .

For Python:

python -m pip install .

For editable Python development:

python -m pip install maturin
python -m maturin develop --features python

CLI Examples

Print supported products and outputs:

goes-abi capabilities

Render the latest GOES-19 CONUS Band 13 native PNG:

goes-abi render `
  --satellite goes19 `
  --sector conus `
  --products goes_abi_band_13 `
  --width 1400 `
  --height 1100 `
  --out-dir out `
  --cache-dir cache

Render a full-disk native-resolution infrared frame:

goes-abi render `
  --satellite goes19 `
  --sector full_disk `
  --products goes_abi_band_13 `
  --width 5424 `
  --height 5424 `
  --out-dir out `
  --cache-dir cache

Render a regional native crop sequence:

goes-abi native-sequence `
  --satellite goes19 `
  --sector conus `
  --product geocolor `
  --bounds -127,-111,30,44.5 `
  --latest-count 6 `
  --out-dir out `
  --cache-dir cache

Generate XYZ tiles from local C01/C02/C03 channel files:

goes-abi web-tiles `
  --channel1 cache\path\to\C01.nc `
  --channel2 cache\path\to\C02.nc `
  --channel3 cache\path\to\C03.nc `
  --out-dir tiles `
  --min-zoom 2 `
  --max-zoom 6

Fetch recent VIIRS active-fire detections from NASA FIRMS and write JSON plus GeoJSON:

$env:FIRMS_MAP_KEY = "your_firms_map_key"
goes-abi viirs-fires `
  --source VIIRS_NOAA20_NRT `
  --west -127 `
  --east -111 `
  --south 30 `
  --north 44.5 `
  --day-range 1 `
  --min-confidence nominal `
  --out-dir out

Parse an existing FIRMS CSV without using a map key:

goes-abi viirs-fires `
  --csv-path fires.csv `
  --min-frp 10 `
  --out-dir out

Python Example

import goes_abi

report = goes_abi.render_satellite(
    satellite="goes19",
    abi_product="ABI-L2-CMIPC",
    abi_sector="conus",
    domain_slug="goes_native",
    domain_label="GOES Native",
    bounds=(-127.0, -111.0, 30.0, 44.5),
    out_dir="out",
    cache_dir="cache",
    products=["goes_abi_band_13"],
    width=1400,
    height=1100,
    download_glm=False,
    png_compression="fast",
)

print(report["artifacts"][0]["png_path"])

Fetch VIIRS active-fire detections:

import goes_abi

report = goes_abi.viirs_fires(
    source="VIIRS_NOAA20_NRT",
    bounds=(-127.0, -111.0, 30.0, 44.5),
    day_range=1,
    min_confidence="nominal",
    out_dir="out",
)

print(report["detection_count"])
print(report["geojson_path"])

MCP Server

goes-abi includes an optional stdio MCP server. It exposes tools for capabilities, native PNG rendering, native sequence rendering, XYZ tile generation from local ABI channel files, VIIRS active-fire detection ingest, and a take_a_break_wallpaper tool that renders a 5120x1440 full-disk GOES wallpaper.

Use this command in MCP clients:

goes-abi-mcp

Equivalent module form:

python -m goes_abi.mcp_server

Example MCP server config:

{
  "mcpServers": {
    "goes-abi": {
      "command": "goes-abi-mcp"
    }
  }
}

The wallpaper tool defaults to goes_airmass_rgb because it uses 2 km full-disk channels and is practical for agents to run on demand. For visible full-disk GeoColor, call it with product="goes_geocolor" and allow_high_resolution_full_disk=true; that path downloads and renders high-resolution visible channels and can take substantially more memory and time.

VIIRS Fires

The VIIRS fire path uses NASA FIRMS active-fire CSV records from NOAA-20, NOAA-21, or Suomi-NPP VIIRS sources. It can fetch from the FIRMS Area API with a map key or parse a local FIRMS CSV. The output report preserves fire point metadata including latitude, longitude, brightness temperatures, scan/track size, acquisition date/time, satellite, instrument, confidence, version, FRP, day/night flag, and the original CSV row. When out_dir is provided it also writes GeoJSON for map overlays.

FIRMS Area API reference: https://firms.modaps.eosdis.nasa.gov/api/area/csv

Supported FIRMS VIIRS sources:

VIIRS_NOAA20_NRT
VIIRS_NOAA20_SP
VIIRS_NOAA21_NRT
VIIRS_SNPP_NRT
VIIRS_SNPP_SP

Set one of these environment variables instead of passing --map-key:

$env:FIRMS_MAP_KEY = "your_firms_map_key"
$env:NASA_FIRMS_MAP_KEY = "your_firms_map_key"
$env:GOES_ABI_FIRMS_MAP_KEY = "your_firms_map_key"

Outputs

Every render or data ingest writes a JSON report next to the PNG/tile/vector output. GOES reports include scan time, source NOAA S3 keys/URLs, local cache paths, render timing, product metadata, geographic bounds, and generated artifact paths. VIIRS reports include FIRMS source metadata, filters, fire-detection summaries, detections, and optional GeoJSON paths.

Development Checks

cargo fmt --check
cargo test
cargo test --features python
cargo run --bin goes-abi -- capabilities

Release files for goes-abi 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for goes-abi 0.2.0
File Size Uploaded
goes_abi-0.2.0.tar.gz 72.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for goes-abi 0.2.0
File Interpreter ABI Platform
goes_abi-0.2.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
goes_abi-0.2.0-cp39-abi3-manylinux_2_35_x86_64.whl CPython 3.9 abi3 Linux glibc 2.35+ x86-64 Details
goes_abi-0.2.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details

Total release size: 5.9 MB

Release files / goes_abi-0.2.0.tar.gz

Download URL goes_abi-0.2.0.tar.gz
Size 72.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3791fb0d518a54c8242d917c341c150332da92c6d672ab97cfd2ad865ec0e664
BLAKE2b-256 checksum
How to use checksums
9f31d89c082424edda0095795d2f1aa82ce7d9f0e7bcc9f03351752dcbb850e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 12, 2026.

Transparency log

Release files / goes_abi-0.2.0-cp39-abi3-win_amd64.whl

Download URL goes_abi-0.2.0-cp39-abi3-win_amd64.whl
Size 1.9 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
81eba564c60d9de6a03afbc2805ae94fbf911bacd3510c65cb2bd5e51ab3200a
BLAKE2b-256 checksum
How to use checksums
31f28fe46092c6fe562637fa211a15d6b9734641900e7ecf99787f778cb32938
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 12, 2026.

Transparency log

Release files / goes_abi-0.2.0-cp39-abi3-manylinux_2_35_x86_64.whl

Download URL goes_abi-0.2.0-cp39-abi3-manylinux_2_35_x86_64.whl
Size 2.1 MB
Tags CPython 3.9 Linux glibc 2.35+ x86-64 abi3
SHA-256 checksum
How to use checksums
865a0530a788a1cf9d0e5200b31e68763ca6578501eaeeb37dd01aa8b810859b
BLAKE2b-256 checksum
How to use checksums
4b1b91225c9fdf7cb96f79f5529e2fbe9f1e6e7f02748705a2c63502e7ff2622
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 12, 2026.

Transparency log

Release files / goes_abi-0.2.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL goes_abi-0.2.0-cp39-abi3-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ec2cf81e07d19fc1b37dc7cd923ab98834e5549a69909f25e9bdff1a23629d14
BLAKE2b-256 checksum
How to use checksums
a93444b872a7c14147bcd59339d3ae0ea09cb8b8aa55b736863a6d809b8de2c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

4 release files

0.1.2

4 release files

0.1.1

4 release files

0.1.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page