diff --git a/apps/ade-cli/src/bootstrap.ts b/apps/ade-cli/src/bootstrap.ts index c4623dc8a..b3807b06a 100644 --- a/apps/ade-cli/src/bootstrap.ts +++ b/apps/ade-cli/src/bootstrap.ts @@ -1085,6 +1085,9 @@ export async function createAdeRuntime(args: { githubService: headlessLinearServices.githubService, listRules: () => (automationService ? projectConfigService.get().effective.automations ?? [] : []), ingressCursorStore: createKvIngressCursorStore(db), + // 30s halves worst-case webhook latency. Each poll is one request to our + // own relay worker (no GitHub data cost); the service floors at 30s. + pollIntervalMs: 30_000, }); void automationIngressService.start().catch((error) => { logger.warn("automations.ingress_start_failed", { diff --git a/apps/desktop/src/main/main.ts b/apps/desktop/src/main/main.ts index 08268b16a..67f32d3b8 100644 --- a/apps/desktop/src/main/main.ts +++ b/apps/desktop/src/main/main.ts @@ -3201,6 +3201,9 @@ app.whenReady().then(async () => { githubService, listRules: () => (automationService ? projectConfigService.get().effective.automations ?? [] : []), ingressCursorStore: createKvIngressCursorStore(db), + // 30s halves worst-case webhook latency. Each poll is one request to + // our own relay worker (no GitHub data cost); the service floors at 30s. + pollIntervalMs: 30_000, }); const githubPollingService = automationService