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
- Kills existing processes on ports 5103, 5104, 5720, 2200
- Starts
ai-viewer --serverinstances for euler-opera, kepler-gw, sundials - Starts
uvicorn sundial_server:appfor ancient-sundial - Health-checks each port with
curl http://localhost:PORT/ - Writes status report
Expected outcome: All 4 edition servers restart cleanly, respond HTTP 200
06:00 — PrivatKanzlei Daily Update
- Gmail refresh:
python3 scripts/gmail_auto_refresh.py --once→ updates OAuth token - Nightly sync:
python3.11 scripts/nightly_mail_calendar_sync.py→ syncs Gmail + Thunderbird, extracts calendar events with Gemini, pushes to Google Calendar - Belege auto:
python3 packages/korrespondenz/tools/firma_belege_auto.py→ processes company receipts/documents - 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
- Import:
python scripts/import_recent_memos.py→ scans Apple Voice Memos, imports new ones - Transcribe:
python scripts/sync_and_process.py→ transcribes pending memos with Gemini - Classify:
python scripts/classify_memos.py→ classifies transcripts by project - Report:
python scripts/generate_report_index.py+quarto render docs/reports/→ regenerates Quarto site - Validate:
python scripts/validate_all_transcripts.py→ reports missing/failed - 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_*.txtTroubleshooting
If an automation fails
- Check the log file (paths above)
- Check cursor.com/automations for the agent memory notes
- The automation will retry the next day — Memories prevent duplicate processing
- 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 restart: see
Edition servers not starting
Check if ports are already in use:
lsof -i :5103
lsof -i :5104
lsof -i :5720
lsof -i :2200Kill 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