Tuist now speaks the Once live event protocol
(once.events.v1) end to end. When the Once CLI starts a build or test
run against Tuist, it opens a gRPC stream to build.<your-host>, prints
a live URL you can open right away, and reports each declared action as
it completes. The dashboard renders the run's actions and roll-ups in
real time.
- New pages under a project's Once section
Once → Runs— every run this project has recorded, filterable by kind (build,test, generic).Once → Runs → :run_id— per-run detail with the actual command the user ran (safe-literal argv rendered verbatim; every other positional hashed opaquely under a project-scoped key so nothing sensitive persists), git context, roll-ups, and a table of actions as they land.
- Same-target sub-action granularity — actions inside one target
(e.g. cargo's
build-script-buildvsrustcruns, or the individual Starlark actions in a native Once graph) each get their own row with cache decision, duration, exit code, and identifier, matching how Bazel renders its actions view. - Live LiveView updates — the projector broadcasts on Phoenix.PubSub as each event lands, so the dashboard reflects the run without a refresh.
Under the hood, /.well-known/once advertises the gRPC endpoint at
build.<host> alongside a live_url_template the CLI substitutes so it
can print the browser link the moment the run is minted, without waiting
for a first ack. Argv normalization follows RFC 0008 §Identity and
redaction: safe literals from the frozen 2026.09.03-v1 allowlist stay
readable, everything else hashes under a project-scoped BLAKE3 key.
Cache and remote-execution traffic still flow through Kura; events go straight to the server so LiveView renders live from the same BEAM.