The 5am CLI
Your media hub from the terminal. Single Go binary. JSON-by-default. Built for scripts, automations, and AI agents.
Latest: v1.5.1·Released Oct 6, 2026
Quick install
Install or upgrade the 5am CLI on macOS or Linux with a single command. The script detects your platform and architecture automatically.
# Install or upgrade the 5am CLI (macOS and Linux)
curl -fsSL https://cli.5am.app/cli/latest/install.sh | shDownload
Every binary is stripped, statically linked (CGO_ENABLED=0), and ~14 MB. Verify each download against its .sha256 file.
sha256
9464a2232d1f4bde6217b5c19715396a547ee4f8f68729af47d632a410dee081sha256
166f490703e70fab920f56783ea7cfc5b3f0d6d3ebcf415989fffc1278d64b94sha256
afce803ab408b37a6408f8370047c754490a18c36c9221d603b5005435671e9csha256
8a16122e7b53f633b006e1bc433e655364128cf0fef1d0647b023072268235a2sha256
ff5b96c2e75a23f458530d8757ad64aea4e9bce860ab4359ea20d503e4e9ba0dVerify integrity
Each binary has a published .sha256 file alongside it. After downloading, confirm the hash matches:
curl -sS https://cli.5am.app/cli/latest/5am-darwin-arm64.sha256 | shasum -a 256 -c
# → 5am-darwin-arm64: OKFull machine-readable manifest with sizes, hashes, and version metadata: manifest.json
Use it with an AI agent
The CLI ships with a companion SKILL.md that follows the Agent Skills open standard. Drop it into Claude Code, Gemini CLI, or any compatible tool, and the agent will recognize prompts like “upload these photos to a new album” and reach for the 5am binary on its own.
# Claude Code (personal — applies to all projects)
mkdir -p ~/.claude/skills/5am
curl -L https://cli.5am.app/cli/latest/SKILL.md -o ~/.claude/skills/5am/SKILL.md
# Or project-local (gets committed alongside your code)
mkdir -p .claude/skills/5am
curl -L https://cli.5am.app/cli/latest/SKILL.md -o .claude/skills/5am/SKILL.mdFirst steps
Mint a token in the web UI (Settings → CLI Access Tokens → Generate), then:
5am login # paste the token at the prompt
5am whoami # confirm
5am albums list
5am account --pretty
# Upload a directory recursively
5am media upload ./photos -r --include '*.jpg,*.mp4' --album <id> --concurrency 8
# Download an entire album
5am albums download <id> --output ./trip --concurrency 8
# Generate media from a prompt
5am media generate image --prompt "a cybernetic owl at dawn" --output owl.png5am studio / media clips), edit rendering, and AI descriptions for video/audio. Grab it from ffmpeg.org/download.html (or brew install ffmpeg on macOS); the CLI finds it on your PATH, or point at a binary with --ffmpeg / $FFMPEG.Example use cases
Cut a long video into Shorts — free, on your machine
Clip Maker turns a talk, podcast, or stream into Shorts-ready clips with burned-in subtitles and AI titles. The heavy lifting runs on your computer through the CLI, so the source video never uploads and the feature is free — start the companion and drive it from the browser, or script it directly:
# The web workflow: run the companion, then open 5am.app/clip-maker
5am studio
# Or fully scripted: five 9:16 clips with subtitles → talk-clips/
5am media clips talk.mp4 --count 5 --brief "the product demo moments"Turn a podcast into a video
Made an episode in the Podcast Studio? The CLI ships a one-command helper, podcast_to_video.py, that turns your WAV into a shareable MP4 — either an animated waveform over your cover art, or AI-generated Veo b-roll whose scenes are written from your transcript so the visuals track the conversation. It burns in your transcript as synced captions either way. Stdlib-only Python, so it runs on macOS, Linux, and Windows; it just needs the 5am binary and a local ffmpeg.
# Download the helper alongside the CLI
curl -L https://cli.5am.app/cli/latest/podcast_to_video.py -o podcast_to_video.py
# Waveform video (instant, no AI): cover art + waveform + synced captions
python3 podcast_to_video.py -i episode.wav --visualize \
--cover cover.jpg -s episode.srt -a 9:16
# Or AI b-roll: Veo writes per-scene prompts from your transcript
python3 podcast_to_video.py -i episode.wav -s episode.srt -a 9:16 --clips 2Upload videos the apps can’t
The CLI is the only client that uploads videos up to 10 GB. Files over 2 GB are processed locally first — poster extraction and, when needed, a web-playable 1080p proxy. If the connection dies, run the same command again: already-uploaded parts are reused and only the missing pieces move.
5am media upload ./footage/interview-4k.mov --album "Shoots"
5am media upload ./festival-master.mov --album "Masters" --part-concurrency 8Back up local folders to 5AM
One command mirrors a directory tree into an album: recursive scan with include filters, a parallel worker pool, and JSON results per file — cron-friendly. Add --describe and every upload gets an AI description computed locally with your Gemini key (classifier tags for photos, an audio-track summary for video), so the backup is searchable the moment it lands.
5am media upload ~/Pictures/2026 -r --include '*.jpg,*.heic,*.mp4' \
--new-album "2026 Archive" --concurrency 8 --describeAsk your infrastructure questions
Deploy the CLI as a server agent on your NAS, render box, or web server, and your AI characters can answer questions about them in chat — “did last night’s exports finish?”, “how many people visited the portfolio today?” — computed on your machine, with raw logs and file inventories never leaving it. Outbound-only long-polling: no open ports, works behind NAT.
# On the server: ingest a log into a queryable dataset, then serve
5am data ingest --dataset requests --schema requests.schema.json \
--file /var/log/nginx/access.log --format combined
5am serve agent --name portfolioWhat’s in the box
JSON by default
Every command returns parseable JSON on stdout. Pipe to jq and chain.
Meaningful exit codes
2 auth, 3 validation, 4 network, 5 server. Branch on them.
Parallel uploads & downloads
Worker pool, presigned URLs, no client-side size limit on video.
AI characters & webhooks
Spin up scoped characters, chat with them, route their events to your services.
Local-machine skills
Read/write files, run commands, process video with FFmpeg — all local.
No dependencies
Single static binary. CGO_ENABLED=0. Drop it in /usr/local/bin and go.
Examples on GitHub
The scripts above are downloadable individually, but digvan/5am-cli collects them with the pieces that don’t fit in a single file — a systemd installer that puts a server agent under supervision, a metrics sampler with its schema, ready-made schemas for nginx logs, and a full server-agent deployment guide. Apache-2.0, so copy and adapt freely.
examples/install-agent.sh— writes and starts the systemd units so an agent survives rebootsexamples/sysmetrics.sh— one CPU/memory/disk sample per run, ready to ingestexamples/podcast_to_video.py— the helper above, with its test suiteSKILL.md— the agent reference, with install steps for Claude Code, Gemini CLI, and Codex
Need details? See the launch post or the full command reference.