Port padelnomics' schedule-aware Python supervisor to materia: - src/materia/supervisor.py — croniter scheduling, topological wave execution (parallel independent workflows), tag-based git pull + deploy, status CLI subcommand - infra/supervisor/workflows.toml — workflow registry (psd daily, cot weekly, prices daily, ice daily, weather daily) - infra/supervisor/materia-supervisor.service — updated ExecStart to Python supervisor, added SUPERVISOR_GIT_PULL=1 Adaptations from padelnomics: - Uses extract_core.state.open_state_db (not padelnomics_extract.utils) - uv run sqlmesh -p transform/sqlmesh_materia run - uv run materia pipeline run export_serving - web/deploy.sh path (materia's deploy.sh is under web/) - Removed proxy_mode (not used in materia) Also: add croniter dependency to src/materia, delete old supervisor.sh. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
29 lines
678 B
Desktop File
29 lines
678 B
Desktop File
[Unit]
|
|
Description=Materia Supervisor - Pipeline Orchestration
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=root
|
|
WorkingDirectory=/opt/materia
|
|
ExecStart=/bin/sh -c 'exec uv run python src/materia/supervisor.py'
|
|
Restart=always
|
|
RestartSec=10
|
|
EnvironmentFile=/opt/materia/.env
|
|
Environment=LANDING_DIR=/data/materia/landing
|
|
Environment=DUCKDB_PATH=/data/materia/lakehouse.duckdb
|
|
Environment=SERVING_DUCKDB_PATH=/data/materia/analytics.duckdb
|
|
Environment=SUPERVISOR_GIT_PULL=1
|
|
|
|
# Resource limits
|
|
LimitNOFILE=65536
|
|
|
|
# Logging
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
SyslogIdentifier=materia-supervisor
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|