Inquir Compute logoInquir Compute
Inquir Compute · cron

Cron job platform with logs, retries, and API integration

A cron job platform that runs scheduled tasks as serverless functions: validated expressions, execution history, retries, and the same API gateway, secrets, and observability as your HTTP endpoints. Not a standalone scheduler—a full backend runtime for jobs and APIs together.

Last updated: 2026-04-20

Direct answer

Cron job platform with logs, retries, and API integration. In Inquir, cron jobs and HTTP API endpoints are both pipeline-backed serverless functions. They share workspace secrets, execution history, alert rules, and container isolation. Scheduling is a trigger type on a pipeline—not a separate product.

When it fits

  • Teams that want cron jobs and API endpoints in one platform with shared observability
  • Jobs that need retries, history, and alerting without a separate scheduler service

Tradeoffs

  • Tools like Heroku Scheduler or EasyCron give you a scheduled HTTP call—but you still need the serverless function, the secrets model, and the observability layer separately.
  • When the scheduled job calls an internal API, accesses a database, or writes to object storage, the security model for those credentials lives somewhere else—usually a fragile env file.

What a real cron job platform needs

  • Expression validation before the first missed run
  • Execution history: when did it run, how long, what output
  • Retries: automatic re-run on failure without manual intervention
  • Shared secrets with HTTP API routes (no parallel env file on a server)
  • Alerts: notify when a job fails or takes longer than expected

Most teams start with crontab on a VPS. It works until scale or team size forces the question: "did the job run last night?" and the answer requires SSH access and log trawling.

Why standalone schedulers miss the full picture

Tools like Heroku Scheduler or EasyCron give you a scheduled HTTP call—but you still need the serverless function, the secrets model, and the observability layer separately.

When the scheduled job calls an internal API, accesses a database, or writes to object storage, the security model for those credentials lives somewhere else—usually a fragile env file.

One platform for cron jobs and APIs

In Inquir, cron jobs and HTTP API endpoints are both pipeline-backed serverless functions. They share workspace secrets, execution history, alert rules, and container isolation. Scheduling is a trigger type on a pipeline—not a separate product.

The same function that powers a public REST API endpoint can be triggered by a cron schedule. One deploy, two entry points, shared observability.

Cron job platform capabilities

Validated cron expressions

Expressions validate at save time. Standard 5-field cron (minute, hour, day, month, weekday). Errors surface immediately, not on the next missed run.

Execution history

Every cron run creates an execution record: start time, trigger context, step outputs, duration, and exit status—queryable from the console.

Retries with delay

Configure retry count and delay per step. Exponential backoff or fixed delay. Dead-letter paths for jobs that exhaust retries.

Parallel job execution

Multiple cron pipelines run concurrently—no single-thread scheduler bottleneck. Add overlap guards per-job when needed.

How to set up a cron job on Inquir

1

Implement the job handler

Write a serverless function. Keep logic idempotent—cron jobs can fire twice on rare scheduler restarts.

2

Create pipeline with schedule trigger

Set trigger type to schedule, enter cron expression. Platform validates and schedules first run.

3

Set alert rule

Add a duration SLO alert: notify when the job takes longer than 10 minutes or exits non-zero.

Certificate expiry checker (cron job)

Runs daily at 08:00 UTC, checks TLS certificate expiry for a list of domains, and sends alert if any expire within 30 days.

jobs/cert-checker.mjs
import tls from 'node:tls';
import net from 'node:net';

async function checkExpiry(hostname) {
  return new Promise((resolve, reject) => {
    const socket = tls.connect({ host: hostname, port: 443 }, () => {
      const cert = socket.getPeerCertificate();
      socket.destroy();
      resolve(new Date(cert.valid_to));
    });
    socket.on('error', reject);
  });
}

export async function handler(event) {
  const domains = process.env.DOMAINS_TO_MONITOR?.split(',') ?? [];
  const results = await Promise.all(
    domains.map(async (d) => ({ domain: d, expiry: await checkExpiry(d) })),
  );
  const expiringSoon = results.filter(
    (r) => r.expiry.getTime() - Date.now() < 30 * 86_400_000,
  );
  if (expiringSoon.length > 0) await sendAlert(expiringSoon);
  return { checked: domains.length, expiringSoon: expiringSoon.length };
}

When Inquir is the right cron job platform

When this works

  • Teams that want cron jobs and API endpoints in one platform with shared observability
  • Jobs that need retries, history, and alerting without a separate scheduler service

When to skip it

  • Simple one-off or very infrequent tasks where crontab on a VPS is already working fine and not causing incidents

FAQ

Can I trigger a cron job manually?

Yes—invoke the underlying function directly from the gateway or console to test without waiting for the next scheduled tick.

How do I handle job overlap?

Add a distributed lock or skip-if-running guard in the handler. For idempotent jobs, overlap is safe by design—use a watermark pattern.

Inquir Compute logoInquir Compute

The simplest way to run AI agents and backend jobs without infrastructure.

Contact info@inquir.org

© 2025 Inquir Compute. All rights reserved.