Agent Automation — Mac Activation Guide

Philip Devin — Carrera Crest Holdings

Follow these steps in order. Each one takes 1-3 minutes.


STEP 1: Find Your Folder Path

You need to know the exact path to your "Claude Working Files" folder on your Mac.

Open Terminal and run:

find ~ -name "_Agent_Runner" -type d 2>/dev/null

This will print something like:

/Users/pdevin/Documents/Claude Working Files/_Agent_Runner

The part BEFORE /_Agent_Runner is your base path. Write it down — you'll need it in Step 2.

If nothing appears, your folder might be in iCloud or on your Desktop. Try:

find ~/Desktop ~/Documents ~/Library/Mobile\ Documents -name "_Agent_Runner" -type d 2>/dev/null

STEP 2: Update config.env With Your Path

Open the config file in a text editor:

open -a TextEdit "/path/to/Claude Working Files/_Agent_Runner/config.env"

(Replace /path/to/Claude Working Files with the path you found in Step 1)

Find this line near the top (line 11):

export BASE_DIR="$HOME/Documents/Claude Working Files"

Change it to match your actual path. For example, if your files are in Documents:

export BASE_DIR="/Users/pdevin/Documents/Claude Working Files"

Or if they're in iCloud:

export BASE_DIR="/Users/pdevin/Library/Mobile Documents/com~apple~CloudDocs/Claude Working Files"

Save and close.


STEP 3: Grant Terminal "Full Disk Access"

The iMessage script needs permission to read your Messages database.

  1. Open System Settings (click Apple menu → System Settings)
  2. Go to Privacy & Security (left sidebar)
  3. Click Full Disk Access
  4. Click the + button
  5. Navigate to: Applications → Utilities → Terminal
  6. Add it and make sure the toggle is ON

You may need to unlock with your password first (click the lock icon).


STEP 4: Test the Mail Script (First Run Triggers Permission)

The first time Terminal tries to control Apple Mail, macOS will pop up a permission dialog.

Run this in Terminal:

cd "/path/to/Claude Working Files/_Agent_Runner"
bash scripts/apple_mail_export.sh

A popup will appear saying: "Terminal wants to control Mail. Allow?"

Click Allow.

This grants Terminal the Automation permission it needs for all future runs.

Check that it worked:

ls -la inbox/

You should see a JSON file like 2026-03-07_emails.json.


STEP 5: Test the iMessage Script

bash scripts/imessage_export.sh

If it works: You'll see a message count in the terminal.

If you get "database not accessible": Go back to Step 3 and make sure Terminal has Full Disk Access. You may need to quit Terminal completely (Cmd+Q) and reopen it after granting the permission.

Note: The iMessage script won't return business messages until you add contact phone numbers to config.env (the IMESSAGE_CONTACTS section). For now it will say "No business contacts configured" — that's fine.


STEP 6: Test the COO Agent

This is the big test — it runs Claude Code CLI with the COO prompt against your data:

bash agents/coo_agent.sh daily

This will take 30-60 seconds. Claude Code will read your YCS data files and produce an anomaly scan.

Check the output:

ls -la outputs/
cat outputs/$(date +%Y-%m-%d)_coo_daily_scan.md

You should see a formatted COO Daily Scan report.


STEP 7: Test the Morning Briefing

bash agents/briefing_compiler.sh

This assembles the COO output + email + iMessage data into your CEO Briefing.

Check it:

cat outputs/briefings/$(date +%Y-%m-%d)_CEO_Briefing.md

You should also see a macOS notification pop up saying "CEO Briefing ready."


STEP 8: Test the Full Morning Pipeline

This runs everything in sequence — just like cron will do at 6am every day:

bash runner.sh morning

Watch the terminal — it will show each phase:

Phase 1: Data Ingestion (email + iMessage)
Phase 2: COO Daily Scan
Phase 3: Compile Briefing

Check the log:

cat logs/$(date +%Y-%m-%d)_runner_morning.log

STEP 9: Test the Phorest Router

If Phorest has already emailed reports (check your email for Sunday 8PM arrivals):

bash runner.sh phorest

This will: 1. Scan Apple Mail for Phorest emails 2. Download ZIP attachments 3. Extract CSVs and route them to the correct Data/ folders

Check the routing log:

cat inbox/$(date +%Y-%m-%d)_phorest_routing.json

STEP 10: Check Agent Status

bash runner.sh status

This shows which agents have run and when.


STEP 10b: Configure S3 Sync (Cloud Data Warehouse)

Every pipeline run now syncs outputs to S3 (carrera-crest-dw-east, us-east-1) immediately after the NAS sync. QuickSight reads from this bucket for cloud dashboards; Synology Cloud Sync pulls from it for the NAS backup layer.

1. Confirm AWS CLI is installed:

aws --version

If not installed: brew install awscli

2. Configure credentials:

aws configure

Enter your AWS Access Key ID, Secret Access Key, and default region (us-east-1).

3. Test the sync manually:

cd "/path/to/Claude Working Files/_Agent_Runner"
bash scripts/sync_to_s3.sh

You should see files uploading to s3://carrera-crest-dw-east/.

4. Verify in S3 Console — confirm files appear in the bucket at console.aws.amazon.com.

Note: sync_to_s3.sh uses || true — a sync failure will never abort the pipeline. If S3 is unreachable (e.g., no internet), it logs a warning and continues. Same pattern as the NAS sync.


STEP 11: Install Cron Jobs (Preview First)

Preview what will be installed (doesn't change anything):

bash scripts/install_cron.sh --dry-run

Review the schedule. When you're satisfied:

bash scripts/install_cron.sh

Verify it installed:

crontab -l

You should see all the Carrera Crest agent jobs listed.


STEP 12: Keep Your Mac Awake

Cron jobs only run when your Mac is awake. For the 6am morning briefing to work:

Option A: Prevent sleep (simplest) 1. System Settings → Battery → Options 2. Set "Prevent automatic sleeping when the display is off" to ON (when plugged in)

Option B: Schedule wake time 1. System Settings → Battery → Schedule 2. Set "Start up or wake" to 5:55 AM daily

Option C: Use caffeinate (temporary)

caffeinate -s &

This keeps your Mac awake until you close Terminal.


DONE — Your System Is Live

What happens now:

When What Runs
Every day 6:00 AM Email + iMessage scan → COO daily scan → CEO Briefing → NAS Sync → S3 Sync
Sunday 8:30 PM Phorest report emails detected → CSVs routed to Data/ folders → NAS Sync → S3 Sync
Monday 7:00 AM Weekly agents: COO, Marketing, Payroll hours, Inventory alerts → NAS Sync → S3 Sync
Wednesday 7:00 AM Deal Agent + Hiring Agent
1st & 15th 8:00 AM Payroll bi-weekly analysis → NAS Sync → S3 Sync
1st of month 7:00 AM Monthly stack: COO, Inventory, CFO → NAS Sync → S3 Sync
2nd of month 9:00 AM Reach Properties DRAFT → NAS Sync
7th of month 8:00 AM Reach Properties FINAL → NAS Sync
On-demand runner.sh dashboard → all dashboards refreshed → NAS Sync → S3 Sync

You'll get a macOS notification every morning when your CEO Briefing is ready.


TROUBLESHOOTING

"command not found: claude" → Run: npm install -g @anthropic-ai/claude-code

"Operation not permitted" on iMessage → Quit Terminal (Cmd+Q), reopen, retry. Full Disk Access sometimes needs a restart.

No emails in export → Make sure Apple Mail is open and accounts are connected. The script reads from Apple Mail's local database.

Cron jobs not running → Check: crontab -l — are they listed? → Check: Is your Mac awake at the scheduled time? (See Step 12) → Check logs: cat _Agent_Runner/logs/$(date +%Y-%m-%d)_*.log

Agent times out → Increase AGENT_TIMEOUT in config.env (default is 300 seconds = 5 minutes)

To remove all cron jobs:

crontab -l | sed '/CARRERA CREST/,/END CARRERA CREST/d' | crontab -

WHAT'S STILL NEEDED FROM YOU

  1. Business contacts for iMessage — edit config.env, uncomment and fill in the IMESSAGE_CONTACTS section with actual phone numbers
  2. Quicken database path — run find ~ -name "*.quicken" -o -name "*.qdfm" 2>/dev/null and share what it finds
  3. Confirm Phorest auto-emails are set up — 10 reports, Sunday 8PM Mountain
  4. Phase 2 agents — say "build Phase 2" when ready for Marketing, Payroll, CFO, and Dashboard agents