Campaign orchestration layer built on OpenClaw planning and refua-mcp execution.
Project description
ClawCures
Disease-campaign orchestration that separates planning from execution:
- OpenClaw plans through
/v1/responses. refua-mcpexecutes typed scientific tools, with built-inweb_search/web_fetchfor evidence collection.
What You Get
- Single-run planner/executor flow.
- Autonomous planner/critic loop with policy checks.
- Offline plan validation and dry-run modes.
- Portfolio ranking for disease-program prioritization.
- Structured
promising_curesoutput with full ADMET property maps and assessment text.
Requirements
- Python
>=3.11,<3.14(Python3.14+is not supported byrefua-mcp). - A running OpenClaw Gateway if you want live planning.
- Optional:
refua-mcpruntime dependencies for tool execution.
Quick Start
- Install
cd /path/to/ClawCures
python3.13 -m venv .venv
source .venv/bin/activate
pip install -e .
- Configure OpenClaw access
- Set your gateway URL with
REFUA_CAMPAIGN_OPENCLAW_BASE_URL. - Ensure OpenClaw
responsesendpoint is enabled. - Provide auth with one of:
REFUA_CAMPAIGN_OPENCLAW_TOKENOPENCLAW_GATEWAY_TOKENOPENCLAW_GATEWAY_PASSWORD(for password mode)
- Run an offline smoke test (no OpenClaw call)
ClawCures run \
--objective "Offline validation" \
--plan-file examples/plan_template.json \
--dry-run
- Simplest live invocation (all-disease cure mission)
ClawCures run
ClawCures run now loops continuously by default (--max-cycles 0) until you stop it.
To run a single cycle and exit, use --max-cycles 1.
In loop mode, memory is preserved automatically by reusing a stable session key, enabling OpenClaw response storage, and carrying concise cycle summaries forward into subsequent planning objectives.
By default, ClawCures run sets the objective to:
"Find cures for all diseases by prioritizing the highest-burden conditions and researching the best drug design strategies for each."
If planner JSON generation fails repeatedly (common on small local models), ClawCures now auto-attempts repair passes and then falls back to a deterministic all-disease bootstrap validation plan.
For all-disease objectives, this fallback now includes deterministic web_search target-discovery queries before validation calls.
- Run a live planning dry-run
ClawCures run \
--dry-run
Environment Variables
| Variable | Default | Purpose |
|---|---|---|
REFUA_CAMPAIGN_OPENCLAW_BASE_URL |
http://127.0.0.1:18789 |
OpenClaw Gateway base URL |
REFUA_CAMPAIGN_OPENCLAW_MODEL |
openclaw:main |
OpenClaw model/agent ID |
REFUA_CAMPAIGN_TIMEOUT_SECONDS |
180 |
API timeout |
REFUA_CAMPAIGN_OPENCLAW_TOKEN |
unset | Bearer token override |
OPENCLAW_GATEWAY_TOKEN |
unset | Gateway token fallback |
OPENCLAW_GATEWAY_PASSWORD |
unset | Password-mode fallback token |
REFUA_CAMPAIGN_SESSION_KEY |
unset | Optional stable OpenClaw user key for cross-turn memory |
REFUA_CAMPAIGN_STORE_RESPONSES |
unset | Optional bool (true/false) for OpenClaw response storage |
REFUA_CAMPAIGN_AGENT_MODEL_MAP_JSON |
unset | Optional JSON object for phase/domain model routing (e.g. {"planner:oncology":"openclaw:oncology-planner","critic":"openclaw:critic"}) |
BRAVE_API_KEY |
unset | Optional key for higher-quality web_search results |
CLAWCURES_ALLOW_PRIVATE_WEB_FETCH |
unset | Set true to allow web_fetch against localhost/private IPs |
CLI Commands
| Command | What it does |
|---|---|
ClawCures print-default-prompt |
Print bundled mission prompt |
ClawCures list-tools |
Show available execution tools (refua-mcp + web tools) |
ClawCures run ... |
Continuous planner + execution loop (--max-cycles 0 default) |
ClawCures run-autonomous ... |
Planner/critic multi-round loop |
ClawCures validate-plan ... |
Policy-check a local JSON plan |
ClawCures rank-portfolio ... |
Rank disease programs from JSON input |
Common Usage
Run one plan + execute cycle:
ClawCures run \
--max-cycles 1 \
--output artifacts/kras_campaign_run.json
Run with OpenClaw native function calling (no intermediate JSON plan parsing):
ClawCures run \
--max-cycles 1 \
--native-tool-loop \
--session-key mission-all-disease-v1 \
--store-responses \
--stream \
--native-discovery-bootstrap-rounds 2 \
--auto-web-fetch \
--agent-model-map-json '{"planner:oncology":"openclaw:oncology-planner","critic":"openclaw:critic"}' \
--evidence-file docs/RESEARCH.md \
--output artifacts/native_tool_loop_run.json
The run JSON now includes:
promising_cures: ranked therapeutic candidates extracted from tool outputspromising_cures_summary: aggregate counts and ADMET coverageinteresting_targets: web-derived disease target hypotheses ranked by evidence densityinteresting_targets_summary: aggregate counts and top target list
Each cure includes:
metrics(binding/admet/affinity/potency signals)admet.key_metrics(admet_score,safety_score,adme_score,rdkit_scorewhen available)admet.properties(full ADMET scalar property map from discovered outputs)assessment(risk/opportunity summary)
Offline autonomous policy check:
ClawCures run-autonomous \
--objective "Offline policy check" \
--plan-file examples/plan_template.json \
--dry-run
Rank programs:
ClawCures rank-portfolio \
--input examples/portfolio_input.json
Release Packaging
Build and validate release artifacts in a version-specific directory:
./scripts/build_release_artifacts.sh
Upload only from that release directory (not from dist/*):
python -m twine upload dist/release-<version>/*
OpenClaw Compatibility
Verified against official OpenClaw docs and latest stable release v2026.2.15 (released 2026-02-16):
- API interface:
POST /v1/responses - Request fields used by this project:
model,input,instructions - Auth model:
Authorization: Bearer ...token/password - Endpoint behavior note: OpenClaw currently ignores
metadatafor prompt construction, so this project does not rely on metadata for critic payloads
Primary references:
- https://docs.openclaw.ai/openapi/openapi/responses_api/
- https://docs.openclaw.ai/openclaw/faq/
- https://github.com/openclaw/openclaw/releases/tag/v2026.2.15
Troubleshooting
connection refusedto/v1/responses- OpenClaw Gateway is not running or
REFUA_CAMPAIGN_OPENCLAW_BASE_URLis wrong.
- OpenClaw Gateway is not running or
401or auth errors- Token/password env var is missing or mismatched with gateway auth mode.
requires a different Python: ... not in '<3.14,>=3.11'- Use Python
3.11,3.12, or3.13.
- Use Python
Notes
- Tool plans are strict JSON for reproducibility.
- All tool calls go through a strict allowlist.
web_searchandweb_fetchare included in the allowlist for target/evidence discovery.web_fetchblocks localhost/private-network targets by default for safety.--native-tool-loopuses OpenClaw function calls directly, executing tools turn-by-turn.--session-key+--store-responseswire OpenClaw session memory across campaign turns.--streamrequests OpenClaw streaming responses;--stream-to-stderrmirrors streamed deltas to stderr.--agent-model-map-file/--agent-model-map-jsonenable disease/phase agent routing.--evidence-fileinjects local literature text into OpenClaw input for evidence-grounded planning.--native-discovery-bootstrap-roundsforces early native-loop rounds to web discovery tools only (web_search,web_fetch).--auto-web-fetchfollows discovered web_search URLs with bounded web_fetch calls for richer target evidence.--native-tool-fail-fastdisables recoverable tool-error feedback and fails immediately on tool exceptions.- Mission framing is aspirational; never claim cures without evidence.
- For local-model reliability, planner output is auto-repaired and canonicalized (
args/tool aliases) before execution. ClawCures rundefaults to an infinite loop. Use--max-cycles 1for a single cycle.- Loop mode carries forward compact cross-cycle memory (prior findings, failures, and state hints) to reduce repeated work.
- Architecture details:
docs/ARCHITECTURE.md - Research notes:
docs/RESEARCH.md
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
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 clawcures-0.7.2.tar.gz.
File metadata
- Download URL: clawcures-0.7.2.tar.gz
- Upload date:
- Size: 68.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.14.3 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98f63d1406fe632eb6c3e5ba6085d41840a5d1f52c1d4803aa7fe3ff4f3c5fe5
|
|
| MD5 |
53cb673744f15748edee69c8a376e015
|
|
| BLAKE2b-256 |
6d2377679e4bc44099acded68604ef0f74aa56bfde3290fa6f2aa82da8e3c1c5
|
File details
Details for the file clawcures-0.7.2-py3-none-any.whl.
File metadata
- Download URL: clawcures-0.7.2-py3-none-any.whl
- Upload date:
- Size: 62.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.14.3 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10a8cc6bd7ee2fe42bbf0c0758e0364addfe156e0661e0ea92ef46f7dada8a84
|
|
| MD5 |
ccecc073da2be0637ffc32e002574fc5
|
|
| BLAKE2b-256 |
9dda8d335bec249983aaa31f5c4bb1f97d27e41a955bcbae3cb0cedd6e65e0ff
|