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
App: Install (opens the Ryu desktop app and asks you to confirm)
CLI:
ryu apps add @ryu/clipsCrate:
cargo install ryu-clipsPrebuilt binaries for every platform are attached to each release.
Apache-2.0 — see LICENSE.
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
ui/— a self-contained Path B Companion built withRyuAppShell, the sharedRyuAppToolbar/RyuAppMain/RyuAppSection/RyuAppListprimitives, and@ryu/uicontrols. The bundled preview opens with an original local podcast video so playback, seeking, captions, clip selection, and the local-first Inspiration review lane can be inspected without a running Shadow sidecar. In Inspiration, left/right review actions copy a format brief into the current project or pass it; copied ideas can then be opened in the editor. When mounted in Ryu, capture and URL ingest reach the sidecar through the genericapp:httpbridge; the editor remains visibly marked as preview data.
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.
bun run --cwd apps-store/clips/ui test
bun run --cwd apps-store/clips/ui check-types
bun run --cwd apps-store/clips/ui build
cargo test --manifest-path apps-store/clips/backend/Cargo.tomlThe UI build emits one self-contained ui/dist/index.html. The Companion uses an
inlined demo video and poster; imported files remain in the browser preview and are not
uploaded by the UI.
- id
@ryu/clips, oneclips-companionrunnable, and the genericapp:httphost grant. The sidecar'sclips.viewandclips.capturepermission levels remain the authority for the capture/ingest routes. - 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.