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_REPLYplus 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 tojobs.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--jobis omitted.
jobs.json may be:
- a list of job objects,
- an object with a
jobslist, - 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, andmarkdown. - Delivery interpretation for announce, text-return, silent, suppressed, and
NO_REPLYpatterns. - 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.jsonfixtures/results/*.jsonfixtures/prompts/*.txtfixtures/payloads/*.txtfixtures/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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ce8dc4fec5ad7141c86d3fd4c8b6715285301369557e74a9aa76d82f878ff21
|
|
| MD5 |
a55c8f83beb08df3b73472960400c975
|
|
| BLAKE2b-256 |
e0ca0eaf2cc4491489d14f8d66c710c59775779e28ac28aa9511908bb6f05f35
|
File details
Details for the file openclaw_cron_replay-0.1.1-py3-none-any.whl.
File metadata
- Download URL: openclaw_cron_replay-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
097859d12080540f9b4171ee7444d57b3b5c79915c6de0d85ba57eb41e9eb91f
|
|
| MD5 |
91816b65caed03bda614e93c9e6b2633
|
|
| BLAKE2b-256 |
a4c82c1037346a5716785ab9b7299de50c8447a38c3d8124047a9cf2a45a4ec3
|