Skip to content

Migrate control plane to Function @modal.asgi_app - #7

Merged
botirkhaltaev merged 1 commit into
mainfrom
asgi-control-plane
Aug 11, 2026
Merged

Migrate control plane to Function @modal.asgi_app#7
botirkhaltaev merged 1 commit into
mainfrom
asgi-control-plane

Conversation

@botirkhaltaev

Copy link
Copy Markdown
Collaborator

Summary

  • Replace Modal Server (RunnerServer + uvicorn) with a Runner-registered Function @modal.asgi_app + @modal.concurrent so cold-start webhooks queue instead of 503.
  • Rename api.pywebhook.py; keep WebhookApp / DeliveryStore as internal collaborators. Meta server_namewebhook_function. URL host is *.modal.run.
  • Image build: PyPI runtime deps + add_local_python_source("runner_modal") until public package pin. Accept GitHub form-urlencoded payload= bodies. release.yml runs on self-hosted Modal labels.

Test plan

  • PR CI picked up by dogfood runners (self-hosted / modal / ci) via webhook — no manual dispatch
  • ty / ruff / pytest green on the PR
  • GET {Runner.from_name("ci").url}/health returns labels + concurrency
  • After merge: confirm webhook URL stays on *.modal.run/github

Servers reject zero-to-one traffic with 503; Function asgi_app queues inputs so GitHub workflow_job webhooks survive cold starts. Drop RunnerServer/uvicorn, rename api to webhook, and accept form-urlencoded payloads.
@botirkhaltaev
botirkhaltaev merged commit 3437f9d into main Aug 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant