## Summary
`langgraph deploy` now pins images by digest when handing the URI to the
LangGraph host backend. After `docker push`, the CLI reads the manifest
digest from the local Docker daemon's `RepoDigests` and sends
`registry/repo@sha256:<hex>` to the host backend instead of the
tag-based reference. Mutable tags cause downstream inconsistency — the
same revision can refer to different images over time.
The image is still pushed under the user-supplied `--tag` (default
`:latest`) so it stays discoverable by tag in the registry — only the
URI persisted with the revision changes.
## Behavior on failure
If the digest can't be resolved (empty `RepoDigests`, or no entry
matching the just-pushed repo), the CLI warns and falls back to the
tag-based reference. Deploys never fail on a digest-resolution issue.
## Test plan
- [x] `make test` passes (new `TestResolvePushedImageDigest` cases
included)
- [x] `--verbose` deploy shows the `docker image inspect` call resolving
the digest
- [x] Deploy with a clean Docker daemon (no matching `RepoDigests`)
emits the fallback warning and still completes successfully
---------
Co-authored-by: Josh Rogers <josh@langchain.dev>
# Description
Supports deploying to langsmith from langgraph studio
Adds the following to the langgraph deploy command:
- json event output
- non-interactive mode