@asdftube/cli
v0.3.6
Published
Standalone CLI for recording, uploading, publishing, and operating asdf.tube videos
Maintainers
Readme
@asdftube/cli
Record terminal captures, desktop recordings, and agent sessions. Review locally, then publish a short hosted link on asdf.tube.
Quickstart
Install globally:
npm install -g @asdftube/cliOr run directly:
npx @asdftube/cli@latest helpFastest flow:
npx @asdftube/cli@latest auth
npx @asdftube/cli@latest record terminal --cmd "seq 1 10" --publish --title "Terminal demo"asdftube auth sends a magic link and PIN to your email, then stores an expiring local session. No password or separate signup flow is required.
Support
macOS: supportedWindows: betaLinux (X11/XWayland): betaLinux (Wayland-only): not supported yet
Provider status:
Codex: supportedClaude: supported, export/input fallback still matters on some machinesGemini: supportedOpenCode: betaGrok: beta, export/input-first
What It Does
- Records terminal, desktop, and window captures
- Renders agent session replays to local review artifacts and MP4
- Publishes hosted video links
- Attaches an optional web replay tab for supported agent-session flows
- Redacts and edits locally before publish
- Prints the delete command after publish so you can revoke a share immediately
Core Commands
asdftube auth
asdftube publish ./recording.mp4 --title "Demo walkthrough"
asdftube record terminal --cmd "seq 1 10" --text-size standard --publish --title "Terminal demo"
asdftube record desktop --seconds 10 --publish --title "Desktop capture"
asdftube record windows
asdftube record window --app "Firefox" --seconds 10 --publish --title "Window capture"
asdftube record doctor --json
asdftube edit video ./demo.mp4 --prompt "crop out the first 15 seconds of the video"
asdftube replay codex latest --publish --yes
asdftube replay gemini latest --review-only
asdftube replay claude --input ./claude-export.jsonl --publish --yes --title "Claude replay"
asdftube replay opencode latest --publish --yes --title "OpenCode replay"
asdftube replay grok --input ./grok-session.json --publish --yes --title "Grok replay"
asdftube share list
asdftube share delete SHARE_ID --token sharetok_xxxDefault command output is human-readable. Add --json when you need structured output for scripts or automation.
Record Doctor
Run this first on any Windows or Linux machine:
asdftube record doctor --jsonIt reports:
- selected backend
- whether
ffmpegandffprobeare available - whether the required FFmpeg device is present
- window-discovery readiness
- audio support
- display/session constraints like Wayland-only Linux
MCP Install
Codex:
codex mcp add asdftube -- npx -y @asdftube/cli@latest mcp-serverClaude Code:
claude mcp add asdftube -- npx -y @asdftube/cli@latest mcp-serverOpenCode (opencode.json or opencode.jsonc):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"asdftube": {
"type": "local",
"command": ["npx", "-y", "@asdftube/cli@latest", "mcp-server"],
"enabled": true
}
}
}Gemini CLI (~/.gemini/settings.json):
{
"mcpServers": {
"asdftube": {
"command": "npx",
"args": ["-y", "@asdftube/cli@latest", "mcp-server"]
}
}
}Grok:
- Grok replay is supported through exported JSON or JSONL transcripts.
- No official local Grok session store or local MCP client config is documented by xAI in the sources checked for this release, so use
--input ./grok-session.jsonfor now.
Once installed, ask your agent to use the asdftube MCP tools to authenticate with your email, render locally for review, and only publish after you approve it.
The MCP surface also exposes local prompt-driven editing through asdftube_edit_video.
Replay Notes
Fastest replay flow from an agent CLI:
npx @asdftube/cli@latest auth
npx @asdftube/cli@latest replay codex latest --publish --yesAdditional examples:
asdftube replay codex latest --review-only --text-size standard
asdftube replay codex latest --review-only --redactions 'acme|internal-only|staging-secret=>[REDACTED_TERM]'
asdftube replay codex "cybercafe.party" --publish --yes
asdftube replay gemini --input ./gemini-session.json --publish --yes --title "Gemini replay"
asdftube replay claude --input ./claude-export.jsonl --publish --yes --title "Claude replay"
asdftube replay grok --input ./grok-session.json --review-only --title "Grok replay"
asdftube replay opencode latest --publish --yes --title "OpenCode replay"Editing Notes
edit video is local-first and ffmpeg-backed. The parser currently supports:
- remove the first N seconds
- remove a range
- speed up a range
- blur a range
- add centered intro text with fade-out
- mix or replace audio with an extra track
- stitch in extra clips passed via
--asset - split explicit ranges into separate output files
Examples:
asdftube edit video ./demo.mp4 --prompt "crop out the first 15 seconds of the video"
asdftube edit video ./demo.mp4 --prompt "speed up video 3x from 0:30 to 0:50"
asdftube edit video ./demo.mp4 --prompt "blur out 0:55 to 1:10 while I type something sensitive"
asdftube edit video ./demo.mp4 --asset ./intro.mp3 --prompt "add this mp3 to the clip, fade out intro showing a centered text \"Hello World\""
asdftube edit video ./demo.mp4 --asset ./clip-2.mp4,./clip-3.mp4 --prompt "stitch together different clips together"
asdftube edit video ./demo.mp4 --prompt "split 0:00-0:15 and 0:30-0:45 into separate files"Redactions
# Case-insensitive word list. The fallback syntax defaults to /gi/.
asdftube replay codex latest --review-only --redactions 'acme|internal-only|staging-secret=>[REDACTED_TERM]'
# Multiple rules in one flag.
asdftube replay codex latest --review-only --redactions 'acme|internal-only=>[REDACTED_TERM]||CF-[0-9]{4,}=>[REDACTED_TICKET]'
# JSON form when you need explicit flags.
asdftube replay gemini latest --review-only --redactions '[{"name":"terms","pattern":"acme|internal-only|staging-secret","replacement":"[REDACTED_TERM]","flags":"gi"}]'
# Grok export flow.
asdftube replay grok --input ./grok-session.json --review-only --redactions 'internal-only|staging-secret=>[REDACTED_TERM]'Capture Limits
- Desktop/window capture on macOS requires Screen Recording permission for the terminal app running
asdftube. - Linux window discovery requires
wmctrl. - Linux capture currently targets X11/XWayland.
- Audio capture is partial:
- macOS keeps the current input-audio path
- Linux can use PulseAudio sources
- Windows
--with-audiois not implemented yet
- Automatic large-cursor and click-ring effects are not implemented yet because the current capture path does not record pointer telemetry.
Video Text Size Presets
compactstandard(default)large
Environment Fallbacks
ASDF_TUBE_BASE_URLASDF_TUBE_API_KEYASDF_TUBE_ORG_IDASDF_TUBE_CLI_CONFIG
Local Build
pnpm --filter @asdftube/cli build
cd packages/cli && npm packSmoke the installed binary from the packed tarball:
tmpdir=$(mktemp -d)
npm install -g --prefix "$tmpdir" packages/cli/asdftube-cli-*.tgz
"$tmpdir/bin/asdftube" helpNotes
- Replay rendering and redaction happen locally before publish.
- Review
*.review.jsonand*.txtreplay artifacts before uploading the final MP4. - The publish result includes the delete command so you do not need to hunt for the share id and revoke token separately.
ffmpegandffprobemust be available on your PATH for replay rendering and capture packaging.gitleaksis optional but recommended for stronger local secret scanning during replay redaction.
Boundary
- This package is the public CLI only.
- Do not add proprietary API, worker, admin, auth, or backend source code to this package or any future public CLI repository.
License
- AGPL-3.0-only
