Skip to main content

Rust-powered WRF post-processing — fixes CAPE, SRH, adds 65+ variables, 5-30x faster than wrf-python

Project description

wrf-rust

Rust-powered WRF post-processing with Python bindings. 83 diagnostic variables, built-in plotting, and parallel computation.

Install

pip install wrf-rust

Pre-built wheels for Python 3.10-3.13 on Linux, macOS, and Windows. No Rust toolchain, no system libraries, no conda required.

Usage

from wrf import WrfFile, getvar

f = WrfFile("wrfout_d01_2024-06-01_00:00:00")

# Basic fields
temp = getvar(f, "temp", units="degC")
slp  = getvar(f, "slp",  units="hPa")
wspd = getvar(f, "wspd", units="knots")

# CAPE with parcel selection
sbcape = getvar(f, "sbcape")
mlcape = getvar(f, "mlcape")
mucape = getvar(f, "mucape")
sb3cap = getvar(f, "sbcape", top_m=3000)           # 0-3 km CAPE

# Custom parcel
cape = getvar(f, "cape", parcel_pressure=850,
              parcel_temperature=20, parcel_dewpoint=15)

# SRH with Bunkers storm motion
srh1 = getvar(f, "srh1")                            # 0-1 km
srh3 = getvar(f, "srh3")                            # 0-3 km
srh  = getvar(f, "srh", depth_m=1500, storm_motion=(12, 8))

# Effective inflow layer
eff_srh  = getvar(f, "effective_srh")
eff_cape = getvar(f, "effective_cape")

# Severe composites
stp     = getvar(f, "stp")                           # fixed-layer
stp_eff = getvar(f, "stp", layer_type="effective")   # effective-layer
scp     = getvar(f, "scp")
ehi     = getvar(f, "ehi", depth_m=3000)             # 0-3 km EHI

# Configurable layers
shear = getvar(f, "bulk_shear", bottom_m=1000, top_m=6000)
mw    = getvar(f, "mean_wind",  bottom_m=0, top_m=6000)
lr    = getvar(f, "lapse_rate", bottom_p=700, top_p=500)
lr_v  = getvar(f, "lapse_rate", bottom_m=0, top_m=3000, use_virtual=True)

# Lake interpolation (removes 2m artifacts over water bodies)
cape = getvar(f, "sbcape", lake_interp=1000)         # interp lakes < 1000 km2

# All timesteps
slp_all = getvar(f, "slp", timeidx=None)             # shape (nt, ny, nx)

Also accepts netCDF4.Dataset directly:

from netCDF4 import Dataset
slp = getvar(Dataset("wrfout_d01..."), "slp")

Plotting

from wrf import plot_field, plot_wind, plot_skewt, panel

plot_field(f, "sbcape")                               # auto colormap + cartopy
plot_field(f, "sbcape", style="solar7")               # Solarpower07 colormaps
plot_wind(f)                                           # wind barbs
plot_skewt(f, point=(35.0, -97.5))                    # Skew-T with hodograph
panel(f, ["sbcape", "srh1", "stp", "shear_0_6km"])   # multi-panel

# Multi-timestep with consistent scale + GIF
from wrf.plot import render_timesteps
render_timesteps(f, "sbcape", timesteps=[0,1,2,3],
                 gif=True, fixed_scale=True)

CLI

python -m wrf info  wrfout_d01_2024-06-01_00:00:00
python -m wrf stats wrfout_d01_2024-06-01_00:00:00 sbcape slp temp
python -m wrf plot  wrfout_d01_2024-06-01_00:00:00 slp -o slp.png
python -m wrf panel wrfout_d01_2024-06-01_00:00:00 sbcape srh1 stp -o severe.png

Benchmark vs wrf-python

Tested on a 199x199x79 WRF grid. All values match exactly (rel_err=0.00).

Variable wrf-python wrf-rust Speedup
Temperature 0.268s 0.004s 76x
Potential temp 0.088s 0.003s 26x
Abs. vorticity 0.173s 0.015s 11x
Relative humidity 0.353s 0.097s 4x
Precipitable water 0.224s 0.077s 3x
Reflectivity 0.494s 0.234s 2x
SLP 0.517s 0.497s 1x
Wind destagger 0.089s 0.081s 1x

Plus 17 variables wrf-python doesn't have (STP, SCP, EHI, critical angle, shear, Bunkers, lapse rates, fire indices, effective inflow layer).

Variables

83 diagnostic variables. All support units= parameter.

Thermodynamics

temp tc theta theta_e theta_w tv twb td rh

Pressure & height

pressure slp height height_agl terrain geopt omega

Moisture

pw rh2m dp2m mixing_ratio specific_humidity

CAPE & convection

sbcape sbcin mlcape mlcin mucape mucin cape cin lcl lfc el effective_cape effective_inflow cape2d cape3d

All CAPE variables support top_m for truncated integration (e.g. top_m=3000 for 3CAPE). Generic cape/cin accept parcel_type or custom parcel (parcel_pressure, parcel_temperature, parcel_dewpoint).

Wind

ua va wa wspd wdir wspd10 wdir10 uvmet uvmet10

SRH & shear

srh1 srh3 srh effective_srh shear_0_1km shear_0_6km bulk_shear mean_wind bunkers_rm bunkers_lm mean_wind_0_6km

SRH uses Bunkers Internal Dynamics method. All accept storm_motion=(u,v).

Severe composites

stp stp_fixed stp_effective scp ehi critical_angle ship bri

STP supports layer_type="effective" for the 5-term formula with MLCIN.

Radar & cloud

dbz maxdbz ctt cloudfrac uhel

Vorticity

avo pvo

Lapse rates & levels

lapse_rate_700_500 lapse_rate_0_3km lapse_rate freezing_level wet_bulb_0

Generic lapse_rate accepts bottom_m/top_m or bottom_p/top_p, plus use_virtual=True.

Fire weather

fosberg haines hdw

Parameters

Parameter Description
units Output unit conversion (every variable)
parcel_type "sb", "ml", "mu" for CAPE
parcel_pressure/temperature/dewpoint Custom parcel (hPa, degC, degC)
top_m / bottom_m Layer bounds in m AGL
top_p / bottom_p Layer bounds in hPa
depth_m SRH/EHI depth (m AGL)
storm_motion Custom (u, v) in m/s
layer_type "fixed" or "effective" for STP
use_virtual Virtual temperature for lapse rates
lake_interp Interpolate 2m fields over lakes < N km2

Building from source

Only needed for development. Users should pip install wrf-rust.

git clone https://github.com/FahrenheitResearch/wrf-rust.git
cd wrf-rust
pip install maturin
maturin develop --release

License

MIT

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

wrf_rust-0.2.2.tar.gz (112.9 kB view details)

Uploaded Source

Built Distributions

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

wrf_rust-0.2.2-cp313-cp313-win_amd64.whl (586.5 kB view details)

Uploaded CPython 3.13Windows x86-64

wrf_rust-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (746.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (735.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.2-cp313-cp313-macosx_11_0_arm64.whl (668.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

wrf_rust-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl (680.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

wrf_rust-0.2.2-cp312-cp312-win_amd64.whl (586.9 kB view details)

Uploaded CPython 3.12Windows x86-64

wrf_rust-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (747.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (736.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (668.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

wrf_rust-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl (680.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

wrf_rust-0.2.2-cp311-cp311-win_amd64.whl (586.5 kB view details)

Uploaded CPython 3.11Windows x86-64

wrf_rust-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (747.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (735.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (671.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

wrf_rust-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl (683.8 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

wrf_rust-0.2.2-cp310-cp310-win_amd64.whl (586.4 kB view details)

Uploaded CPython 3.10Windows x86-64

wrf_rust-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (747.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

wrf_rust-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (735.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

wrf_rust-0.2.2-cp310-cp310-macosx_11_0_arm64.whl (671.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

wrf_rust-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl (683.6 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file wrf_rust-0.2.2.tar.gz.

File metadata

  • Download URL: wrf_rust-0.2.2.tar.gz
  • Upload date:
  • Size: 112.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.2.tar.gz
Algorithm Hash digest
SHA256 637adee2c5354a356530611b11f9ae553a16ddc1054eaa96f6b88bca812c66f6
MD5 c3414f67efbdb7c64efaee9a6f4ab0d8
BLAKE2b-256 059d2e7a8f5768f69244c06f21ccb1dcc52203df24652af8947095adc4562def

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: wrf_rust-0.2.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 586.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fc37673bebdd5b6faa910de033dbce0d6b2beffd9eb4c4e068881f074c3bbaab
MD5 18d3a7270f815887e5dbf8a9665adec7
BLAKE2b-256 32816cd599cb8db048eccca07f8d776159faaadfde228802340b0e5cc4b863f2

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64391775c656d37805f6ed022c60a4288ea044dbf20a4923bbbb39d875cd5224
MD5 e6611b8f32017fe9a8ceb6f3cd26446f
BLAKE2b-256 c360e6ec15ea197e373263e10fb6474111f60436747af8ba98ff0da81bcbdd3c

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6577a3d1f9dc3dde7f9aeda0e3c9246b24bc3a5fb97e00321d2b8cae99e14bd7
MD5 c19139f4e6f4940481ebf6b8b0236c4b
BLAKE2b-256 4e7ea6071e47f335a03fb34d52c7aa1ebaf8195c13dfabb6fadfa563bb0bbf67

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12d12850dd924018c8513fc29b6440b4a80f7df15800a999ddcf39eb9d51c32c
MD5 126a5b558f58e55d0b51b797a2b1a84f
BLAKE2b-256 22e073841d0609c8c0f7451bb762cd9afe8c079a7ef4d7a4ac8acdaacbe2f495

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8ba26d967ddc148c5ee40aa5619ad0e4e96e94a7c1d7ecca263e160a932f951e
MD5 1a88b699ea20ca1381324c5deb294066
BLAKE2b-256 cd8b380f93eb9dd79de1ce2caddc43745f1d84aa2c6dd94ce161ada2fa27e59b

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: wrf_rust-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 586.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d61323fe15fb020d7b649fcaa04604b9d76b2b7160a75457737057e9ca61a1d5
MD5 2142add540f560760a7b99b2a97759eb
BLAKE2b-256 c4b9ff06a1f93733aee367f2e6377069d2c0748b7b950b9c5b113fd835c8acbf

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 69e0211399307258f9a98a7754febb524352d07dd450e222cd71258e4236176b
MD5 fe9316f6e8eb730b9eb589e6dc0975cd
BLAKE2b-256 c63c87805fe2d9cd854d360adc667a59d541873cc16c603a7529cfd5007d00e1

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ed5eda7b572dc6fd69b799da2e1aed9610b3869f721a99dca55d5f00c74187bd
MD5 ab8524d198860ee3d032f1adb2c08ba0
BLAKE2b-256 daa3f29ab89b680dfb8c16b36ff7efec74c0e54e36535936719c650aea097efc

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9be952dada37f9f16024d3cbd4bef6f076aa5839e38d7fbc6826aa5c5a397669
MD5 4e1dfab946652bc12e90c5b2c0d38259
BLAKE2b-256 51f85271a8416ce387effabd6895da37f46aa8e911fe04151e3fda93308383fb

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2a496dada3134ea294bb51b5187d80096a3717c96a2c98292501fa30ea4247c4
MD5 03d0bcf646309a5c9c18e70ea1f96a04
BLAKE2b-256 e34bdf95c19e3d3d969268b75f0986b3fca2ba3838a90ef7d599ee09bd9b1d68

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: wrf_rust-0.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 586.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 58d12f6bfa3342409546ddedadb187fd0a7d22a6785d7c279b0849d940413d8c
MD5 473c68c86b0397f029f94d0e3c447089
BLAKE2b-256 c3ad24ba42520f1bdcfe2c1a7428abf54717cf347bbc3a3798ca449d5f7bb004

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c69528cb53d71ec915528e2e5215f3110292977694c1467d7ad47ba3dec6987e
MD5 73cef2a075f9d987cfae387e05ac6f17
BLAKE2b-256 b65647905d3a5ce30be02e125eb443b5d8b14171b80c259a6b812bc345beedda

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9a01b4f8b47e560cb0a2eeaa80774072c829263492365a98d5d88a058d8562c0
MD5 f4dd619dbf4e2a396a60d109b38d0b54
BLAKE2b-256 b4b56be302f1ba2828f9ebb9c016afb3313cbbe2b106124b54cc8b9a1491a74c

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 89c94dbc06ac77702308285f0211efc1f7ef332f87184443b20a5ac4dca3b270
MD5 e7dc2233791c3b73f64b039e37b01751
BLAKE2b-256 43948392408610595c33a17a46fb32ecc63e4d2f92e55b2fcede614152b18d89

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 41a92bbdd17670ff334a266c29f65f0f6c6ca72af2fe3c0fcc1595457f578ddc
MD5 1dbcdf049963f5da62c9dd1564bc77af
BLAKE2b-256 08ba45e89664688300fe33311733a8039ca73d8a4919ea1ea5e1aff9330ccf6e

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: wrf_rust-0.2.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 586.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.12.6

File hashes

Hashes for wrf_rust-0.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 51e93d515b44d778ddc8e8a9562233d0e7677fe71780197565315389022a65d5
MD5 137aaa10d00c5272f5704a86f0724a8c
BLAKE2b-256 11694548ed50d8e28eb1409079c2a9b1fb2bb2f86b90d5269698ee91b68d9690

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f893c41cfa0d54501aa8f9aa022f80e2b74c722d2130e84f51e6a0dbd5b85e88
MD5 7a0f18594c7774129196929edf3c2997
BLAKE2b-256 f8639d730217beeb1321837e2376a4950a28695c8d286a7c6c67ac781f14ec98

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a0c9a195718a3565e557ffe9c3307356faae4a539b5db2f9815a1a0b0b1afada
MD5 58d0160cbfb993b8c34d6a6ba5149d10
BLAKE2b-256 33f0754209f6b1ae410a770a20c1d9703e0815820322f7b87d9fab7bb187854c

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 62e6f08dddbdea3e7037966b41f211b1c90ede70c73e393f0fcac6f0a45cf72c
MD5 d2e217957f8a91fdd762cdb8f89bff7f
BLAKE2b-256 b5bdeea7703f4bcb99cd72bbaf5e953cc0cf8f570cc4093355248b9990b385e3

See more details on using hashes here.

File details

Details for the file wrf_rust-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for wrf_rust-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fbe405b7778c4635ce8318f446315675fe121d4ac2988221b3da4444f8eb3428
MD5 25d758b8f96c5cacbb71418d105b3204
BLAKE2b-256 f2f7aab20b677ab83ed20b81c45e4ec65b6ec9c38dd9ce8411d83abdad0dcb20

See more details on using hashes here.

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