Stream, store, and query CIMIS weather data with industrial-grade efficiency. Built for precision agriculture and data science workflows.
Process API responses as they arrive. No buffering, no memory bloat. 60-70% memory reduction versus traditional approaches.
Worker pools with configurable concurrency. Fetch 100 stations simultaneously with automatic retry and exponential backoff.
Zstd compression with 2.68× ratio. Store years of daily data in megabytes, not gigabytes. Atomic writes prevent corruption.
Automatically find the optimal zstd compression level for your data. Analyzes sample data and selects the best ratio for production.
Columnar storage with delta encoding for time-series data. Reduces storage by storing differences instead of absolute values.
Compress repetitive data like QC flags using RLE. Store [0,0,0,1,1,1] as [0,3,1,3] - pairs of value and count.
Production performance on modern hardware. Optimized C storage engine with dictionary-trained compression and columnar encoding.
brew install dl-alexandre/tap/cimis
curl -LO .../cimis-darwin-arm64 && chmod +x cimis
git clone ... && cd cimis-cli && make build
Get your free CIMIS API key at cimis.water.ca.gov then run export CIMIS_APP_KEY=your-key
Fetch multiple stations with automatic retry, compression, and per-phase timing.
cimis fetch-streaming \
-stations 2,5,10,15 \
-year 2024 \
-concurrency 8 \
-perf
Retrieve specific date ranges with optional LRU caching for repeated queries.
cimis query \
-station 2 \
-start 2024-06-01 \
-end 2024-06-30 \
-cache 100MB \
-perf
Fetch years of data in parallel with optimized compression.
for year in {2020..2024}; do
cimis fetch-streaming \
-stations 1-100 \
-year $year \
-concurrency 20
done