Skip to main content
Servers define network listeners and expose NativeLink services.

Server Definition

name
string
Server identifier for logging and telemetry. Defaults to index in servers array.
listener
object
required
Network listener configuration.
services
object
Services to expose on this server.

Listener Configuration

HTTP/HTTPS/HTTP2 listener.
{
  listener: {
    http: {
      socket_address: "0.0.0.0:50051",
      tls: {
        cert_file: "/etc/certs/server.crt",
        key_file: "/etc/certs/server.key"
      }
    }
  }
}
socket_address
string
required
Bind address. Examples:
  • 0.0.0.0:50051 - All interfaces on port 50051
  • 127.0.0.1:8080 - Localhost only
  • :50051 - All interfaces (shorthand)
tls
object
TLS configuration.
compression
object
HTTP compression configuration.
max_decoding_message_size
number
default:"4194304"
Maximum GRPC message decode size (bytes). Default: 4MB.
advanced_http
object
Advanced HTTP/2 tuning parameters.

Services

Services expose Remote Execution API and administrative endpoints.
Content Addressable Storage service.
{
  services: {
    cas: [
      {
        instance_name: "main",
        cas_store: "CAS_STORE"
      }
    ]
  }
}
instance_name
string
default:""
Remote Execution API instance name. Clients specify via --remote_instance_name.
cas_store
string
required
Reference to CAS store.

Multiple Instances

Services can serve multiple instances with different configurations:
{
  services: {
    cas: [
      { instance_name: "dev", cas_store: "DEV_STORE" },
      { instance_name: "prod", cas_store: "PROD_STORE" }
    ],
    ac: [
      { instance_name: "dev", ac_store: "DEV_AC" },
      { instance_name: "prod", ac_store: "PROD_AC" }
    ]
  }
}

Example Configurations

Public CAS/AC Server

{
  name: "public",
  listener: {
    http: {
      socket_address: "0.0.0.0:50051"
    }
  },
  services: {
    cas: [{ cas_store: "CAS_MAIN" }],
    ac: [{ ac_store: "AC_MAIN" }],
    bytestream: [{ cas_store: "CAS_MAIN" }],
    capabilities: [{}],
    health: {}
  }
}

Scheduler Server

{
  name: "scheduler",
  listener: {
    http: {
      socket_address: "0.0.0.0:50052"
    }
  },
  services: {
    execution: [{
      cas_store: "CAS_MAIN",
      scheduler: "MAIN_SCHEDULER"
    }],
    capabilities: [{
      remote_execution: {
        scheduler: "MAIN_SCHEDULER"
      }
    }]
  }
}

Worker API Server (Internal)

{
  name: "workers",
  listener: {
    http: {
      socket_address: "127.0.0.1:50061"  // Localhost only
    }
  },
  services: {
    worker_api: {
      scheduler: "MAIN_SCHEDULER"
    },
    admin: {},
    health: {}
  }
}

Build docs developers (and LLMs) love