Skip to content
vxvx
GitHubBlueskydev.toRSS

Remote execution

To spread a run over your own CI’s machines, use Distributed runs. If you already run a Bazel REAPI worker pool, reapi() from @vzn/vx-reapi can send tasks there instead; the graph and the scheduling stay here:

.vx/workspace.ts
import { defineWorkspace } from '@vzn/vx/config'
import { reapi } from '@vzn/vx-reapi'
export default defineWorkspace({
plugins: [
reapi({
endpoint: 'grpcs://cache.example.com:443',
execute: true, // or VX_REAPI_EXECUTE=1
platform: { OSFamily: 'Linux', 'container-image': 'docker://node:22' },
capacity: 64, // remote tasks at once, apart from your cores
}),
],
})

--dry says where each task runs (@vx/reapi or @local).

  • exec.remote: false, sandboxed and persistent tasks, and what depends on them, stay here, as do tasks with no cache block.
  • Workers have no node_modules: make the install a remote: 'only' task the others depend on. The image needs /bin/sh and your toolchain.
  • A worker gets only what inputs declares.
  • Uploads chunk at 65535 bytes (SAFE_CHUNK_BYTES), the size no Bun http2 stall has been seen at. A larger chunkBytes that stalls retries once at that size before the task fails.

See @vzn/vx-reapi for every option.

Turborepo, Nx and other product names are trademarks of their owners. vx is not affiliated with or endorsed by them.