Monitors in the same Pulumi program as the infrastructure they watch
Declare Checkly checks, groups, and alert channels as Pulumi resources in TypeScript, Python, Go, or .NET. They ship in the same pull request as the service, preview in the same plan, and land with the same pulumi up.
Trusted by teams that keep monitoring in version control
Your infrastructure is declared. Your monitoring is the exception
Most teams that run Pulumi still click monitors together in a dashboard, so the checks drift from the services they watch and nobody reviews the change. The provider closes that gap: a check is a resource next to the load balancer it tests.
One program, one plan, one apply
Checks live in the same stack as the service. pulumi preview shows the monitor changes beside the infra changes, and one pulumi up lands both. Resource references resolve at deploy time, so a check can target the URL Pulumi just created.
The language you already write
The provider ships as an SDK for every major Pulumi language. Loop over services to generate checks, share a locations constant, wrap a check in a function your whole org calls. It is code, so it composes.
Every Checkly resource
Not just checks. Groups, alert channels, status pages, private locations, maintenance windows, and environment variables are all resources, so the whole monitoring setup is reproducible from the repo.
From one check to a paged team in three resources
Define a check, group it with its neighbours, subscribe the group to an alert channel. Each step is a Pulumi resource that references the one before it.
Define a check
A checkly.Check is a Pulumi resource like any other. Point a BROWSER check at the Playwright spec in your repo, pick the regions and cadence, and Pulumi tracks it in state from here on.
Group related checks
A checkly.CheckGroup carries shared locations, tags, and concurrency. Checks join it through groupId, which resolves from the group output at deploy time. No ID copied out of a dashboard.
Add an alert channel
A checkly.AlertChannel for Slack, email, Opsgenie, PagerDuty, or a webhook. Subscribe the group once and every check inside it pages the same place. The webhook URL stays in your environment, not in the file.
Three ways to write monitoring as code. Pick one.
The Checkly CLI is the primary path and gets new features first. The Pulumi and Terraform providers are for teams whose infrastructure already lives in one of those tools and who want monitoring in the same place. All three manage the same account.
Checkly CLI
TypeScript constructs, npx checkly test to run checks locally and in CI before deploying, and the fastest access to new check types. Start here unless you have a reason not to.
Monitoring as code with the CLIPulumi provider
Your infra is a Pulumi program. Monitors become resources in it, in the same language, previewed and applied with the same command. Manage each resource in Pulumi or in the UI, never both.
Provider reference on the Pulumi registryTerraform provider
The same resources in HCL for teams standardised on Terraform. Same account, same checks, different state file.
Checkly Terraform providerGet started in four steps
From an empty directory to a check running in production. The full walkthrough, including the Playwright example, is in the Pulumi provider docs.
Create a Pulumi project
Install the Pulumi CLI, then scaffold a project in the language your infra already uses.
Install the provider
One package. Python, Go, and .NET teams install pulumi-checkly, the Go module, or Pulumi.Checkly instead.
Provide your credentials
Your account ID and an API key from app.checklyhq.com. Set them as environment variables, or store them on the stack with pulumi config set so the whole team shares them.
Preview, then apply
pulumi up shows the diff first. Confirm it and the checks exist in Checkly seconds later, tracked in state.
One owner per resource
Resources created by Pulumi should be changed through Pulumi. Editing them in the Checkly web app creates drift the next pulumi up will overwrite or fail on. If you want to explore in the UI first, do it on checks Pulumi does not manage.
Put monitoring in the same pull request
Install @checkly/pulumi, declare a check next to the service it watches, and run pulumi up. The next review of your infra includes the monitoring too.
No credit card required.