GithubActionRolloutProcessor delegates rollout execution to GitHub Actions workflows
that you control. It’s useful for implementing rollouts with your existing agent
codebase by wrapping it in a GitHub Actions workflow.
High Level Flow

- /init triggers one rollout: Eval Protocol dispatches a GitHub Actions workflow with
completion_params,metadata(incl.rollout_id), andmodel_base_url. - Polling to check rollout status: The processor finds the
rollout:<rollout_id>run and polls GitHub Actions until it completes. - Send chat completions and store as trace: The workflow executes your agent and sends completions/logs to Fireworks with the rollout’s correlation tags.
- Once rollout finished, pull full trace and evaluate: Eval Protocol fetches the Fireworks trace by
rollout_idand scores the result.
Everything inside the dotted box is handled by Eval Protocol — you only need to implement the GitHub Actions workflow, more on this below.
Setup
For the GitHub token, create a Personal Access Token (classic) with permissions forrepo and workflow.
GitHub Actions Contract
We expect the GitHub Actions workflow to accept the following inputs:JSON completion parameters (model, temperature, etc.)
JSON string containing rollout execution metadata
Base URL for the model API (e.g., “https://tracing.fireworks.ai”)
API key for the model API
You must add
run-name: rollout:${{ fromJSON(inputs.metadata).rollout_id }} to your workflow. The GitHub API doesn’t return the run ID when dispatching, so this allows us to find and monitor the correct workflow run.Metadata Correlation
When making model calls in your GitHub Actions workflow, include the following metadata in your traces and logs so thateval-protocol can correlate them with the
corresponding EvaluationRows during result collection. GithubActionRolloutProcessor
automatically generates this and sends it to the server, so you don’t need to worry
about wrangling metadata.
invocation_idexperiment_idrollout_idrun_idrow_id

