
remote-run-curl
Run bazel commands in a remote runner. Use when the user asks to run bazel build, bazel test or bazel run.
- Installs
- 763
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/buildbuddy-io/buildbuddy --skill remote-run-curl- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads remote-run-curl automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
The Run API runs commands in a remote runner. These runners can have more compute power, and workspaces are snapshotted between runs, speeding up subsequent runs.
Any bash command can be run in a remote runner, but bazel commands may benefit the most from proximity to our cache servers and workspace snapshotting.
Getting help
If you don't know how to accomplish a task, you should consult the docs at https://www.buildbuddy.io/docs/remote-bazel. Do not try to run bb remote --help or bb help.
Pre-run gate
Before initiating a remote run, you should check if the user asked to add any fields to the request.
If they did, follow the field persistence steps below.
Add any persistent API fields or Bazel flags to the request.
Initiating a remote run
The Run API can be made with a curl request.
For bazel commands, make sure to preserve the entire command, including startup flags and options, in the steps field.
To clone a GitHub repo and run steps within that workspace, set the fields repo, branch and/or commit_sha. This is optional if a GitHub workspace is not needed for the steps.
By default, the Run API will return once the remote runner has started. You can poll for completion using the GetInvocation API. If you want the Run API to wait until the commands are finished, add "wait_until": "COMPLETED" to the request.
Multi-line steps are supported.
Sample request:
curl --data '{
"repo": "git@github.com:<REPO_NAME>.git",
"branch": "<BRANCH_NAME>",
"steps": [{"run": "bazel build :target"}],
"wait_until": "COMPLETED"
}' \
--header "x-buildbuddy-api-key: ${BUILDBUDDY_API_KEY?}" \
--header "Content-Type: application/json" \
https://app.buildbuddy.io/api/v1/Run
Parse invocationId from the response and share https://app.buildbuddy.io/invocation/<INVOCATION_ID> with the user so they can view logs for the remote run.
Reading remote logs
Logs for the remote run can be fetched with the GetLog API. Logs are streamed live and can be fetched in parallel with the remote run.
The invocation ID should be parsed from the results of the Run API.
Sample request:
curl -d '{
"selector": {"invocation_id":"<INVOCATION_ID>"}
}' \
-H "x-buildbuddy-api-key: ${BUILDBUDDY_API_KEY}" \
-H "Content-Type: application/json" \
https://app.buildbuddy.io/api/v1/GetLog
If next_page_token is present in the GetLog response, keep calling GetLog and passing the token to the page_token field until all log chunks are fetched.
Fetching invocation metadata
Invocation metadata can be fetched with the GetInvocation API. Metadata includes the exit code of the run after it's finished and whether it completed successfully.
All steps must complete successfully for the invocation to be considered a success. If any steps fail, subsequent steps will not be run.
curl -d '{
"selector": {"invocation_id":"<INVOCATION_ID>"}
}' \
-H "x-buildbuddy-api-key: ${BUILDBUDDY_API_KEY}" \
-H "Content-Type: application/json" \
https://app.buildbuddy.io/api/v1/GetInvocation
Configuration
Environment variables can be set on the remote runner with the env field. It expects a map as input.
Other configuration can be set in the platform_properties field, which is also a map.
Valid values of OSFamily are linux and darwin.
Valid values of Arch are amd64 and arm64.
The container-image field expects a docker URL like docker://<URL>.
If a remote runner is corrupted and you want a clean one, you can set the property salt to a new value. Just make sure you preserve this flag if you want future runs to resume from this new runner.
Requesting more resources
We strongly recommend not setting these and using the defaults unless absolutely necessary. Only suggest increasing resources if the logs explicitly report OOM errors or disk exhaustion.
More resources can be requested for the remote runner with the properties EstimatedCPU, EstimatedFreeDiskBytes and EstimatedMemory. The disk and memory fields expect values in the syntax XGB.
Auth
Users can get an API key from the Settings page of the BuildBuddy UI. If running in non-interactive mode, the user should save the API key as a secret.
Field persistence
Whenever the user provides fields not already in the persistent-fields.md file, follow this workflow before initiating the remote run:
- Ask:
Do you want me to persist <FIELD> in this SKILL file so it is automatically applied to all future remote runs? - Wait for explicit confirmation before editing this file.
- If the user confirms, edit only the persistent-fields.md file.
- Ensure the field is not already present.
- Preserve alphabetical ordering.
Entry format:
{ "KEY": "VALUE" }: Example:{"wait_until": "COMPLETED"}
FAQ
What does the remote-run-curl skill do?
Run bazel commands in a remote runner. Use when the user asks to run bazel build, bazel test or bazel run.
How do I install remote-run-curl?
Run npx skills add https://github.com/buildbuddy-io/buildbuddy --skill remote-run-curl in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/remote-run-curl/ (personal) or .claude/skills/remote-run-curl/ (project).
Which AI agents can use remote-run-curl?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is remote-run-curl safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains remote-run-curl?
It is published by buildbuddy-io in buildbuddy-io/buildbuddy. It has 763 recorded installs.
More from buildbuddy-io/buildbuddy
view-build-logs
buildbuddy-io/buildbuddy
Open the skill to read its SKILL.md instructions.
Popular testing & qa skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
grilling
mattpocock/skills
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
migrate-to-shoehorn
mattpocock/skills
Migrate test files from as type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace as in tests, or needs partial test data.
run-train
lllllllama/rigorpilot-skills
Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized trainoutputs/. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.
test-driven-development
obra/superpowers
Use when implementing any feature or bugfix, before writing implementation code
finishing-a-development-branch
obra/superpowers
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work