In streaming mode the engine emits a callback the moment a k-point is solved, so you can show progress (or feed a long sweep into a database) without waiting for the whole job to finish. The Python iterator yields one finalized dict per job, but the WASM build additionally surfaces per-k-point updates to the host, which is what drives the progressive plot you see here.
1from blaze import BulkDriver
2
3# run_streaming() yields one dict per job. Each dict carries job_index,
4# num_k_points, and the full band data. In the browser, the engine also
5# pushes per-k-point updates to the host, which drives the live plot.
6driver = BulkDriver("crystal.toml")
7for result in driver.run_streaming():
8 print("job", result["job_index"], "->", result["num_k_points"], "k-points")