Lookout is a modular weather station dashboard built with Streamlit, Ambient Weather API, and S3-compatible storage (Storj). It supports data collection, archiving, visualization, and CLI-based maintenance tasks.
lookout/
├── api/ # API clients (e.g. Ambient Weather)
├── core/ # Data processing and visualization
├── storage/ # S3/Storj integration
├── utils/ # Logging and shared utilities
├── cli/ # Command-line scripts (e.g. catchup)
├── config.py # Shared config
├── __init__.py # Package root
streamlit_app.py # Main dashboard entry point
git clone https://github.com/yourusername/lookout.git
cd lookoutpython3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtOptional: Use
env_lookout_frozen.ymlif you're managing with Conda.
Create a .streamlit/secrets.toml file or use Streamlit CLI to store:
AMBIENT_API_KEY = "..."
AMBIENT_APPLICATION_KEY = "..."
AWS_ACCESS_KEY_ID = "..."
AWS_SECRET_ACCESS_KEY = "..."
# connnect to the lookout bucket on storj.io
[lookout_storage_options]
ACCESS_KEY_ID = "..."
SECRET_ACCESS_KEY = "..."
ENDPOINT_URL = "https://gateway.storjshare.io"
──streamlit run streamlit_app.pyPYTHONPATH=. python lookout/cli/catchup.pyUse with cron (with logging + jitter):
lookout/bin/cron_run.sh --sleep 300 lookout/cli/catchup.pyTest files live in the test/ directory and mirror the lookout/ package structure.
- Code formatted with Black and Ruff
- Imports are fully qualified (
lookout.api.ambient_client) - Logging is centralized in
log_util.py - Follows standards defined in
code_standards.md
- Streamlit
- Pandas / NumPy
- Requests
- Boto3 (for S3/Storj)
- Plotly
- Ambient Weather API
Maintained by @stonematt
Licensed under the MIT License