openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
122 lines (117 loc) • 8.45 kB
Markdown
---
summary: "Live provider debugging lanes plus the Docker and Parallels smokes that support them"
title: "Live and Docker/Parallels workflows"
read_when:
- You are debugging a real provider or model
- You need a live Docker or Parallels lane
---
## Live and Docker/Parallels workflows
When debugging real providers/models (requires real creds):
- Live suite (models + gateway tool/image checks): `pnpm test:live`
- Target one live file quietly: `pnpm test:live -- src/agents/models.profiles.live.test.ts`
- Progress-card refresh: `OPENCLAW_LIVE_TEST=1 pnpm test:live -- src/gateway/gateway-progress-refresh.live.test.ts`
- Requires `OPENAI_API_KEY` and uses `openai/gpt-5.6-luna` with isolated Gateway state.
- Completes an earlier turn, then refreshes during a second turn while a command remains held. The original parent must update the card and retain its final reply. A later idle refresh must update the card without adding chat messages or resuming pending work.
- Live subagent handoff stress:
`OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_SUBAGENT_STRESS=1 pnpm test:live -- src/agents/subagents/announce/subagent-yield-resume.live.test.ts`
- Requires `OPENAI_API_KEY` and defaults to `openai/gpt-5.6-luna`; select another
OpenAI model with `OPENCLAW_LIVE_SUBAGENT_E2E_MODEL`.
- Pins the OpenClaw agent harness and uses isolated Gateway state, synthetic
files, and externally held HTTP responses. It checks concurrent hidden-result
fanout, status-only interrogation of a waiting child tree, operator resume
with preserved task identity and idempotent replay, child timeout, a live HTTP
503 retrieval failure, and cancellation racing an in-flight result after its
owner claims the run. Parent reports are checked against held requests,
child execution, task delivery state, and hidden results. The 503 case checks
that a completed agent turn does not imply a successful retrieval.
- Each case incrementally preserves bounded runtime facts, plus final assistant replies, in
`.artifacts/qa-e2e/subagent-challenges-*/evidence.json`, including failed runs.
Set `OPENCLAW_LIVE_SUBAGENT_EVIDENCE_DIR` to change the output directory.
This live lane does not simulate cold process loss; restart and lost-acceptance
ownership are covered by `subagent-orphan-recovery.restart-integration.test.ts`.
- Defaults to two batches of three children. Set
`OPENCLAW_LIVE_SUBAGENT_STRESS_BATCHES` (1–5) and
`OPENCLAW_LIVE_SUBAGENT_STRESS_CHILDREN` (1–6) to change the bounded workload.
- Live Gateway concurrency: dispatch `OpenClaw Performance` on `main` with
`mode=gateway-concurrency` and `live_openai_candidate=true`. It runs 96 real
turns across 32 agents with 1,000 seeded sessions, concurrent session activity,
and load-phase CPU profiles. Dreaming is disabled while ordinary indexing and
recaps remain enabled. Results stay in Actions artifacts. See
[Gateway concurrency benchmark](/ci/scheduled-workflows#gateway-concurrency-benchmark).
- Runtime performance reports: dispatch `OpenClaw Performance` with
`live_openai_candidate=true` for a real `openai/gpt-5.6-luna` agent turn or
`deep_profile=true` for Kova CPU/heap/trace artifacts. Daily scheduled runs
publish mock-provider, deep-profile, and GPT-5.6 Luna lane reports to
`openclaw/clawgrit-reports` from a separate artifact-consuming publisher job;
missing or invalid publisher authentication fails scheduled and
`profile=release` runs. Manual non-release dispatches keep the GitHub artifacts
and treat report publication as advisory. The mock-provider report also
includes source-level gateway boot, memory, plugin-pressure, repeated
fake-model hello-loop, and CLI startup numbers.
- Docker live model sweep: `pnpm test:docker:live-models`
- Each selected model runs a text turn plus a small file-read-style check.
Models whose metadata advertises `image` input also run a tiny image turn.
Disable the extra checks with `OPENCLAW_LIVE_MODEL_FILE_PROBE=0` or
`OPENCLAW_LIVE_MODEL_IMAGE_PROBE=0` when isolating provider failures.
- CI coverage: daily `OpenClaw Scheduled Live And E2E Checks` and manual
`OpenClaw Release Checks` both call the reusable live/E2E workflow with
`include_live_suites: true`, which includes Docker live model matrix jobs
sharded by provider.
- For focused CI reruns, dispatch `OpenClaw Live And E2E Checks (Reusable)`
with `include_live_suites: true` and `live_models_only: true`.
- Add new high-signal provider secrets to `scripts/ci-hydrate-live-auth.sh`
plus `.github/workflows/openclaw-live-and-e2e-checks-reusable.yml` and its
scheduled/release callers.
- Native Codex bound-chat smoke: `pnpm test:docker:live-codex-bind`
- Runs a Docker live lane against the Codex app-server path, binds a
synthetic Slack DM with `/codex bind`, exercises `/codex fast` and
`/codex permissions`, then verifies a plain reply and an image attachment
route through the native plugin binding instead of ACP.
- Codex app-server harness smoke: `pnpm test:docker:live-codex-harness`
- Runs gateway agent turns through the plugin-owned Codex app-server
harness, verifies `/codex status` and `/codex models`, and by default
exercises image, cron MCP, sub-agent, and Guardian checks. Disable the
sub-agent check with `OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_PROBE=0` when
isolating other failures. For a focused sub-agent check, disable the
other checks:
`OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0 OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_PROBE=1 pnpm test:docker:live-codex-harness`.
This exits after the sub-agent check unless
`OPENCLAW_LIVE_CODEX_HARNESS_SUBAGENT_ONLY=0` is set.
- Codex on-demand install smoke: `pnpm test:docker:codex-on-demand`
- Installs the packaged OpenClaw tarball in Docker, runs OpenAI API-key
onboarding, and verifies the Codex plugin plus `@openai/codex` dependency
were downloaded into the managed npm project root on demand.
- Codex npm-plugin live package smoke: `pnpm test:docker:live-codex-npm-plugin`
- Installs the candidate OpenClaw package and exact Codex plugin into Docker,
then uses a real OpenAI key for CLI preflight and same-session turns.
- Its zero-retry medium-thinking follow-through turn must send progress, keep
working through randomized workspace reads and an exact artifact write,
then send completion. A progress-only terminal turn fails the lane.
- Live plugin tool dependency smoke: `pnpm test:docker:live-plugin-tool`
- Packs a fixture plugin with a real `slugify` dependency, installs it
through `npm-pack:`, verifies the dependency under the managed npm
project root, then asks a live OpenAI model to call the plugin tool and
return the hidden slug.
- OpenClaw rescue command smoke: `pnpm test:live:system-agent-rescue-channel`
- Opt-in belt-and-suspenders check for the message-channel rescue command
surface. Exercises `/openclaw status`, queues a persistent model
change, replies `/openclaw yes`, and verifies the audit/config write
path.
- OpenClaw first-run Docker smoke: `pnpm test:docker:system-agent-first-run`
- Starts from an empty OpenClaw state dir and first proves the packaged
`openclaw setup` CLI fails closed without inference. It then
tests and activates fake Claude through the packaged activation module.
Only afterward does a fuzzy packaged CLI request reach the planner and
resolve to typed setup, followed by one-shot model, agent, Discord config,
and SecretRef operations. It validates config and audit entries. This is
supporting gate/operation evidence, not an interactive onboarding or
OpenClaw agent/tool/approval proof. The same lane is exposed in QA Lab by
`pnpm openclaw qa suite --scenario system-agent-ring-zero-setup`.
- Moonshot/Kimi cost smoke: with `MOONSHOT_API_KEY` set, run
`openclaw models list --provider moonshot --json`, then run an isolated
`openclaw agent --local --session-id live-kimi-cost --message 'Reply exactly: KIMI_LIVE_OK' --thinking off --json`
against `moonshot/kimi-k2.6`. Verify the JSON reports Moonshot/K2.6 and the
assistant transcript stores normalized `usage.cost`.
<Tip>
When you only need one failing case, prefer narrowing live tests via the [allowlist env vars](/help/testing/docker).
</Tip>