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
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.
The iMessage script needs permission to read your Messages database.
You may need to unlock with your password first (click the lock icon).
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.
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.
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.
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."
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
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
bash runner.sh status
This shows which agents have run and when.
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.shuses|| 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.
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.
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.
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.
"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 -
find ~ -name "*.quicken" -o -name "*.qdfm" 2>/dev/null and share what it finds