Cursor Automations — Setup Complete

Three cloud agents running daily: Edition Servers, PrivatKanzlei, VoiceMemo

Status: All Systems Ready ✅

All Cursor Automations are configured, tested, and scheduled to run for the first time tonight.


Current Configuration

Automation 1: Edition Servers Daily Restart

Setting Value
Schedule 05:00 every day (0 5 * * *)
What it does Restarts all 4 scholarly edition servers and health-checks each
Editions restarted euler-opera (5103), kepler-gw (5104), sundials (5720), ancient-sundial (2200)
Tools Memories (tracks failures across runs)
Status ✅ Tested — all 4 ports respond HTTP 200
Log ~/Dropbox/202x/2026project/ai-platform/logs/editions_restart_YYYY-MM-DD.txt

Automation 2: PrivatKanzlei Daily Update

Setting Value
Schedule 06:00 every day (0 6 * * *)
What it does Runs all 3 PrivatKanzlei sync jobs in sequence
Jobs 1. Gmail OAuth refresh 2. Mail/calendar sync with Gemini extraction 3. Receipt auto-processing
Tools Memories + MCP user-korrespondenz
Gmail status ✅ Re-authenticated, OAuth app published (permanent refresh token)
Status ✅ Ready — hourly refresh job keeps token alive
Log ~/.ai-korrespondenz/logs/daily_summary_YYYY-MM-DD.txt

Automation 3: VoiceMemo Daily Pipeline

Setting Value
Schedule 07:00 every day (0 7 * * *)
What it does Full voice memo processing pipeline: import → transcribe → classify → report
Steps 1. Import recent memos 2. Transcribe with Gemini 3. Classify by project 4. Regenerate Quarto report 5. Validate
Tools Memories (skip already-processed on retry)
Environment Enabled (installs Python deps)
Status ✅ Ready — import_recent_memos.py tested successfully
Log ~/Dropbox/202x/2026project/ai-voicememo/logs/daily_summary_YYYY-MM-DD.txt

Supporting Infrastructure

GEMINI_API_KEY

  • Status: ✅ Set in local shell (~/.zshrc)
  • Added to: Cursor Cloud Agents dashboard → Secrets
  • Value: AIzaSyDnR5...zEL0 (verified working)
  • Used by: All three automations for Gemini API calls

Edition Servers — Verified Healthy

Port Edition Status Responds
5103 Euler Opera Omnia ✅ Running HTTP 200
5104 Kepler Gesammelte Werke ✅ Running HTTP 200
5720 Ancient Sundials (BSDP) ✅ Running HTTP 200
2200 Sundial Shadow Animator ✅ Running HTTP 200

Core Services — All Healthy

Service Port Status Last Check
Router 5001 ✅ HTTP 200 today 09:30
VoiceMemo 5200 ✅ HTTP 200 today 09:30
INQUA 8080 ✅ HTTP 302 today 09:30

Daily Schedule

Time     Automation                    Duration  Logs to
─────────────────────────────────────────────────────────────────
05:00    Edition Servers Restart       ~1 min    editions_restart_YYYY-MM-DD.txt
06:00    PrivatKanzlei Daily Update    ~3 min    daily_summary_YYYY-MM-DD.txt
07:00    VoiceMemo Daily Pipeline      ~5 min    daily_summary_YYYY-MM-DD.txt

What Happens on First Run (Tonight)

05:00 — Edition Servers Restart

  1. Kills existing processes on ports 5103, 5104, 5720, 2200
  2. Starts ai-viewer --server instances for euler-opera, kepler-gw, sundials
  3. Starts uvicorn sundial_server:app for ancient-sundial
  4. Health-checks each port with curl http://localhost:PORT/
  5. Writes status report

Expected outcome: All 4 edition servers restart cleanly, respond HTTP 200

06:00 — PrivatKanzlei Daily Update

  1. Gmail refresh: python3 scripts/gmail_auto_refresh.py --once → updates OAuth token
  2. Nightly sync: python3.11 scripts/nightly_mail_calendar_sync.py → syncs Gmail + Thunderbird, extracts calendar events with Gemini, pushes to Google Calendar
  3. Belege auto: python3 packages/korrespondenz/tools/firma_belege_auto.py → processes company receipts/documents
  4. Writes summary: mails synced, calendar events created, Belege processed

Expected outcome: All three jobs run in sequence, Gmail token stays fresh

07:00 — VoiceMemo Daily Pipeline

  1. Import: python scripts/import_recent_memos.py → scans Apple Voice Memos, imports new ones
  2. Transcribe: python scripts/sync_and_process.py → transcribes pending memos with Gemini
  3. Classify: python scripts/classify_memos.py → classifies transcripts by project
  4. Report: python scripts/generate_report_index.py + quarto render docs/reports/ → regenerates Quarto site
  5. Validate: python scripts/validate_all_transcripts.py → reports missing/failed
  6. Writes summary with counts

Expected outcome: New memos processed end-to-end, report site updated


Monitoring

View Run History

Go to cursor.com/automations to see: - Last run time and duration - Exit code and status (passed/failed) - Agent memory (notes from previous runs) - Full logs

Local Logs

All three automations write daily summaries to:

# Edition restart logs
cat ~/Dropbox/202x/2026project/ai-platform/logs/editions_restart_*.txt

# PrivatKanzlei logs
cat ~/.ai-korrespondenz/logs/daily_summary_*.txt

# VoiceMemo logs
cat ~/Dropbox/202x/2026project/ai-voicememo/logs/daily_summary_*.txt

Troubleshooting

If an automation fails

  1. Check the log file (paths above)
  2. Check cursor.com/automations for the agent memory notes
  3. The automation will retry the next day — Memories prevent duplicate processing
  4. Manually re-run if needed:
    • Edition restart: see config/service-commands.yaml
    • PrivatKanzlei: cd ~/Dropbox/ggnew/PrivatKanzlei && python3 scripts/gmail_auto_refresh.py --once
    • VoiceMemo: cd ~/Dropbox/202x/2026project/ai-voicememo && python3 scripts/import_recent_memos.py

Edition servers not starting

Check if ports are already in use:

lsof -i :5103
lsof -i :5104
lsof -i :5720
lsof -i :2200

Kill and restart manually:

cd ~/Dropbox/202x/2026project/ai-viewer
/opt/homebrew/bin/ai-viewer --server --port 5103 &
/opt/homebrew/bin/ai-viewer --server --port 5104 &
/opt/homebrew/bin/ai-viewer --server --port 5720 &
cd ~/Dropbox/202x/2026research/ai-sundial3d
/opt/homebrew/bin/python3 -m uvicorn sundial_server:app --host 0.0.0.0 --port 2200 &

Gmail token keeps expiring

The OAuth app is now published (seen in Google Cloud Console → OAuth consent screen). The refresh token is permanent. If it expires again:

cd ~/Dropbox/ggnew/PrivatKanzlei
python3 scripts/gmail_auth_renew.py