app
Shotlog
UnreviewedChronological screenshot logging for AI debug loops — capture, annotate, and review visual progress across channels.
app / shotlog
Shotlog
A Rust CLI + HTTP server for chronological screenshot logging. Shotlog gives you a real-time visual timeline where screenshots are logged with descriptions, organized into named channels, and streamed live to a viewer via WebSocket.
Built for AI-assisted development workflows where Claude Code captures, annotates, and iterates on visual output — and you watch the progress unfold in real time.
Features
- Named channels — organize screenshots by project or task (
board-review,debug-session,3d-viewer) - Real-time WebSocket viewer — new screenshots appear instantly as they're injected
- Meaningful filenames — descriptions become filenames, so your screenshot folder tells a story
- Clipboard paste — Ctrl+V in the viewer to paste and log screenshots with auto-resize
- Auto-resize — images resized to max 1400px on longest edge (Lanczos resampling)
- Delete from viewer — remove individual screenshots directly from the timeline UI
- Persistent storage — channels survive server restarts, recovered from disk on startup
CLI Reference
Start the server
shotlog serve # Default: port 8820, data in ./screenshots/shotlog
shotlog serve -p 8820 -d ./data # Custom port and data directory
Check server health
shotlog health
# OK: Shotlog server running on port 8820 with 3 channel(s)
Inject a screenshot
shotlog inject -c board-review -d "PCB layout after routing power traces" -s av_capture screenshot.png
# OK: Injected pcb-layout-after-routing-power-traces.png (1400x765, 538 KB) into channel board-review
# Saved to: /home/adom/project/screenshots/shotlog/board-review/pcb-layout-after-routing-power-traces.png
| Flag | Required | Description |
|---|---|---|
-c |
yes | Channel name |
-d |
yes | Description of what the screenshot shows (becomes the filename) |
-s |
no | Source label (e.g. av_capture, pup_screenshot, clipboard) |
FILE |
yes | Path to PNG file |
Open the viewer
shotlog open -c board-review # Opens the timeline viewer panel
Resize an image
shotlog resize large.png # Resize in-place (max 1400px)
shotlog resize large.png -o small.png # Resize to new file
shotlog resize large.png -w 800 # Custom max width
Install skill + completions
shotlog install # Deploys Claude Code skill + bash completions
How it works
shotlog servestarts an HTTP server on port 8820 that manages channels (directories of screenshot pairs:.png+.jsonmetadata)shotlog injectadds a screenshot to a channel with a description that becomes the filenameshotlog openlaunches the timeline viewer in a browser panel- The viewer connects via WebSocket and shows new screenshots as they arrive — no refresh needed
- Users can also paste from clipboard (Ctrl+V) directly into the viewer
Use cases
- Ralph loops — the primary use case. Claude Code captures screenshots after each iteration of a visual debug loop, injecting them into shotlog so you can watch the fix unfold. Rotate a 3D model, tweak a schematic, iterate on a UI — each step gets logged with a description.
- Design iteration — log mockup revisions in a channel to see the progression from rough draft to final
- 3D model review — capture renders from different angles into a channel for side-by-side comparison
- Bug documentation — build a visual timeline of reproduction steps
- Animation development — log individual frames to review motion sequences
Install
Paste this into Claude Code:
Install shotlog from the Adom Wiki. Download the binary from
https://wiki-ufypy5dpx93o.adom.cloud/static/apps/shotlog/shotlog, place it at/usr/local/bin/shotlog, make it executable, and runshotlog install.