Skip to main content

Replay OpenClaw cron job payloads, prompts, results, and delivery decisions locally.

Project description

openclaw-cron-replay

openclaw-cron-replay is a small debugging CLI for replaying an OpenClaw cron job locally against saved job configs, prompts, payloads, result files, and optional prior run metadata.

It helps answer:

  • Which prompt or payload would this cron run use?
  • What user-visible content would be derived from a saved result?
  • Would the cron announce, suppress, or deliver a final message?
  • Are there contradictions like NO_REPLY plus generated content?

It is intentionally focused on cron debugging and replay. It is not a full OpenClaw runtime simulator and it does not perform real delivery.

Install

From source:

python -m pip install -e ".[dev]"

From PyPI after release:

python -m pip install openclaw-cron-replay

From Homebrew after release:

brew tap pfrederiksen/tap
brew install openclaw-cron-replay

Examples

Replay a job from jobs.json:

openclaw-cron-replay --job 429c62e0-2b1f-4179-bac3-792f405d09ae

Replay a job using a saved result file:

openclaw-cron-replay \
  --job 9afc7d6c-64ab-45a2-9e17-da069b3181d9 \
  --result /tmp/news_digest_result.json

Resolve a run id and render Markdown:

openclaw-cron-replay --from-run manual:429c62e0-2b1f-4179-bac3-792f405d09ae --markdown

Use explicit prompt and payload text files:

openclaw-cron-replay \
  --job 429c62e0-2b1f-4179-bac3-792f405d09ae \
  --prompt fixtures/prompts/news_digest.txt \
  --payload fixtures/payloads/news_digest_payload.txt

Emit machine-readable JSON:

openclaw-cron-replay --job no-reply-job --result fixtures/results/no_reply_with_content.json --json

Compare two job configs:

openclaw-cron-replay --compare fixtures/jobs.before.json fixtures/jobs.after.json

Diff replay outputs before and after a prompt change:

openclaw-cron-replay \
  --job news-digest \
  --prompt fixtures/prompts/news_digest.txt \
  --diff-prompt fixtures/prompts/news_digest_changed.txt

Inputs

The CLI accepts:

  • --job: job id found in a jobs file.
  • --jobs: path to a jobs JSON file. Defaults to jobs.json.
  • --result: saved result JSON file.
  • --prompt: saved prompt text file.
  • --payload: saved payload text file.
  • --metadata: optional prior run metadata JSON file.
  • --from-run: optional run id. manual:<job-id> resolves the job id when --job is omitted.

jobs.json may be:

  • a list of job objects,
  • an object with a jobs list,
  • an object whose keys are job ids and values are job objects.

The parser is intentionally tolerant because real cron config snapshots vary.

Output

The replay report includes:

  • resolved prompt and payload,
  • derived user-visible output,
  • delivery mode interpretation,
  • likely final message text,
  • warnings about risky patterns.

Supported renderers:

  • default terminal output,
  • --json,
  • --markdown.

What Is Simulated

  • Job config resolution.
  • Prompt and payload selection from files, job fields, or metadata.
  • Result-file output extraction from common fields such as content, text, message, output, reply, and markdown.
  • Delivery interpretation for announce, text-return, silent, suppressed, and NO_REPLY patterns.
  • Likely final message text.
  • Risk warnings.

What Is Not Simulated

  • Network calls.
  • Real OpenClaw agent execution.
  • Scheduler timing.
  • Authentication, authorization, or secrets.
  • Webhook, Slack, email, or other real delivery.
  • Durable runtime state mutation.

Fixtures

Sample cron patterns live under fixtures/:

  • fixtures/jobs.json
  • fixtures/results/*.json
  • fixtures/prompts/*.txt
  • fixtures/payloads/*.txt
  • fixtures/metadata/*.json

These are synthetic fixtures meant to represent common cron debugging cases.

Release

This repo includes GitHub Actions for:

  • tests on pull requests and main,
  • package build checks,
  • tag-based PyPI publishing,
  • tag-based Homebrew tap update.

Use semantic version tags:

git tag v0.1.0
git push origin v0.1.0

For PyPI, configure trusted publishing for this repository or add a PYPI_API_TOKEN secret and adapt the workflow. Do not commit PyPI tokens.

For Homebrew, configure HOMEBREW_TAP_TOKEN with access to pfrederiksen/homebrew-tap.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openclaw_cron_replay-0.1.1.tar.gz (17.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openclaw_cron_replay-0.1.1-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file openclaw_cron_replay-0.1.1.tar.gz.

File metadata

  • Download URL: openclaw_cron_replay-0.1.1.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openclaw_cron_replay-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7ce8dc4fec5ad7141c86d3fd4c8b6715285301369557e74a9aa76d82f878ff21
MD5 a55c8f83beb08df3b73472960400c975
BLAKE2b-256 e0ca0eaf2cc4491489d14f8d66c710c59775779e28ac28aa9511908bb6f05f35

See more details on using hashes here.

File details

Details for the file openclaw_cron_replay-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for openclaw_cron_replay-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 097859d12080540f9b4171ee7444d57b3b5c79915c6de0d85ba57eb41e9eb91f
MD5 91816b65caed03bda614e93c9e6b2633
BLAKE2b-256 a4c82c1037346a5716785ab9b7299de50c8447a38c3d8124047a9cf2a45a4ec3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page