The 5am CLI
Your media hub from the terminal. Single Go binary. JSON-by-default. Built for scripts, automations, and AI agents.
Latest: v0.9.4·Released May 11, 2026
Quick install
One-liner for the typical setup. Pick your platform below for other architectures or to verify integrity.
# macOS (Apple Silicon) — most common
curl -L -o 5am https://cli.5am.app/cli/latest/5am-darwin-arm64
chmod +x 5am
sudo mv 5am /usr/local/bin/
5am --versionDownload
Every binary is stripped, statically linked (CGO_ENABLED=0), and ~14 MB. Verify each download against its .sha256 file.
sha256
1314e348febc8e7e37799dd796243407124d986931fe3c1c058c0f740d6ee1f0sha256
06ce0784a8d4591fc1a04957ea836e9ec2f361055a8cf9ea79bb58be0db2df41sha256
9f459f5a78f3311a38e2f364a62e36102fa8a09a23b55d19347a7cd8a3afb787sha256
1baff8ba971e12f5ebb5af4ed5d271b3b6fb26d345aadaa013545cf3c8a478efsha256
d780d58792688994ef706b7dec2fd861983e3446e2af31b45d07393460eb08ddVerify 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.pngWhat’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.
Need details? See the launch post or the full command reference in the project’s README.md.
Issues or feedback? File them in our issue tracker — early adopters shape the roadmap more than anyone else.