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.


