Skip to content

Automation

Indigo CLI is designed for automation. Every command produces structured output, uses consistent exit codes, and works with standard Unix tools.

JSON output

Every command supports the --json flag. Without it, commands produce human-readable output. With it, you get structured JSON suitable for parsing.

Terminal window
# Human-readable
indigo signals list
# Machine-readable
indigo signals list --json

This applies to all command groups: auth, signals, meetings, and config.

Exit codes

The CLI uses structured exit codes for reliable scripting:

CodeMeaning
0Success
1General error
2Authentication error (not logged in or token expired)
3Network error (API unreachable)
4Invalid input (bad arguments or flags)
5Resource not found

Use these in scripts for conditional logic:

Terminal window
indigo auth status > /dev/null 2>&1
if [ $? -eq 2 ]; then
echo "Not authenticated. Running login..."
indigo auth login
fi

Credential sharing

The CLI shares credentials with Indigo Desktop through the system keychain. If you authenticate in one, both are authorized. This means automation scripts do not require separate credential management — authenticate once with indigo auth login and your scripts work immediately.

Example workflows

Morning briefing script

Pull yesterday’s decisions and today’s meetings into a single digest:

#!/bin/bash
echo "=== Decisions from recent meetings ==="
indigo signals list --type decision --limit 10 --json | \
jq -r '.[] | "- \(.content) (\(.meeting))"'
echo ""
echo "=== Today's meetings ==="
indigo meetings list --limit 10 --json | \
jq -r '.[] | "- \(.title) at \(.start)"'

Decision audit trail

Export all decisions to a CSV for tracking and compliance:

Terminal window
indigo signals list --type decision --json | \
jq -r '["ID","Content","Meeting","Date"],
(.[] | [.id, .content, .meeting, .created_at]) | @csv' \
> decisions.csv

Meeting attendance tracking

Track how many meetings involve a specific person:

Terminal window
indigo meetings search "alice@example.com" --json | \
jq 'length'

Signal monitoring

Watch for new action items and send to a webhook:

#!/bin/bash
indigo signals list --type action --limit 5 --json | \
jq -c '.[]' | while read -r signal; do
curl -s -X POST "$WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d "$signal"
done

Combining with other tools

Terminal window
# Count signals by type
indigo signals list --json | \
jq 'group_by(.type) | map({type: .[0].type, count: length})'

CI/CD integration

Indigo CLI works in CI/CD environments. Authenticate once on the runner, then use commands in pipeline steps.

# Example: GitHub Actions step
- name: Export weekly decisions
run: |
indigo signals list --type decision --json > decisions.json
env:
INDIGO_TOKEN: ${{ secrets.INDIGO_TOKEN }}