RecordCueAutomateGuideFAQSupport

Automate / CLI reference

The agent CLI, in detail

The full JSON, the exit codes, and the one field nobody else ships: a machine-readable record of who was speaking.

The automation hub shows what to build and the hooks recipe shows how to run it when a recording finishes; this page is the reference for anyone — or any agent — writing something of their own. Three subcommands, all read-only: latest, list [--since 7d], inspect <path|latest>, each with --json. The command cannot start, stop or delete a recording, analyzes nothing, and uploads nothing.

The CLI is built into the RecordCue app; it is not a separately installed recordcue command. The Agent Package normally finds it for a compatible local AI agent. The full app command below is for scripts and manual use.

Everything latest prints

$ '/Applications/RecordCue.app/Contents/MacOS/RecordCue' --agent-cli latest --json
{
  "appVersion":       "1.0",
  "capture":          { "kind": "audio", "microphone": true,
                        "systemAudio": true, "video": false },
  "durationMs":       2520000,
  "endedAt":          "2026-07-30T14:44:00Z",
  "id":               "9F2C6A1E-…",
  "media":            { "container": "m4a", "kind": "audio",
                        "path": "/Users/you/Movies/RecordCue/Google Meet/2026-07-30 14.02.m4a",
                        "sizeBytes": 40215552 },
  "schemaVersion":    1,
  "service":          "Google Meet",
  "speakerActivity":  { "data": "rc1:100:.107M1.10M1.1M2.104S38…",
                        "format": "recordcue-rle-v1",
                        "resolutionMs": 100 },
  "startedAt":        "2026-07-30T14:02:00Z",
  "status":           "ready",
  "transcript":       { "path": "/Users/you/Movies/RecordCue/Google Meet/2026-07-30 14.02.txt" },
  "updatedAt":        "2026-07-30T14:45:12Z"
}

The fields a script reaches for: media.path and transcript.path are the files; service names the call; startedAt/endedAt/durationMs place it in time; schemaVersion is what to check before assuming the rest. Two things to code for: transcript is absent, not null, until a transcript exists — in jq that is .transcript.path // empty — and only finished recordings appear at all (status is always ready today; a recording in progress is simply not listed yet).

Exit codes a script can trust

The speaker-activity timeline

speakerActivity.data is the conversation's shape without its words: rc1:100:.20M15S40B5 reads as “format v1, 100 ms buckets, then two seconds of quiet, 1.5 s where the microphone was louder, four seconds where what the Mac played was louder, half a second of both.” Four symbols: . quiet, M microphone, S system audio, B both. The names are honest on purpose — it knows which signal was louder, not who a voice belonged to. An hour encodes to a couple of kilobytes.

A decoder is a dozen lines of Python:

import re

def decode(activity):
    head, bucket_ms, runs = activity.split(":", 2)
    assert head == "rc1"
    timeline = []
    for symbol, count in re.findall(r"([.MSB])(\d+)", runs):
        timeline += [symbol] * int(count)
    return int(bucket_ms), timeline

def talk_share(activity):
    _, timeline = decode(activity)
    voiced = [t for t in timeline if t != "."]
    if not voiced:
        return None
    mine = sum(t in "MB" for t in voiced)
    return mine / len(voiced)

Which is enough to answer a question no transcript answers well — did I talk too much?

$ '/Applications/RecordCue.app/Contents/MacOS/RecordCue' \
    --agent-cli latest --json | python3 -c '
import json, sys
from talkshare import talk_share   # the decoder above, saved as talkshare.py
r = json.load(sys.stdin)
svc, share = r["service"], talk_share(r["speakerActivity"]["data"])
print(f"{svc}: you spoke {share:.0%} of the voiced time")
'
Google Meet: you spoke 33% of the voiced time

The same timeline can find the monologues (long M runs), the moments everyone talked over each other (B clusters), or the minutes of silence at the start that never needed recording. All from local metadata; the audio itself is never read.

list and inspect

list returns { recordings: […], schemaVersion: 1 }, newest first, and --since takes 7d, 24h or 30m. The week at a glance is one jq away:

$ '/Applications/RecordCue.app/Contents/MacOS/RecordCue' \
    --agent-cli list --since 7d --json | jq -r '
    .recordings[] | [.service, .startedAt, (.durationMs/60000
    | round | tostring) + " min"] | @tsv'
Google Meet   2026-08-14T06:00:00Z   42 min
Zoom          2026-08-13T01:30:00Z   28 min
Slack         2026-08-12T09:05:00Z    9 min

inspect takes one path — from list, from Finder, from anywhere — and returns the same shape as latest. Feed it a folder of old recordings in a loop and an agent can reconstruct a project's whole meeting history, locally.

Why it is shaped this way

The CLI is the second half of the capture-layer bargain: RecordCue does the recording completely and stays out of the thinking. Read-only is not a missing feature — it is what makes the command safe to hand to any script or agent without wondering what else it might do. The User Guide covers setup; the recipes are the fast way in.