Skip to main content
The Capabilities service allows clients to query server capabilities before submitting work.

Overview

The Capabilities service provides:
  • Supported digest functions
  • Maximum request sizes
  • Action cache capabilities
  • Execution capabilities
  • API version information
Key features:
  • Discover server configuration
  • Validate client compatibility
  • Query platform properties

Configuration

instance_name
string
required
The instance name for this capabilities endpoint
action_scheduler
string
Reference to scheduler (for execution capabilities)
{
  services: {
    capabilities: {
      instance_name: "main",
      action_scheduler: "MAIN_SCHEDULER"
    }
  }
}

gRPC Methods

GetCapabilities

Query server capabilities. Request:
instance_name
string
required
The instance name
Response:
cache_capabilities
CacheCapabilities
CAS and AC capabilities:
  • digest_functions: Supported hash functions (SHA256, SHA1, etc.)
  • action_cache_update_capabilities: AC update support
  • cache_priority_capabilities: Priority range
  • max_batch_total_size_bytes: Batch operation limits
  • symlink_absolute_path_strategy: Symlink handling
execution_capabilities
ExecutionCapabilities
Execution service capabilities:
  • digest_function: Hash function for execution
  • exec_enabled: True if remote execution is available
  • execution_priority_capabilities: Priority range
  • supported_node_properties: Platform properties recognized by workers
deprecated_api_version
SemVer
Deprecated field (use low_api_version/high_api_version)
low_api_version
SemVer
Minimum Remote Execution API version supported
high_api_version
SemVer
Maximum Remote Execution API version supported
Example with grpcurl:
grpcurl -plaintext \
  -d '{"instance_name": "main"}' \
  localhost:50051 build.bazel.remote.execution.v2.Capabilities/GetCapabilities
Example response:
{
  "cache_capabilities": {
    "digest_functions": ["SHA256"],
    "action_cache_update_capabilities": {
      "update_enabled": true
    },
    "max_batch_total_size_bytes": "4194304",
    "symlink_absolute_path_strategy": "ALLOWED"
  },
  "execution_capabilities": {
    "digest_function": "SHA256",
    "exec_enabled": true,
    "execution_priority_capabilities": {
      "priorities": [{"min_priority": 0, "max_priority": 10}]
    },
    "supported_node_properties": [
      "OSFamily",
      "cpu_count",
      "memory_kb"
    ]
  },
  "low_api_version": {"major": 2, "minor": 0},
  "high_api_version": {"major": 2, "minor": 3}
}

Digest Functions

Supported hash functions:
Default and most common. 32-byte (256-bit) hash.NativeLink default: SHA256

Platform Properties

The supported_node_properties field lists platform properties that workers can match. Common properties:
  • OSFamily: Operating system (Linux, Windows, Darwin)
  • cpu_count: Number of CPU cores
  • memory_kb: RAM in kilobytes
  • disk_read_iops: Disk read IOPS
  • disk_write_iops: Disk write IOPS
  • network_kbps: Network bandwidth
Query capabilities before submitting actions to ensure worker compatibility
Set the digest function globally:
{
  global: {
    default_digest_hash_function: "sha256" // or "sha1", "md5", "blake3"
  }
}
The capabilities service automatically reflects this configuration.

Client Usage

Typical client flow:
1

Query capabilities

Call GetCapabilities on startup
2

Validate compatibility

Check that server supports required digest function and API version
3

Configure client

Set max batch sizes and other limits based on server capabilities
4

Submit work

Use discovered platform properties for action specifications

Error Codes

CodeDescription
NOT_FOUNDInstance name not configured
INVALID_ARGUMENTInvalid instance name format
The Capabilities service follows the Remote Execution API v2 specification

Build docs developers (and LLMs) love