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

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

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:

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.