Skip to content

docs: OpenClaw customer install runbook + generated README section - #5933

Merged
bradcypert merged 3 commits into
mainfrom
brad/dno-960-openclaw-install-docs
Sep 1, 2026
Merged

docs: OpenClaw customer install runbook + generated README section#5933
bradcypert merged 3 commits into
mainfrom
brad/dno-960-openclaw-install-docs

Conversation

@bradcypert

@bradcypert bradcypert commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Closes DNO-960. Split from #5929 so nothing here shares a rollback fate with the schema change.

Why

We ship an OpenClaw observability package but never told anyone how to install it. The generated ZIP README had sections for Claude Code, Cursor, Codex and OpenCode, and nothing for OpenClaw.

There was also no runbook for the two things that silently break an OpenClaw install — both of which produce a partly working state rather than an obvious failure, which is the worst kind.

What changed

  • Generated package README: an OpenClaw install section — the directory install, --force when replacing, the required allowConversationAccess block, the Gateway restart, and the coverage caveat
  • docs/runbooks/openclaw-install.md: laptop and server/CI install paths, verification, enforcement semantics, version-pin policy, and the operational gotchas from the DNO-950 spike
  • docs/plugins/overview.md: OpenClaw listed alongside the other observability packages and in the downloadObservabilityPlugin enum

The two traps the runbook exists for

  1. allowConversationAccess. Without it the conversation hooks silently never fire — no prompts, no assistant responses, no usage — while tool hooks keep working. A half-configured install looks partly fine.
  2. The harness split. When a model routes through the Claude CLI harness (agentRuntime: claude-cli, which openclaw models auth login writes by default when a claude-cli profile exists), OpenClaw delegates the model and tool loop out-of-process and its tool/LLM hooks never fire. Those sessions are still covered — by our Claude Code hooks — so this is complementary coverage rather than a hole, but a customer in that mode will otherwise think the integration is broken.

Notes

  • generate.go is a server implementation file, but the change is purely the customer-facing install text, so it belongs with the runbook rather than the feature PR.
  • No hooksGeneratorVersion bump needed: the README is not part of the rendered hook-plugin subtree that check-generator-versions diffs. Confirmed by rendering export-hook-plugin -published and checking the file list.
  • The runbook records that our fixtures were captured from OpenClaw 2026.6.34 while 2026.7.1-2 is what installs today, and documents the qualification procedure for that gap. The fixture-side half is docs: stamp the OpenClaw fixture corpus with its source version agenthooks#24.
  • Deliberately no nightly canary against OpenClaw latest: it would page on OpenClaw's release cadence and registry flakes without telling us what we actually support — the same reasoning that keeps the LiteLLM real-proxy suite on workflow_dispatch.

Related PRs

Independent — all three branch from main, no stacking:

🤖 Generated with Claude Code

https://claude.ai/code/session_01TiJy9DrFpsmnD2vEkDHKNv


Summary by cubic

Adds OpenClaw install docs for the observability plugin — the generated ZIP README now has an OpenClaw section, and a new runbook covers laptop and server/CI installs. Two configuration states silently break coverage without any error, and both are now documented.

  • The README's OpenClaw section is generated only when a hooks API key exists, so it never describes files that aren't in the ZIP.
  • The runbook details the two traps: missing allowConversationAccess drops prompt and usage capture while tool hooks keep working, and the Claude CLI harness routes sessions through Claude Code hooks, which capture them only if those hooks are also deployed on the machine.
  • Documents how coverage depends on model-auth mode, the enforcement timeout budgets, the version-pin qualification procedure, and that the hooks binary is fetched from the org's Gram server rather than GitHub.
  • Adds an OpenClaw package-format section in docs/plugins/package-format.md, and lists OpenClaw in docs/plugins/overview.md, the downloadObservabilityPlugin enum, and the observability slug table in docs/plugins/publishing.md.
  • Closes DNO-960.

Written for commit 024520e. Summary will update on new commits.

Review in cubic

The OpenClaw observability package shipped without install instructions:
the generated ZIP README covered Claude Code, Cursor, Codex and OpenCode
but not OpenClaw, and there was no runbook for the two things that
silently break an install.

- generated README: OpenClaw install section covering the directory
  install, --force, the required allowConversationAccess block, the
  Gateway restart, and the harness-split coverage caveat
- docs/runbooks/openclaw-install.md: laptop and server/CI install paths,
  verification, enforcement semantics, version-pin policy and the
  operational gotchas from the DNO-950 spike
- docs/plugins/overview.md: list OpenClaw alongside the other
  observability packages and the downloadObservabilityPlugin enum

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TiJy9DrFpsmnD2vEkDHKNv
@bradcypert
bradcypert requested a review from a team as a code owner September 1, 2026 14:11
@linear-code

linear-code Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

DNO-960

@changeset-bot

changeset-bot Bot commented Sep 1, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 024520e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
server Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 4 files

Reply with feedback, questions, or to request a fix.

Fix all with cubic | Re-trigger cubic

Comment thread docs/runbooks/openclaw-install.md Outdated
Comment thread server/internal/plugins/generate.go Outdated
Comment thread docs/runbooks/openclaw-install.md Outdated
Comment thread server/internal/plugins/generate.go Outdated
Review found several statements that were wrong rather than merely thin:

- The coverage table implied claude-cli-routed sessions are always picked
  up by Claude Code hooks. They are not, unless those hooks are also
  deployed on the machine; a runbook-only install leaves them unobserved.
- Step 2 pointed at a directory that does not exist until the downloaded
  archive is extracted.
- `llm_input` and `before_agent_finalize` were listed as hooks that start
  firing once allowConversationAccess is on. The shipped shim subscribes
  neither, so they are never reported.
- The 60s figure is the agenthooks serve timeout, not the handler
  deadline. Blocking gates fail closed at GATE_TIMEOUT_MS (10s), which is
  what an operator watching a stalled gate actually experiences. All
  three budgets are now spelled out.
- The server/CI path was not executable from a clean image: it never said
  how to obtain the package or that the bootstrap fetches speakeasy-hooks
  over the network on first use.

Also gates the generated README's OpenClaw section on a hooks key. With
no key nothing OpenClaw-shaped is generated, so the section described
files that were not in the repo, and covers both states with tests.

The version-pin note is now a numbered qualification procedure, the
manual fallback the issue allows in place of a canary.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TiJy9DrFpsmnD2vEkDHKNv

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 3 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Fix all with cubic | Re-trigger cubic

Comment thread docs/runbooks/openclaw-install.md Outdated
The runbook told operators to allowlist github.com for the hooks binary
download. That is the wrong host and would leave an egress-isolated
container broken in exactly the scenario the section addresses: the
generated bootstrap fetches from the org's own Gram server
(hooksServedTargets over cfg.ServerURL), which the hooks_bootstrap.go
comment says is deliberate, since customer sandboxes often cannot reach
GitHub while the Gram domain is already allowlisted for ingest. The
GitHub URL is only where the server fetches upstream artifacts.

The overview also claimed six observability platforms while publishing.md
still said two and package-format.md documented three, so a reader could
not tell what a publish actually produces. Adds the OpenClaw package
format (layout, manifest, the conversation-access opt-in and the shim's
deadlines) and replaces the stale count with the full slug table,
verified against the slug generators.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TiJy9DrFpsmnD2vEkDHKNv
@blacksmith-sh

This comment has been minimized.

@bradcypert
bradcypert added this pull request to the merge queue Sep 1, 2026
Merged via the queue into main with commit 89ec359 Sep 1, 2026
83 of 85 checks passed
@bradcypert
bradcypert deleted the brad/dno-960-openclaw-install-docs branch September 1, 2026 21:35
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 1, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants