Skip to content

Audit and rework cron/launchd jobs for Docker architecture #37

@mriechers

Description

@mriechers

Enhancement

Context: Any scheduled jobs (cron or macOS launchd) associated with Cardigan / ai-editorial-assistant-v3 were built for the pre-Docker local architecture. They need to be audited and reworked for the containerized version.

Problem

Scheduled jobs that interact with Cardigan may:

  • Reference local filesystem paths (OUTPUT/, transcripts/) that are now inside Docker volumes
  • Call scripts directly that now run inside containers
  • Assume the API is at localhost:8000 when it may be behind nginx or a Cloudflare Tunnel
  • Interact with the MCP server via stdio when it needs to move to SSE (Refactor MCP server to work within Docker architecture #35)

Known Launch Agents (the-lodge namespace)

The following ~/Library/LaunchAgents/ may touch the Cardigan workflow — needs human audit to confirm which are relevant:

Agent Status Possibly Relevant?
com.the-lodge.airtable-sync Loaded Likely — syncs Airtable data that Cardigan reads
com.the-lodge.mcp-config-sync Loaded (exit 127) Likely — manages MCP server configuration
com.the-lodge.cli-agent-http Loaded (exit 78) Possibly — HTTP agent that may call Cardigan API
com.the-lodge.diane-listener Loaded (exit 78) Possibly — event listener
com.the-lodge.github-issues-sync Loaded Unlikely but check
com.the-lodge.agent-registrar Loaded Unlikely but check
com.the-lodge.log-lady-audit Loaded Unlikely but check

Note: No direct cardigan or editorial-assistant entries found in crontab or LaunchAgents filenames — the relevant jobs are likely embedded within the-lodge infrastructure.

Rework Options

For each relevant job, decide:

  1. Move into Docker — Convert to a container-based cron (e.g., ofelia, or a dedicated cron container in docker-compose) that runs inside the Docker network
  2. Keep on host, update targets — Keep the launchd agent but update it to call the Docker API endpoint instead of local scripts
  3. Replace with Docker healthcheck/scheduler — Use Docker's built-in healthcheck or a worker container's internal scheduler
  4. Retire — If the job's purpose is handled by the new architecture (e.g., the worker container replaces a cron-triggered script)

Acceptance Criteria

  • All cron/launchd jobs touching Cardigan are identified
  • Each is categorized: move to Docker, update target, or retire
  • Updated jobs work correctly with the containerized architecture
  • No orphaned jobs reference paths or services that no longer exist locally

Metadata

Metadata

Assignees

No one assigned

    Labels

    executor: humanRequires human judgment or manual stepsinfrastructureDeployment, CI/CD, and infrastructure taskspriority: normalStandard maintenance worktype: enhancementNew feature or improvement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions