Introduction
aviso is ECMWF’s notification system for data-driven workflows. It runs as a client and a server: aviso-server tracks streams of events and pushes them out in close to real time; clients connect, subscribe to the streams they care about, and react when a dataset they were waiting for has landed.
This site documents the client side. This repo holds three clients: a command-line tool, a Rust library, and a Python package. Pick the one that fits how you work.
From the command line
The aviso binary publishes notifications, listens for new ones, and replays
history. It runs on Linux and macOS.
aviso listen --event mars --identifiers '{"class":"od"}'
Start with the CLI overview.
From Python
The pyaviso package wraps the Rust core through PyO3, so you get a real Python
API: typed value objects, structured exceptions, for-iteration over a watch
stream, and the same trigger surface the CLI uses.
import os
import pyaviso
client = pyaviso.AvisoClient(base_url=os.environ["AVISO_BASE_URL"], auth=pyaviso.Env())
for notification in client.listen("mars", filter={"class": "od"}):
print(notification.sequence, notification.payload)
Start with the Python overview.
From a Rust program
The Rust library powers the CLI and is on crates.io. Use it when you want notifications inside a Rust binary or service.
use aviso::AvisoClient;
let client = AvisoClient::builder()
.base_url("https://aviso.example")
.build()?;
Start with the library guide.
New here?
- What aviso does and how the pieces fit together.
- Install the CLI or the library.
- Quickstart: your first publish and your first listener.
Reference
- CLI flags: every flag, every subcommand.
- Listener YAML: the file format the CLI reads.
- State file: what aviso writes to disk to remember where it left off.
- Rust API: types, traits, and functions.