BuildGrid Browser

BuildGrid Browser, or bgd browser is a Vue-based web client to the HTTP/1.1 API exposed by bgd browser-backend. This client and API provide a way to explore Operations, Actions, and CAS content in the targeted BuildGrid instance, all within a web browser.



The bgd browser-backend command is used to start up the API service. This command is included in the docker image published on GitLab for BuildGrid, or can be installed in much the same way as the gRPC server command.

This command takes a --remote option to specify the location of the BuildGrid we’re providing a front-end to. If the various services live in different locations, there is also support for using individual --remote-$service options.

The bgd browser-backend serve subcommand actually starts the server, and takes options to set the port and optionally serve a static directory at /, amongst other things.

An example startup command,

bgd browser-backend --remote http://buildgrid:50051/ serve -p 8080 -v

This command starts the API listening on port 8080 pointing at a BuildGrid instance running on port 50051 of whatever the buildgrid hostname resolves to. The API is running in verbose mode (-v), so there will be a bit more logging than usual.


The web client lives in the BuildGrid/bgd-browser repository. This repository publishes a docker image which serves the compiled JS client from an nginx web server.

Alternatively, the code can be compiled manually using npm run build, with the result being served in some other way (perhaps using the backend commands --static-path option).

The web client uses a config file which it expects to find at /config.json on the same server. An example of this config file,

  "logStreamUrl": {
    "host": "ws://localhost",
    "path": "/ws/logstream",
    "port": 8080
  "backendUrl": {
    "host": "http://localhost",
    "path": "",
    "port": 8080
  "allowOperationCancelling": false

The host key in these dictionaries should point to the bgd browser-backend server, with port matching whatever port the server is listening on.

The path values in this example are the defaults, but if the backend server is running behind some custom proxy they can be used to point the client to the right place.