Clips for Ryu — agent-native Loom/Jam: capture and browse screen/timeline clips via the Shadow capture proxy.
The public home of
ryu-clips. Source, builds, and releases live here — binaries for every platform are attached to each release.This tree is generated from the Ryu monorepo, so commits pushed here directly are replaced on the next sync. Pull requests are welcome — open them here and they are ported into the monorepo, then flow back out. Ryu as a whole: https://github.com/amajorai/ryu
- Binary:
ryu-clipsfrom the Ryu releases. - Crate:
cargo install ryu-clips.
Apache-2.0 — see LICENSE.
Agent-native Loom / Jam for Ryu: capture and browse screen/timeline clips. Core owns what runs — the clip session the desktop drives — and Shadow owns the sensor half (screen + audio capture, ffmpeg mux, the agent-context.json bundle).
backend/(ryu-clips) — an extracted Core capability crate: the stable/api/clips/*HTTP surface that proxies each call to the Shadow sidecar over loopback. Now served OUT-OF-PROCESS by theryu-clipsbin ([[bin]],kind:local,public_mount,RYU_CLIPS_BIN/RYU_CLIPS_PORT, default:7992) via the generic ext-proxy loader — Core links zero clips code (no path-dep, noclipscargo feature, no in-processclips_routes). It also ownsframesEndpointrewriting, the ingest orchestration (URL vs local-file resolution), and the summary render. Because the crate now runs standalone, its two former kernel couplings degrade cleanly in the sidecar rather than inverting through a Coreclips_hostshim (the Shadow record/browse half is fully live — the sidecar readsRYU_SHADOW_URLitself):- yt-dlp ingest — resolving a watched URL to a local video over Core's
DownloadCenter(kernel binary management); - auto-file into the
ClipsSpace — a finished clip's mp4 + summary stored in theClipssystem Space (a Core store).
- yt-dlp ingest — resolving a watched URL to a local video over Core's
- No companion UI here. Clips surface through Core-side desktop/extension views.
When Shadow is down, handlers return { available: false, reason } (the same shape as the
Shadow MCP provider) rather than a 5xx, so a stopped sidecar degrades gracefully in the UI.
- id
com.ryu.clips, no runnables, nopermission_grants. - requires app
shadow(>=1.0.0) — it is a Core→Shadow proxy and depends on the Shadow capture app for its recordings.
/api/clips (list) · ingest · sources · recent-activity · start, per-clip
:id/{stop,pause,resume,context,frame,file,diagnostics}.
Capture + bundle is "what runs" (Core/Shadow). Redacting diagnostics on egress is a Gateway concern; v1 redacts client-side in the extension, so nothing here enforces policy.