# INTERIM — superseded by showcase-harness smoke cadence (see Notion). # # Goal: curl /api/health on each showcase service every 5 min so the agent's # in-memory state (JIT, module cache, connection pools) stays warm. Railway Pro # tier doesn't sleep containers, but warm-state decays over idle. # # This workflow is intentionally minimal — no Slack, no metrics, no state. # This is strictly keep-alive; alerting lives with the validation/deploy # workflows. name: "Showcase: Keep-Alive" on: schedule: - cron: "*/5 * * * *" workflow_dispatch: {} permissions: contents: read jobs: ping: permissions: contents: read name: Ping ${{ matrix.slug }} if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest timeout-minutes: 2 continue-on-error: true strategy: fail-fast: false matrix: slug: - ag2 - agno - claude-sdk-python - claude-sdk-typescript - crewai-crews - google-adk - langgraph-fastapi - langgraph-python - langgraph-typescript - langroid - llamaindex - mastra - ms-agent-dotnet - ms-agent-harness-dotnet - ms-agent-python - pydantic-ai - spring-ai - strands steps: - name: Ping /api/health run: | curl -fsS --max-time 15 \ "https://showcase-${{ matrix.slug }}-production.up.railway.app/api/health" \ > /dev/null