---
title: "Node capabilities"
description: "Configure controller permissions, capture ownership, and capture-loss recovery independently."
section: "Concepts"
source_url: "https://sqlstyle.com/docs/node-roles"
---
SQLStyle does not assign node roles. Each managed connection declares five
independent properties:

```json5
capabilities: {
  controller: {
    vote: true,
    storage: true,
    promotable: true,
  },
  runtime: {
    capture: "on",
    on_capture_loss: "none",
  },
}
```

These defaults produce regular SDK behavior.

## Controller capabilities

- `vote` allows counted health concerns. A concern is counted only after the
  local token-bound peer-health channel has previously reached the current
  holder.
- `storage` allows storage-floor probes and storage-derived analytics work when
  the local image is ready.
- `promotable` allows authority acquisition, offers, and handoff candidacy. The
  runtime still requires a usable image and sufficient frontier.

The three values form one immutable mask for an authenticated WebSocket.
Changing the mask requires reconnecting. A zero-capability connection can read
topology and use ASP transport but does not appear as a topology node.

## Runtime capabilities

`capture` controls capture-lock ownership:

- `on` uses ordinary contention.
- `priority` takes priority intent before contending.
- `off` never attempts ordinary capture ownership.

`on_capture_loss: "recover"` performs terminal cleanup after capture-owner loss
and exclusive presence. It requires `capture: "off"`. The default is `none`.

Controller permissions are independent of runtime capture. For example, a
capture-disabled connection can still vote, answer storage operations, or
route ASP calls if those controller capabilities are enabled.

## Common combinations

Terms such as regular, host-like, companion-like, witness-like, and
ASP-client-like are explanatory shorthand only. They do not appear in config,
the protocol, persistence, or runtime state.

The controller identifies the current writer solely from the authoritative
lease record. Local write admission additionally requires the capture lock, a
usable image, and the writer-admission gate.