> This page is for NeMo Fabric, version Latest (v0.6.0) (default).
> For other versions, use one of these documentation indexes:
> - Latest (v0.6.0) (default): https://docs.nvidia.com/nemo/fabric/latest/llms.txt
> - dev: https://docs.nvidia.com/nemo/fabric/dev/llms.txt
> - v0.6.0: https://docs.nvidia.com/nemo/fabric/v0.6.0/llms.txt
> - v0.5.0: https://docs.nvidia.com/nemo/fabric/v0.5.0/llms.txt
> - v0.4.0: https://docs.nvidia.com/nemo/fabric/v0.4.0/llms.txt
> - v0.3.0: https://docs.nvidia.com/nemo/fabric/v0.3.0/llms.txt
> - v0.2.0: https://docs.nvidia.com/nemo/fabric/v0.2.0/llms.txt
> - v0.1.1: https://docs.nvidia.com/nemo/fabric/v0.1.1/llms.txt
> - v0.1.0: https://docs.nvidia.com/nemo/fabric/v0.1.0/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/fabric/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/fabric/_mcp/server.

# Health Checks

> Understand health scopes, levels, and the native evidence used by NVIDIA NeMo Fabric adapters.

Use `Fabric.check()` to check the health of a runtime server, an agent runtime, or an OpenClaw Gateway service. NVIDIA NeMo Fabric returns an immutable `CheckReport` with the selected target, outcome, individual observations, timestamps, and elapsed time. The [Python SDK guide](/nemo/fabric/sdk/python-sdk#runtime-health) shows runtime and service examples.

## Choose the Scope

The scope selects the component that must answer the check:

| Scope     | Target                                                                | Execution Modes                                                                                                                       | Evidence                                                                                            |
| --------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| `server`  | The runtime server in the supplied environment.                       | OpenShell SDK routing or `fabric-agent-ctl check` inside the sandbox. Local SDK server checks return `unsupported/unsupported_scope`. | The runtime server responds through its command transport and reports whether shutdown has started. |
| `runtime` | The exact `runtime_id` in the supplied environment.                   | Local SDK execution, or the OpenShell command bridge to the local SDK inside the sandbox.                                             | The selected adapter's native observations, described below.                                        |
| `service` | The exact `service_id` in the supplied process-local `ServiceHandle`. | Local SDK service checks for a prepared or attached OpenClaw Gateway.                                                                 | Gateway HTTP responses. A Gateway can be checked before any runtime starts.                         |

Server checks do not take a health level. Runtime and service checks default to `live`. The sandbox command bridge supports server and runtime targets; service checks require the local SDK service handle.

To select a runtime through the command bridge, provide both the agent name and runtime ID:

```sh
fabric-agent-ctl check --agent researcher --runtime-id R1 --ready --timeout-seconds 3
```

Refer to the [runtime server command guide](https://github.com/NVIDIA/NeMo-Fabric/blob/v0.6.0/sdk/python/nemo-fabric-runtime/src/nemo_fabric/runtime_server/README.md) for command syntax.

## Read the Levels and Outcomes

The levels describe progressively stronger observations of the selected target:

| Level    | Question                                                                           |
| -------- | ---------------------------------------------------------------------------------- |
| `live`   | Does the adapter have current evidence that the owned agent or session is alive?   |
| `active` | Does the native request interface meet the adapter's qualified availability check? |
| `ready`  | Does the native readiness response, or the adapter's qualified equivalent, pass?   |

Checks are cumulative: `ready` evaluates `live`, then `active`, then `ready`. Evaluation stops at the first result that does not pass. The report's `checks` list shows which observations ran. Different adapters use different native evidence; the same level does not promise identical behavior across harnesses.

The report uses one of these outcomes:

| Outcome       | Meaning                                                                                                                                       |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `passed`      | The requested observations passed for the selected target.                                                                                    |
| `failed`      | An observation found a stopped agent, closed session, failed native health response, or another concrete failure.                             |
| `unknown`     | The check could not establish the result, for example because of a timeout, unavailable target, invalid native response, or ownership change. |
| `unsupported` | The installed adapter or execution mode does not provide the requested check.                                                                 |

Runtime `activity` is separate from health. A runtime can report `busy` and pass every supported level while an invocation waits for a model response. Activity describes NeMo Fabric invocations; activity does not establish that an agent will accept a second concurrent prompt.

## Native Evidence by Adapter

The table covers all runtime adapters and the OpenClaw Gateway service. Each row lists native evidence and unsupported levels, with links to qualification tests or capability descriptors. Support depends on the installed adapter version and its descriptor. Check the installed adapter's advertised health levels before selecting a level.

| Adapter                                                                                                                   | `live` Evidence                                                                                                                                        | `active` Evidence                                                                                                                                                           | `ready` Evidence                                                                                                                                | Qualification Tests / Capability Evidence                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Pi](/nemo/fabric/integrations/harness-integrations/pi)                                                                   | Completed initialization, unchanged native session identity, and a fresh `extensionRunner.createContext().isIdle()` response; idle and busy both pass. | Completed extension binding and an available native request interface after liveness passes.                                                                                | The selected model remains configured, required tools remain available, and required MCP transports have no observed error or closure.          | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/66341998b2e954a008cc7f726be64020adc3d1f4/tests/e2e/test_checks.py)                             |
| [OpenClaw Runtime](/nemo/fabric/integrations/harness-integrations/open-claw)                                              | Valid `GET /healthz` response; an owned Gateway process must also remain running.                                                                      | `GET /startupz` confirms startup, authenticated `GET /v1/models` includes the selected agent, and `GET /v1/chat/completions` returns the expected `405` with `Allow: POST`. | `GET /readyz` reports `ready: true`, including configured channel health.                                                                       | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/66341998b2e954a008cc7f726be64020adc3d1f4/tests/e2e/test_openclaw_checks.py)                    |
| [OpenClaw Gateway Service](/nemo/fabric/integrations/harness-integrations/open-claw)                                      | Valid `GET /healthz` response.                                                                                                                         | Authenticated `GET /v1/models` returns a valid inventory.                                                                                                                   | `GET /readyz` reports native Gateway readiness, including configured channel health.                                                            | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/66341998b2e954a008cc7f726be64020adc3d1f4/tests/e2e/test_openclaw_checks.py)                    |
| [Codex](/nemo/fabric/integrations/harness-integrations/codex)                                                             | The owned app-server process has not exited.                                                                                                           | A fresh native thread read confirms that the selected thread is loaded.                                                                                                     | The fresh thread response reports `idle` or `active`; `systemError` fails readiness.                                                            | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/86c52264d6e2ecfe7f72f1eb0161f1d1e425ddbb/tests/e2e/test_codex_checks.py)                       |
| [Claude Code](/nemo/fabric/integrations/harness-integrations/claude-code)                                                 | The owned Claude CLI process has not exited.                                                                                                           | A fresh, valid native `get_mcp_status()` response.                                                                                                                          | The same native status operation establishes initialized CLI responsiveness. Reported MCP connection failures do not themselves fail readiness. | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/563ca53755f1a2f57329a79985095acfcfcd5cde/tests/e2e/test_claude_checks.py)                      |
| [LangChain Deep Agents](/nemo/fabric/integrations/harness-integrations/lang-chain-deep-agents)                            | A fresh read from the owned checkpoint connection with `SELECT 1`.                                                                                     | The compiled graph exposes its message input schema and invocation interface.                                                                                               | Native `aget_state()` returns valid state for the exact owned LangGraph thread.                                                                 | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/5c065c1a7775e4490269f57b406635d30e8a0fd8/tests/e2e/test_deepagents_checks.py)                  |
| [Hermes](/nemo/fabric/integrations/harness-integrations/hermes-agent)                                                     | The owned native agent is not closed, session database ownership is unchanged, and a fresh diagnostic response is valid.                               | The initialized `run_conversation()` interface remains available after the earlier checks.                                                                                  | A fresh, valid `get_activity_summary()` response serves as the native readiness equivalent.                                                     | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/a51d5b0bca28261e61f56866b3fe8d93fddb4f7d/tests/e2e/test_hermes_checks.py)                      |
| [OpenHands](/nemo/fabric/integrations/harness-integrations/open-hands)                                                    | The owned `LocalConversation` native closure flags show that the conversation remains open.                                                            | The native lazy-initialization flag confirms that the request interface has initialized. Before initialization, returns `unknown/capabilities_unverified`.                  | Unsupported.                                                                                                                                    | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/6df3e0cef0ea972f125c0217d44ce7246be3bc68/tests/e2e/test_openhands_checks.py)                   |
| [OpenCode](/nemo/fabric/integrations/harness-integrations/open-code)                                                      | A fresh `sessions.get({ sessionID })` response identifies the exact, unarchived native session.                                                        | The same native session-read operation.                                                                                                                                     | The same native session-read operation establishes narrow session readiness.                                                                    | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/ba027bb56aedae3adf6de57ca0d33846a0788932/tests/e2e/test_opencode_checks.py)                    |
| [Qwen Code](/nemo/fabric/integrations/harness-integrations/qwen-code)                                                     | A fresh native `Query.supportedCommands()` response from the owned CLI query.                                                                          | The same native control operation.                                                                                                                                          | The same native control operation establishes initialized CLI responsiveness.                                                                   | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/9e483024adad293eb1bbdf105c93401c15b5c087/tests/e2e/test_qwen_checks.py)                        |
| [Factory Droid](/nemo/fabric/integrations/harness-integrations/factory-droid)                                             | A fresh native `DroidSession.listTools()` response from the selected subprocess.                                                                       | Unsupported.                                                                                                                                                                | Unsupported.                                                                                                                                    | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/15bd746bd88cb4b4b0fa6884b86449e88f0c00b2/tests/e2e/test_droid_health.py)                       |
| [Kilo Code](/nemo/fabric/integrations/harness-integrations/kilo-code)                                                     | The owned Kilo server process has not exited.                                                                                                          | Native `session.get()` identifies the selected session.                                                                                                                     | Native `global.health()` reports `healthy: true`.                                                                                               | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/c7c6f7560c7f5cdb02a9b0a9b6be6c355823f37b/adapters/typescript/kilo/test/native-health.test.mjs) |
| [Kiro](/nemo/fabric/integrations/harness-integrations/kiro)                                                               | The owned ACP child process has a process identifier and has not exited or terminated by a signal.                                                     | Unsupported.                                                                                                                                                                | Unsupported.                                                                                                                                    | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/01a729397a91d3fd46c3694d7dbca3e0a5a09ac3/tests/e2e/test_kiro_native_health.py)                 |
| [AWS Strands](/nemo/fabric/integrations/harness-integrations/aws-strands)                                                 | The owned ACP child process has not exited or terminated by a signal.                                                                                  | Unsupported.                                                                                                                                                                | Unsupported.                                                                                                                                    | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/90a4d259255d89d1069a3a62a5e3e9d55e6647ff/tests/e2e/test_strands_checks.py)                     |
| [Cline](/nemo/fabric/integrations/harness-integrations/cline)                                                             | The local host retains the same resident session and agent identity, and the native agent has not shut down.                                           | Native `canStartRun()` and running state establish availability; a running invocation remains healthy.                                                                      | A fresh `ClineCore.get()` response identifies the owned resident session with an `idle`, `running`, or `pending` status.                        | [Tests](https://github.com/NVIDIA/NeMo-Fabric/blob/8ab38bd6e7721440cbbc75c0e327674372cc38b0/adapters/typescript/cline/test/native-health.mjs)     |
| [mini-SWE-agent](/nemo/fabric/integrations/harness-integrations/mini-swe-agent)                                           | Unsupported.                                                                                                                                           | Unsupported.                                                                                                                                                                | Unsupported.                                                                                                                                    | [Descriptor](https://github.com/NVIDIA/NeMo-Fabric/blob/v0.6.0/adapters/python/mini-swe-agent/mini-swe-agent.fabric-adapter.json)                 |
| [NOOA InteractiveAgent](https://github.com/NVIDIA/NeMo-Fabric/blob/v0.6.0/adapters/python/nooa/docs/interactive-agent.md) | Unsupported.                                                                                                                                           | Unsupported.                                                                                                                                                                | Unsupported.                                                                                                                                    | [Descriptor](https://github.com/NVIDIA/NeMo-Fabric/blob/v0.6.0/adapters/python/nooa/nooa.fabric-adapter.json)                                     |
| [NOOA BenchAgent](https://github.com/NVIDIA/NeMo-Fabric/blob/v0.6.0/adapters/python/nooa/docs/bench-agent.md)             | Unsupported.                                                                                                                                           | Unsupported.                                                                                                                                                                | Unsupported.                                                                                                                                    | [Descriptor](https://github.com/NVIDIA/NeMo-Fabric/blob/v0.6.0/adapters/python/nooa/nooa-bench.fabric-adapter.json)                               |
| [Remote Agent](/nemo/fabric/integrations/harness-integrations/remote-agent)                                               | Unsupported.                                                                                                                                           | Unsupported.                                                                                                                                                                | Unsupported.                                                                                                                                    | [Descriptor](https://github.com/NVIDIA/NeMo-Fabric/blob/v0.6.0/adapters/python/remote-agent/remote-agent.fabric-adapter.json)                     |

mini-SWE-agent, NOOA InteractiveAgent, NOOA BenchAgent, and Remote Agent advertise no runtime health levels. A health check for a running runtime using one of these adapters returns `unsupported/unsupported_adapter`. This outcome describes check support rather than an agent failure. Server checks remain available in OpenShell environments.

Pi readiness checks configured model, tool, and MCP state. Those observations do not perform a model request or execute a tool. OpenClaw readiness follows the Gateway's channel policies and can use the Gateway's cached observations. The linked OpenClaw endpoint tests use controlled Gateway HTTP responses.

Passing a health check does not establish successful inference, valid model credentials, provider availability, or successful tool execution unless the particular probe verifies that property. For example, Claude's readiness response does not require connected MCP servers, and Qwen's command response does not test model access. The linked qualification tests hold a local model response to verify that health checks can complete during invocation; those tests provide separate invocation evidence rather than changing what the health result means.

## Deadlines and Concurrent Invocations

One positive, finite timeout covers routing, worker queues, transport, all evaluated levels, and response decoding. The default is three seconds. A deadline is not restarted for each level. An expired check returns `unknown/probe_timeout`; the health timeout leaves the invocation running.

Some native SDK requests cannot be cancelled safely. A caller timeout can therefore leave a native health request pending. Adapters with this behavior bound their pending native work. A later check either waits within its own remaining deadline before obtaining a fresh response, or returns `unknown/probe_timeout` while the earlier request remains pending. A delayed response is not reused as fresh evidence for a later check.

Checks observe the selected native runtime through a health connection that is independent of the invocation request. A successful health response while an invocation is pending does not prove that the invocation will eventually succeed. Stop, release, and session replacement invalidate observations collected for an earlier owner.

## Maintain the Evidence Table

When an adapter changes its advertised levels or native probe, update this table, the adapter guide, and its qualification tests together. Keep native response details in the adapter documentation and preserve the shared report schema across harnesses.