The 5am CLI

Your media hub from the terminal. Single Go binary. JSON-by-default. Built for scripts, automations, and AI agents.

Latest: v1.2.0·Released Aug 14, 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 | sh

Download

Every binary is stripped, statically linked (CGO_ENABLED=0), and ~14 MB. Verify each download against its .sha256 file.

macOS — Apple Silicon
M1, M2, M3, M4
Download
5am-darwin-arm64
25.8 MB
sha256aa0b0adb2e8bf516394cd74a88efab387bbd179e990c1e76fe05a36961b1255e
macOS — Intel
Older Macs
Download
5am-darwin-amd64
27.3 MB
sha256cff4dcc5d38a0bb2cdc9e44e64b22408e38cc0ca9468cd22e07b24c32de7bed7
Linux — x86_64
Most servers
Download
5am-linux-amd64
26.8 MB
sha256d0246479bf1fd4da51f1843c53e30f83c178f35138e0c37ee24514dcaa1c3888
Linux — ARM64
Raspberry Pi 4+, AWS Graviton
Download
5am-linux-arm64
25.4 MB
sha256bba8041f8009d947b85f5b201ea326a2cdc169340ef5f53ee8fe27a32e461759
Windows — x64
Most PCs
Download
5am-windows-amd64.exe
27.1 MB
sha25695cca70b296b847868059934f83d75a828802209a4a0c5fd28b01f6362c744a9

Verify 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: OK

Full 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.md

Download SKILL.md →

First 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.png
Note:Several media features shell out to FFmpeg — video uploads over 2 GB, Clip Maker (5am 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 2

Download podcast_to_video.py →

Upload 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 8

Back 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 --describe

Ask 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 portfolio

What’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 reboots
  • examples/sysmetrics.sh — one CPU/memory/disk sample per run, ready to ingest
  • examples/podcast_to_video.py — the helper above, with its test suite
  • SKILL.md — the agent reference, with install steps for Claude Code, Gemini CLI, and Codex

Browse the examples →Report an issue →

Need details? See the launch post or the full command reference.