California Irrigation Management

Weather Data at Light Speed

Stream, store, and query CIMIS weather data with industrial-grade efficiency. Built for precision agriculture and data science workflows.

2M-5M Records/Sec Read
3-5× Compression Ratio
500K-1M Records/Sec Write
cimis-cli
$
Fetching 3 stations with streaming JSON decode...
Station 2: 366 records in 1.28s DNS: 45ms | TLS: 89ms | Decode: 45ms
Station 5: 366 records in 1.24s Compressed: 1,872 bytes (3.14× ratio)
✓ Total: 1,098 records fetched and stored

Engineered for
Performance

Streaming JSON Decode

Process API responses as they arrive. No buffering, no memory bloat. 60-70% memory reduction versus traditional approaches.

Parallel Station Fetching

Worker pools with configurable concurrency. Fetch 100 stations simultaneously with automatic retry and exponential backoff.

Compressed Storage

Zstd compression with 2.68× ratio. Store years of daily data in megabytes, not gigabytes. Atomic writes prevent corruption.

Auto-Tune Compression

Automatically find the optimal zstd compression level for your data. Analyzes sample data and selects the best ratio for production.

Delta Encoding

Columnar storage with delta encoding for time-series data. Reduces storage by storing differences instead of absolute values.

Run-Length Encoding

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.

Numbers That
Speak

Production performance on modern hardware. Optimized C storage engine with dictionary-trained compression and columnar encoding.

Read Throughput
2M-5M rec/s
Write Throughput
500K-1M rec/s
Compression
3-5× ratio
Query Latency
<1ms
Storage Format 16 bytes/record
Timestamp
4 bytes
Station ID
2 bytes
Temp/ET/Wind
6 bytes
Humidity/Solar/QC
3 bytes
Reserved
1 byte
💡 Fixed-point encoding with optimized binary format. Supports 136 years of data with sub-second queries.

Install in Seconds

Recommended

Homebrew

brew install dl-alexandre/tap/cimis

Binary Download

curl -LO .../cimis-darwin-arm64 && chmod +x cimis

Build from Source

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

Common Workflows

Stream weather data with detailed metrics

Fetch multiple stations with automatic retry, compression, and per-phase timing.

cimis fetch-streaming \
  -stations 2,5,10,15 \
  -year 2024 \
  -concurrency 8 \
  -perf

Query stored data with intelligent caching

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

Ingest historical data across all stations

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