Ops Framework
A 0-token jobs + monitoring framework for OpenClaw: run long-running read tasks via scripts, checkpoint/resume safely, and send periodic progress + immediate alerts to Telegram. Write jobs are blocked by default and must be explicitly approved and verified.
MIT-0 · Free to use, modify, and redistribute. No attribution required.
⭐ 2 · 1.5k · 5 current installs · 6 all-time installs
by@Zjianru
MIT-0
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name/description match the included materials: SKILL.md/OPS_FRAMEWORK.md describe a local jobs monitor and ops-monitor.py implements it. The script's behaviors (running configured job commands, checking statuses, and sending Telegram messages via openclaw or a bot token in openclaw.json) are exactly what the skill claims.
Instruction Scope
Runtime instructions keep activity local (copy files to OPENCLAW_HOME, run python3 ops-monitor.py, configure ops-jobs.json). The script intentionally executes user-provided commands from job configs and sends status/alerts to Telegram; this is part of the stated purpose but means the tool can surface any command output (including sensitive data) if you configure jobs to produce it. One-shot write jobs are documented as blocked by default, and example configs default to disabled jobs.
Install Mechanism
No install spec or remote downloads are present — this is instruction-only with a local Python script. Nothing is fetched from external URLs during install.
Credentials
The skill requires no declared env vars or external credentials, but at runtime the script reads OPENCLAW_HOME/openclaw.json (to discover Telegram target and botToken) and will use an available openclaw binary if present. Reading that config and optionally using the bot token is proportional to the skill's 'send Telegram alerts' feature; however openclaw.json may contain sensitive tokens, so granting the script access effectively gives it permission to send arbitrary messages via that token.
Persistence & Privilege
always:false (normal). The script writes its own state under ~/.openclaw/net/state/ops-monitor.json and config is stored under ~/.openclaw/net/config; it does not request persistent platform-wide privileges or modify other skills. That level of persistence is expected for a local monitor.
Assessment
This package is coherent and implements what it says, but review before enabling: 1) Inspect ops-jobs.json and keep all jobs disabled until you trust commands; the script will run whatever command you configure and may include output (stdout/stderr tails) in Telegram alerts. 2) Check your ~/.openclaw/openclaw.json — it may contain a Telegram botToken that the script will use to send messages; only allow the script access if you intend it to send messages. 3) Run python3 ops-monitor.py --print-only / selftest to verify behavior and test with dummy jobs. 4) Do not enable or grant approval for write-type jobs unless you audited the commands and linked verification jobs. 5) Because the source is 'unknown', consider running the script in a limited user account or VM, confirm there are no unexpected network endpoints beyond Telegram API, and lock file permissions on your OpenClaw config/state. If you want higher assurance, request the upstream repo or a signed release for code review.Like a lobster shell, security has layers — review code before you run it.
Current versionv0.1.0
Download ziplatest
License
MIT-0
Free to use, modify, and redistribute. No attribution required.
SKILL.md
Ops Framework(Jobs + Ops Monitor)— OpenClaw Skill (MVP)
目标:把“长任务执行 / 断点续跑 / 进度汇报 / 异常告警”做成 0-token 的可复用能力。
这套技能由两部分组成:
ops-monitor.py:一个纯本地脚本,负责跑 status / 检测卡住 / 发送 Telegram 快报ops-jobs.json:一个声明式 job 配置(包含 kind/risk/命令/策略)
推荐作为“外挂”存在:长任务尽量用脚本跑,避免让模型持续盯进度烧 token。
What this solves
- Long-running read jobs: scans, inventories, large syncs, periodic polling; support pause/resume and stall detection.
- One-shot read jobs: health checks or lint-like checks; only report when they emit
ACTION REQUIRED/ALERTor fail. - One-shot write jobs: blocked by default; must be explicitly approved and must chain to a read-only verification job.
Quickstart (local)
- Copy files to your OpenClaw host (suggested layout):
~/.openclaw/net/tools/ops-monitor.py~/.openclaw/net/config/ops-jobs.json~/.openclaw/net/state/ops-monitor.json(auto-created)
You can also run the script from any directory as long as OPENCLAW_HOME points to your OpenClaw state dir (default ~/.openclaw).
- Start from the example config:
ops-jobs.example.json
- Validate:
python3 ops-monitor.py validate-config --config-file ~/.openclaw/net/config/ops-jobs.json
python3 ops-monitor.py selftest
- Run one monitoring tick (prints only; does not send):
python3 ops-monitor.py tick --print-only
- Run periodic ticks via your OS scheduler (launchd/systemd/cron). The script is designed to be called frequently; it decides whether to report based on policy and state.
Job kinds and safety
kind is one of:
long_running_readone_shot_readone_shot_write(never auto-executed by ops-monitor)
risk is one of:
read_onlywrite_localwrite_external
Rules (MVP):
long_running_readmay auto-resume only whenrisk=read_onlyandpolicy.autoResume=true.one_shot_readmay run explicitly or via queue (read-only only).one_shot_writeis always blocked from auto-run; it exists as a declarative “approval + verification chain” placeholder.
Status contract (for long_running_read)
Your commands.status must print JSON to stdout, with at least:
running(boolean)completed(boolean)
Recommended:
pid(number)stopReason(string)progress(object)progressKey(string) — stable key used for stall detectionlevel(ok|warn|alert)message(string)
Commands
# Validate config
python3 ops-monitor.py validate-config --config-file ~/.openclaw/net/config/ops-jobs.json
# Print current statuses (no Telegram)
python3 ops-monitor.py status --config-file ~/.openclaw/net/config/ops-jobs.json
# One monitoring tick
python3 ops-monitor.py tick --config-file ~/.openclaw/net/config/ops-jobs.json
# Explicitly start/stop a long job
python3 ops-monitor.py start <job_id> --config-file ~/.openclaw/net/config/ops-jobs.json
python3 ops-monitor.py stop <job_id> --config-file ~/.openclaw/net/config/ops-jobs.json
# Run one one_shot_read job explicitly
python3 ops-monitor.py run <job_id> --config-file ~/.openclaw/net/config/ops-jobs.json
Reference docs
- Spec (Chinese, detailed):
OPS_FRAMEWORK.md
Files
6 totalSelect a file
Select a file to preview.
Comments
Loading comments…
