← All recipes
Any deploy pipeline~3 min

Auto-log every deploy to Eyepup

Without a changelog row, the dossier agent has no idea you shipped anything. With one, every visitor profile written after the deploy gets graded against the change — friction patterns retire when they recover, and resurface as regressions when they don't.

Step 1 — Mint a write-token

Write commands need an API token (separate from the browser-auth flow). Visit /integrations and copy your epk_live_* token, then save it locally:

$ eyepup token epk_live_xxxxxxxxxxxxxxxx

Step 2 — GitHub Actions

# .github/workflows/deploy.yml
- name: Log deploy to Eyepup
  if: success()
  run: |
    npx -y eyepup token $EYEPUP_TOKEN
    npx -y eyepup log "$COMMIT_MSG" \
      --kind feature_ship \
      --paths "$(git diff --name-only HEAD~1 | tr '\n' ',')"
  env:
    EYEPUP_TOKEN: ${{ secrets.EYEPUP_TOKEN }}
    COMMIT_MSG: ${{ github.event.head_commit.message }}

Step 3 — Vercel deploy hook

Vercel exposes deploy-time env vars; wrap the call in a tiny shell script and reference it from your project config:

# .vercel/build-hook.sh — runs after Vercel finishes building
#!/usr/bin/env bash
set -e
TITLE="${VERCEL_GIT_COMMIT_MESSAGE:-deploy}"
npx -y eyepup token "$EYEPUP_TOKEN"
npx -y eyepup log "$TITLE" --kind feature_ship

Step 4 — Local git post-push

For solo workflows, a one-line git hook works:

# .git/hooks/post-push (chmod +x)
#!/usr/bin/env bash
TITLE=$(git log -1 --pretty=%s)
PATHS=$(git diff --name-only HEAD~1 | tr '\n' ',' | sed 's/,$//')
eyepup log "$TITLE" --kind feature_ship --paths "$PATHS" || true

Pick the right kind

The dossier agent reads kind to weigh the change. Use the most accurate one — wrong kinds poison the agent's reasoning.

Pair it with