daemon-setup
/asciinema-tools:daemon-setup
Interactive wizard to set up the asciinema chunker daemon. This daemon runs independently of Claude Code CLI, using dedicated credentials stored in macOS Keychain.
Why a Daemon?
| Problem with old approach | Daemon solution |
|---|---|
Uses gh auth token (shared) |
Uses dedicated PAT from Keychain |
| Dies when terminal closes | launchd keeps it running |
| Silent push failures | Logs + Pushover notifications |
| Tied to Claude Code session | Completely decoupled |
Setup Phases Overview
| Phase | Name | Details |
|---|---|---|
| 1 | Preflight Check | Below |
| 2 | Check Existing | Below |
| 3 | GitHub PAT Setup | PAT Setup Guide |
| 4 | Pushover Setup | Pushover Setup Guide |
| 5-6 | Config + Install | launchd Installation Guide |
| 7 | Verify + Troubleshoot | Verification & Troubleshooting |
Execution
Phase 1: Preflight Check
Check required tools:
/usr/bin/env bash << 'PREFLIGHT_EOF'
MISSING=()
for tool in asciinema zstd git curl jq; do
command -v "$tool" &>/dev/null || MISSING+=("$tool")
done
# macOS-specific: security command for Keychain
if [[ "$(uname)" == "Darwin" ]]; then
command -v security &>/dev/null || MISSING+=("security (macOS Keychain)")
fi
if [[ ${#MISSING[@]} -gt 0 ]]; then
echo "MISSING:${MISSING[*]}"
exit 1
fi
echo "PREFLIGHT:OK"
PREFLIGHT_EOF
If MISSING not empty, use AskUserQuestion:
Question: "Missing required tools: {MISSING}. How would you like to proceed?"
Header: "Dependencies"
Options:
- label: "Install via Homebrew (Recommended)"
description: "Run: brew install {MISSING}"
- label: "I'll install manually"
description: "Pause setup and show install instructions"
- label: "Abort setup"
description: "Exit the setup wizard"
If "Install via Homebrew": Run brew install {MISSING} and continue.
Phase 2: Check Existing Installation
/usr/bin/env bash << 'CHECK_EXISTING_EOF'
PLIST_PATH="$HOME/Library/LaunchAgents/com.cc-skills.asciinema-chunker.plist"
DAEMON_RUNNING="false"
if [[ -f "$PLIST_PATH" ]]; then
echo "PLIST_EXISTS:true"
if launchctl list 2>/dev/null | grep -q "asciinema-chunker"; then
DAEMON_RUNNING="true"
fi
else
echo "PLIST_EXISTS:false"
fi
echo "DAEMON_RUNNING:$DAEMON_RUNNING"
# Check if PAT already in Keychain
if security find-generic-password -s "asciinema-github-pat" -a "$USER" -w &>/dev/null 2>&1; then
echo "PAT_EXISTS:true"
else
echo "PAT_EXISTS:false"
fi
CHECK_EXISTING_EOF
If PLIST_EXISTS=true, use AskUserQuestion:
Question: "Existing daemon installation found. What would you like to do?"
Header: "Existing"
Options:
- label: "Reinstall (keep credentials)"
description: "Update daemon script and plist, keep Keychain credentials"
- label: "Fresh install (reset everything)"
description: "Remove existing credentials and start fresh"
- label: "Cancel"
description: "Exit without changes"
Phase 3: GitHub PAT Setup
See PAT Setup Guide for the full interactive flow: PAT creation walkthrough, Keychain storage, and verification.
Phase 4: Pushover Setup (Optional)
See Pushover Setup Guide for the full interactive flow: Pushover explanation, app creation, credential storage, and test notification.
Phase 5-6: Daemon Configuration and launchd Installation
See launchd Installation Guide for chunking settings selection, plist generation from template, and service installation.
Phase 7: Verification
See Verification & Troubleshooting for daemon health checks, post-install verification, the final success message, and the troubleshooting table.
Quick Reference
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| Keychain access denied | macOS permission not granted | Grant access in System Settings |
| PAT test failed | Token expired or invalid scope | Generate new token with repo scope |
| launchctl load failed | plist syntax error | Check plutil -lint <plist-path> |
| Daemon keeps stopping | Script error or crash | Check /asciinema-tools:daemon-logs |
| Pushover not working | Invalid credentials | Re-run setup with correct app/user key |
| Health file missing | Daemon not running | Run /asciinema-tools:daemon-start |
Related Commands
| Command | Description |
|---|---|
/asciinema-tools:daemon-status |
Check daemon health |
/asciinema-tools:daemon-logs |
View logs |
/asciinema-tools:daemon-stop |
Stop daemon |
/asciinema-tools:daemon-start |
Start daemon |