Skip to main content

Branch-based servers

RBS provisions a dedicated build server for every active branch in your project. When you start working on a branch, the platform:
  1. Spins up an RBS server for that branch.
  2. Clones the repository and checks out the branch.
  3. Deploys all workers automatically — CI workers, schedulers, job workers, and build workers.
  4. Connects your editor to the server via the RBS extension.

Collaboration

Multiple developers can connect to the same branch server simultaneously. Everyone sees:
  • The same build state and outputs.
  • The same test results and logs.
  • Real-time updates when teammates run builds.

Server lifecycle

EventWhat happens
Developer starts working on a branchServer is provisioned, repo cloned, workers deployed.
Teammate joins the same branchConnects to the existing server.
All developers disconnectServer idles (configurable timeout).
Branch is merged or deletedServer is decommissioned.
Push to branch (no active editor)CI workers run automatically.

Built-in Git server

RBS includes an integrated Git server. You can host your repositories directly on the platform — no GitHub, GitLab, or Bitbucket required.
  • Push and pull with standard Git commands.
  • Branch management from the dashboard or editor.
  • Webhooks and triggers for CI/CD workflows.
  • Access control with team-based permissions.
If you prefer to use an external Git host, RBS can import and mirror repositories from GitHub, GitLab, and other providers.

Workspace

Every RBS project starts with a workspace — defined by a WORKSPACE.rbs file at the repository root. This file configures project-wide settings, toolchains, and external dependencies.
When the RBS server starts, it reads WORKSPACE.rbs and sets up the entire build environment — downloading toolchains, resolving dependencies, and preparing workers.

Packages

A package is any directory within a workspace that contains a BUILD.rbs file. Each package defines its own set of build targets.
Packages provide logical grouping for related targets. You can reference targets across packages using labels.

Targets

A target is a single buildable unit declared in a BUILD.rbs file — a binary, library, test, container image, or any custom rule. Every target has a unique name within its package.

Labels

Labels uniquely identify targets across a workspace. RBS supports two syntax styles:

Traditional syntax

LabelMeaning
//services/api:serverTarget server in services/api
//:helloTarget hello in root package
//...All targets in all packages
:serverTarget server in current package

Natural syntax

RBS also supports a more intuitive syntax:

Dependencies

Targets can depend on other targets. RBS automatically builds dependencies in the correct order using a dependency graph (DAG).

Local dependencies

Reference targets in the same package with :name:

Cross-package dependencies

Reference targets in other packages with //package:target:

External dependencies

Reference packages managed by RBS from your WORKSPACE.rbs:

Output directory

RBS places all build outputs in the .rbs/ directory on the server, organized by platform:
Build outputs are accessible from your editor and via the RBS dashboard.

Output path variables

In BUILD.rbs files, use the built-in output_path variable to reference output directories:
VariablePath
output_path.bin.rbs/bin/{platform}
output_path.out.rbs/out/{platform}
output_path.testlogs.rbs/testlogs/{platform}

Platform detection

RBS servers run on Linux by default. You can use the platform variable in your BUILD.rbs files:

Platform constraints

Restrict targets to specific platforms:

Hermetic builds

RBS ensures hermetic builds — every dependency, toolchain, and runtime is managed by the platform. This means:
  • No local dependencies: You don’t need Python, Node.js, or Java installed on your machine.
  • Reproducible: The same build always produces the same output, regardless of who runs it.
  • Consistent across branches: Every branch server starts from a clean, identical base.
  • Portable: Your project works identically in development and production.

Next steps

RBS DSL reference

Learn the full syntax for BUILD.rbs and WORKSPACE.rbs files.

Language SDKs

Set up your first language SDK.