Integrations

Wire Drumbeats into whatever your job is written in.

Every integration on this page is a variation on three HTTP requests:

bash
curl -sf --max-time 3 "$API/start?run_id=$RUN_ID"
# ... the job ...
curl -sf --max-time 3 "$API/success?run_id=$RUN_ID"   # or /failure
curl -sf --max-time 3 "$API/start?run_id=$RUN_ID"
# ... the job ...
curl -sf --max-time 3 "$API/success?run_id=$RUN_ID"   # or /failure

There is no SDK to install, no agent to run, and no authentication header. If your language can make an HTTP request, it can talk to Drumbeats.

Pick your stack#

StackGuideTypical use
Node.js and TypeScriptNode.jsExpress, Fastify, Nest jobs, Lambda handlers, Bun and Deno scripts
PythonPythonDjango and Celery tasks, Airflow DAGs, FastAPI background jobs, plain scripts
GoGoLong-running workers, gRPC services, CLI cron jobs
PHPPHPLaravel scheduled tasks, Symfony Messenger consumers, WordPress cron
Shell and BashShellSystem cron, container entrypoints, glue scripts
GitHub ActionsGitHub ActionsScheduled workflows and CI jobs
KubernetesKubernetesCronJob and Job resources
Claude, Cursor, VS CodeAI agentManaging monitors conversationally through MCP

Every language guide follows the same order: a minimal example, one reusable wrapper, the failure modes specific to that runtime, and the framework notes. Read one and you can skim the rest.

Do these three things regardless of language#

Give every ping a timeout. Three seconds is fine. Without one, a hung connection to Drumbeats can hold your worker for minutes.

Never let a ping throw. Catch and discard. A monitoring call that can fail the job it watches is worse than no monitoring.

Set max_duration_seconds and send start. A process killed by the OOM killer never sends a failure ping. Server-side hang detection is the only thing that catches it, and it needs both of those set.

Production hardening covers each in depth, along with payload caps and multi-environment routing.

What happens when it breaks#

The wiring itself has three failure modes worth knowing before you ship.

FailureWhat you seeFix
The ping never reaches DrumbeatsA MISSED incident for a job that actually succeededRetries and timeouts, per production hardening
The job dies before sending failureThe run stays open and is recorded as hungSet max_duration_seconds and send start
Only the success path is wrappedFailures look like silence until the window closesBranch on both outcomes, or use the exit-code form

Next#

Monitor types to pick Cron, Heartbeat, Event-driven, or Uptime before you wire anything. Ping API for the endpoints every guide here is calling.