Current state¶
WhippleScript is pre-1.0. It is good for local experiments with durable agent orchestration; it is not yet a stable production dependency.
The repository docs track the current checkout of main. Published release
artifacts are versioned as 0.1.x; use docs from the matching Git tag when
pinning exact CLI flags, JSON fields, or provider configuration behavior. The
stage-* label printed by whip --help is an internal implementation-stage
marker.
Stable enough to rely on¶
- The authoring loop:
check,compile,devwith the fixture provider, and the inspection commands (status,log,facts,effects,runs,evidence,diagnostics,trace --check). - The execution model: durable facts, events, effects, atomic rule commits, effect dependencies, leases, and replayable traces.
- Static liveness checks: workflows must reach
complete/fail(escape tag@service), rule reads must be producible (escape tag@external). - The human review loop:
askHumaneffects (with source-declaredchoices),whip inbox, answers matched bywhen human answered ...rules. - Sequential
flowblocks, which lower to ordinary rules visible inwhip check. - Work queues with the
builtintracker (queue,file/claim/release/finish,when <queue> has ready item) and thewhip itemscommand family. - Time effects:
timeoutclauses,timer, andcancel, fired on worker passes. - Inline
decidedecisions,caseover string-literal unions, the generalwhen fact <dotted.name>readiness form, dev-profile rawexeccommands (allow-listed viaWHIPPLESCRIPT_EXEC_ALLOW), and hosted script capabilityexec <name> with <record> -> Typebacked by a SHA-256-pinned manifest. - Concurrent effect execution: a worker pass runs its ready set on a bounded
thread pool (sized via
WHIPPLESCRIPT_WORKER_CONCURRENCY), so a fan-out of agent turns orcoercecalls runs in parallel andagent { capacity N }has runtime meaning. - Messaging construct surface: outbound
send via <channel>and inboundwhen message from <channel> as msg(binding the built-inMessage), driven under the fixture provider (whip messageinjects an inbound message); live Slack/email delivery is experimental. - Credential management:
whip auth set/status/loginstores LLM credentials for the nativecoercepath (owner-only config) and delegates harness OAuth. - Lifecycle controls:
pause,resume,cancel,retry, and workflow revision (whip revise) for non-terminal instances. - Acceptance fixtures (
whip accept) and tag-filtered assertion reports for validating workflows in CI.
"Stable enough" means the in-repo implementation and tests hold; it is not a semver promise. Syntax, CLI flags, and JSON field names may still change between releases.
Experimental¶
- The owned brokered harness (
provider owned, DR-0024): whip runs the agent tool-use loop itself and executes each requested file tool, settling to oneagent.turn.<status>fact. In place: the file tools over the file-store boundary and a live model client (OpenAI/Anthropic,WHIPPLESCRIPT_HARNESS_*, with a credential-free fixture fallback for CI), the enforced envelope (a configurable per-turn step budget and a durable workspace lease), and a default-denybashtool (allow-list of command prefixes, workspace cwd, timeout), and capability-gated tracker tools (list/add/update_todoover the durable work tracker; mutating calls usewith access to tracker { ... }), context compaction on long turns (projection only; the durable stream is complete), and resume-from-crash (the turn transcript is persisted per step and a recovered turn resumes from that projection). The delegating Codex/Claude adapters are now optional Cargo features, with the owned harness as the built-in path. - Native provider adapters (Codex, Claude, Pi) and their cancellation, artifact, and recovery behavior — live execution against real provider SDKs is credential-gated.
- Native
coerceagainst real LLMs (OpenAI Responses / Anthropic Messages): the request/response logic is built and tested, but live calls are opt-in (WHIPPLESCRIPT_COERCE_PROVIDER) and credential-gated; the fixture path is the default. - Live messaging providers (Slack/email) producing inbound
Messagefacts. - Package manifests and provider configuration formats.
- Prebuilt release binaries (source install is the reliable fallback).
Recommended use today¶
Prototype and validate orchestration locally: route tasks to logical agents, add review and approval gates, exercise retry and failure branches with the fixture provider, and inspect the durable record. Treat real-provider runs as supervised experiments.