How ocanphys/launchpad works
Launchpad is a Modal-backed run and job orchestrator. Users seed run configuration, inspect readiness in the dashboard or launch a job, and the launcher checks dependencies and grants a per-run lease before dispatching a worker. Jobs execute, record logs and completion artifacts, and publish volume writes on commit; the dashboard reads run state and lease/heartbeat status. The volume is the durable source of truth, with Modal Dicts tracking leases and heartbeats. The README documents ETL and job behavior; some main.py wiring is unsampled, so uncertain call links are omitted.
Main entry points: main.py Modal app and routes · jobs.py Job classes · runtime.py Worker lifecycle · app.js Dashboard UI
Components 16
Run setup
- Run config schema
run_config.py - Config seeding
push_config.py
Launch and state
- Dashboard UI
web/app.js - Dashboard rendering
web/render.js - DOM builder
web/el.js - Modal app and routes
main.py
Job execution
- Job classes
jobs.py - ETL workflow
etl - Worker lifecycle
runtime.py - Lease checks
lease_protocol.py - Call logging
logs.py
Runtime state
- Runs volume
- Lease Dict
- Heartbeat Dict
Other components
- Run operator
- Modal platform
Connections 23
- Run operator → Config seeding: seed config
- Config seeding → Run config schema: validate
- Config seeding → Runs volume: write config
- Run operator → Dashboard UI: open dashboard
- Dashboard UI → Modal app and routes: poll state
- Dashboard UI → Dashboard rendering: render state
- Dashboard rendering → DOM builder: build elements
- Dashboard UI → Modal app and routes: request launch
- Modal app and routes → Runs volume: read run data
- Modal app and routes → Lease Dict: read or grant
- Modal app and routes → Heartbeat Dict: read beats
- Modal app and routes → Job classes: check readiness
- Modal app and routes → Modal platform: spawn worker
- Modal platform → Job classes: invoke job
- Job classes → Runs volume: read config and artifacts
- Job classes → Worker lifecycle: use worker context
- Job classes → ETL workflow: run ETL
- Worker lifecycle → Lease checks: confirm ownership
- Lease checks → Lease Dict: check grant
- Worker lifecycle → Heartbeat Dict: publish heartbeat
- Worker lifecycle → Call logging: create call log
- Worker lifecycle → Runs volume: reload and commit
- Job classes → Runs volume: write artifact and logs