A drop-in library that turns a fresh OpenClaw install into a reliable, self-driving agent in three commands — an objectives-driven autonomous loop, a status dashboard, self-improvement, and safe cron management. Built to run on a modest base model (GPT-5 class), so it favours determinism and grounding over cleverness.
- Install OpenClaw and add at least one model (normal
openclaw onboard). - Install this bundle:
openclaw skills install git:tunc-d/openclaw-quickstart@main - Tell OpenClaw: "run the quickstart setup".
It interviews you up front (models, budget, cadence, permissions), then sets everything up unattended and verifies it. Go AFK; come back to a working agent.
- Objectives loop. You add objectives; each must carry a machine-checkable Definition of Done (shell commands that exit 0). A deterministic gate cron (no LLM cost when idle) dispatches one bounded LLM step at a time toward the active objective, proves progress with the done-checks, and stops. When the queue empties, the loop disables itself.
- Plan-approval per objective.
new-objectivedrafts a plan + done-checks;approve-objectivequeues it. The loop then runs unattended until done/blocked. - Anti-garbage guards. Evidence-before-done, one step per tick, hard timeout, stall detector (auto-block after N no-progress ticks), budget cap, concurrency lock, append-only audit log, hard pause kill switch.
- Self-improvement. A
LESSONS.mdthe worker reads every tick; theretrospectivestep appends concrete lessons after failures. - Model policy.
MODELS.mdsays which model for which task; the agent reads it and applies--modelper task. It does not rewriteopenclaw.json. - Dashboard. A static page (regenerated from state) at
http://127.0.0.1:18789/__openclaw__/canvas/quickstart/dashboard.htmlshowing objectives / in-flight / blocked / done / crons / budget / log. Talk to the agent in built-in WebChat. - Cleanup. Loop self-disables when idle; one-shot crons auto-delete; isolated
sessions auto-prune (
sessionRetention: 24h); stale locks are reclaimed.
| Say | Does |
|---|---|
new-objective |
Draft a new objective (plan + done-checks) for approval |
approve-objective <id> |
Queue an approved objective; (re)start the loop |
status |
Refresh + summarize the dashboard |
loop-admin pause / resume |
Hard kill switch / restart |
loop-admin set-budget <usd> / set-stall <n> |
Tune the guards |
loop-admin disable-loop / create-loop |
Stop / start scheduling |
SKILL.md entry: "quickstart-setup" (run this)
setup/00..06 ordered, idempotent, verify-after-each setup checklist
templates/ seed state files (objectives, state.json, progress, LESSONS, MODELS)
skills/ the 6 operational skills installed into ~/.openclaw/skills
scripts/ gate.mjs · render-dashboard.mjs · lib-state.mjs (deterministic, Node stdlib)
- Why a command-cron gate instead of an LLM loop? Idle ticks must be free and safe. Plain code decides whether to spend any model at all; the model only runs for one bounded step when there is approved, in-budget, non-stalled work.
- CLI flags vary by OpenClaw version. Setup confirms each flag via
openclaw <cmd> --helpbefore relying on it and stops-and-asks on mismatch rather than guessing. - No built-in objectives dashboard exists in OpenClaw — this ships a minimal static one rather than a bespoke web app, for reliability on a small model.
- Local-only by default — no outbound notifications; check the dashboard.