LocalCloud Cloud Scheduler Local Emulator
Get started
local.cloud / agents
Read this page as Markdown ↗
local.cloud — Cloud Scheduler Local Emulator .md Open tab

Cloud Scheduler

Cloud Scheduler runs jobs on a cron schedule. It triggers HTTP endpoints or messaging targets for recurring application work.

When to use Cloud Scheduler

Typical uses

Use when work must recur on a cron schedule in a chosen time zone, with an HTTP endpoint or messaging target receiving each scheduled trigger.

Examples

  • Scheduled reports and maintenance
  • Recurring HTTP or Pub/Sub triggers

Explore another service

View all

Example usage

Service ID: cloudscheduler. Starts by default. Use an already running LocalCloud runtime for the examples below.

Export the local project and mapped endpoints in your client process, then use the client settings below. First-time setup

# Export GOOGLE_CLOUD_PROJECT and CLOUD_SCHEDULER_EMULATOR_HOST
eval "$(localcloud env)"

REST gateway examples use the generated HTTP address in SERVICE_USAGE_EMULATOR_HOST; native SDKs can use a different protocol.

Java · REST

List scheduled jobs

List scheduled jobs; Cloud Scheduler triggers recurring application work on a cron schedule.

Call the Google Cloud REST API with the JDK HTTP client. Requires JDK 17+. Results reflect resources already created in your local project.

Discovery check · reads existing local state.

Save as Hello.java

import java.net.URI;
import java.net.http.*;
import java.time.Duration;
import java.util.Objects;

public class Hello {
  public static void main(String[] args) throws Exception {
    var project = Objects.requireNonNull(System.getenv("GOOGLE_CLOUD_PROJECT"));
    var endpoint = Objects.requireNonNull(System.getenv("SERVICE_USAGE_EMULATOR_HOST"));
    var url = URI.create(endpoint.replaceAll("/+$", "") + "/v1/projects/" + project + "/locations/us-central1/jobs");
    var request = HttpRequest.newBuilder(url).timeout(Duration.ofSeconds(30)).GET().build();
    var client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build();
    var response = client.send(request, HttpResponse.BodyHandlers.ofString());
    if (response.statusCode() >= 400) {
      throw new IllegalStateException(response.statusCode() + ": " + response.body());
    }
    System.out.println(response.body());
  }
}

Run the example

java Hello.java

Verify the result

The request succeeds. An empty list or no printed rows is valid before matching resources exist. Continue with the documented workflows for a resource test.

Verify a resource workflow by creating isolated state, performing the operation, and reading the result back. Run cleanup even after a failure; delete only test-owned resources.

Connection failed? Check localcloud status --verbose, enabled services, and client exports. Stop accidental Google Cloud calls; correct local routing before retrying.

Documented workflows

  • Job CRUD, pause/resume, and manual runs

    Create a job with a local target, pause and resume it, and request a manual run. Inspect the resulting job and attempt state before deleting the fixture.

  • Timezone-aware cron and schedule previews

    Configure a cron expression and timezone, then inspect the next-run preview. Choose a short test schedule and compare observed trigger times with the expected local schedule.

  • HTTP/Pub/Sub delivery, retries, deadlines, and attempt history

    Point an HTTP job at a test receiver or a Pub/Sub job at a local topic. Introduce a failure and inspect retries, deadlines, and attempt history.

  • HTTP delivery with locally issued OAuth/OIDC credentials

    Configure an OAuth or OIDC credential on an HTTP job and verify the token at the receiver. Trust the LocalCloud issuer and JWKS for this local delivery test.

Service boundaries

  • No App Engine targets; authenticated receivers must trust the local issuer and JWKS
  • No interrupted-attempt replay or downtime backfill
  • Stored policies do not enforce per-job authorization
Agent testing

Use Cloud Scheduler with an AI agent

Before the agent changes application logic, have it create local Cloud Scheduler state, read it back with the project SDK, and note which feature the check covered. That first local call catches accidental production routing and needs no GCP account, service-account key, or billing project.

Configure this repo

Set up this repository to use LocalCloud for local GCP development. First read https://local.cloud/ai/agents.md, then inspect this repo, identify the GCP services and SDK language, configure emulator environment variables, and run the narrowest integration test against localhost. Do not use real GCP credentials or production endpoints.

Production endpoints, auth, IAM, quotas, regional behavior, and final release validation still need the target Google Cloud project.

Agent resources has more prompts and the AGENTS.md template.

Related guides

Desktop view