Watch the setup video
Prerequisites
- You can create GitHub Actions workflows and repository secrets.
- You have the authentication required for your access method: a Poolside Platform or OpenRouter API key, or the API key configured for your self-managed model endpoint. See Get your API key.
Steps
-
Add your API key as a repository secret:
- In your GitHub repository, go to Settings.
- Select Secrets and variables, then select Actions.
- Click New repository secret.
- Name the secret
POOLSIDE_API_KEYand paste your Poolside API key as the value. - Click Add secret.
poolchecks thePOOLSIDE_API_KEYenvironment variable before it reads stored credentials, so workflows do not need a login step. For more options, see use secrets in GitHub Actions. -
Add a workflow file:
A workflow is a YAML file in your repository’s
.github/workflows/directory. Copy one of the examples under Workflow examples into a new file, such as.github/workflows/poolside.yml. Update the model and endpoint values as described in Set workflow variables, then commit the file to your default branch. -
Run the workflow:
How a workflow starts depends on its trigger. A workflow with
on: pull_requestruns the next time someone opens a pull request. A workflow withon: workflow_dispatchwaits for you to start it by hand from the Actions tab, using the Run workflow button. Open the Actions tab to watch the run and see its output. Each example under Workflow examples states where its result appears.
Set workflow variables
Thepool exec examples target Poolside-hosted inference with POOLSIDE_STANDALONE_BASE_URL. Each example sets POOLSIDE_STANDALONE_MODEL so its model selection does not depend on the CLI default. Before you copy a workflow, replace <poolside-model-id> with a model available to your API key. To use the default model instead, remove POOLSIDE_STANDALONE_MODEL.
To find model IDs for your access method, see List available models.
-
Self-managed Poolside inference: Replace the Poolside-hosted inference environment variables with:
Use the model’s hostname and the model ID returned by itsSelf-managed Poolside inference
/v1/modelsendpoint. For an inference gateway, use the base URL, API key, and model ID configured through the gateway. The documented Bifrost and LiteLLM configurations usehttps://<gateway-hostname>/v1. If the endpoint does not validate API keys, setPOOLSIDE_API_KEYto any non-empty value, such aslocal-test. -
OpenRouter or another OpenAI-compatible provider: Replace the Poolside-hosted inference environment variables with:
Use your provider’s OpenAI-compatible base URL, including any required path such asOpenAI-compatible provider
/api/v1.
The issue triage example calls the API directly with
curl instead of pool exec. For self-managed Poolside inference, use the model endpoint at https://<model-hostname>/v1/chat/completions.Workflow examples
Choose the example closest to the task you want to automate. Thepool exec workflows default to Poolside-hosted inference. To use self-managed Poolside inference or another OpenAI-compatible provider, set the environment variables shown in Set workflow variables. Copy a workflow as-is to get started, then change its trigger and prompt to fit your workflow.
Review pull requests
Reviews each pull request opened from a branch in your repository and posts the review as a comment when the job finishes. Theif condition skips pull requests opened from forks. GitHub does not expose repository secrets to those runs, so the Poolside step would fail authentication.
.github/workflows/poolside-review.yml
Scan the repository on a schedule
Scans the repository every night at 03:00 UTC and uploads the report under Artifacts on the run summary.if-no-files-found: error fails the job when the agent does not produce the report, instead of passing with an empty artifact.
.github/workflows/poolside-scan.yml
Generate release notes when you publish a release
Reads the commits since the previous tag and replaces the release body with generated notes..github/workflows/poolside-release-notes.yml
Classify new issues
Classifies new issues from trusted authors as a bug, feature, or question and writes the model’s response to the step log. This workflow sends the issue body directly to the model, so it does not need repository checkout or Poolside Agent CLI. Theif condition limits it to repository owners, organization members, and outside collaborators.
Building the payload with jq keeps issue text out of the shell command.
For self-managed Poolside inference, replace https://inference.poolside.ai/v1/chat/completions with https://<model-hostname>/v1/chat/completions. For another OpenAI-compatible provider, use that provider’s chat completions URL, store its key in POOLSIDE_API_KEY, and replace the model ID with a provider model ID.
.github/workflows/poolside-triage.yml
Customize a workflow
Use the examples as starting points. Change the trigger, prompt, output step, and model settings to fit the repository task you want to automate.Change the trigger
GitHub Actions supports a wide range of workflow events. The same patterns extend to other triggers:
Anyone can open an issue or comment on a public repository, so gate
issues and issue_comment workflows on the author before the agent runs. For example, check author_association for OWNER, MEMBER, or COLLABORATOR before running slash commands.
To review only some pull requests, add paths or branches filters to the pull_request trigger. To make a scheduled workflow available on demand, add workflow_dispatch: to the triggers.
Change the prompt
The prompt is the part of the workflow that is yours. Prompts that work well in CI name the input, the output, and where the output goes:CHANGELOG.md file, or uploading an artifact.
For longer prompts, commit a prompt file to the repository and pass it with pool exec --prompt-file prompt.txt.
For direct API calls, change the prompt and the data you pass in. To get a machine-readable answer, add a response_format object. See Constrain the response format.
Change the model and settings
To use a different model with Poolside-hosted inference or an OpenAI-compatible provider, changePOOLSIDE_STANDALONE_MODEL in the workflow.
Each example workflow uses two pool exec flags that suit automation:
--output jsonprints newline-delimited JSON that later steps can parse.--unsafe-auto-allowlets the agent run without approval prompts. Explicit deny rules still apply.
Secure agent workflows
--unsafe-auto-allow approves the agent’s tool actions without prompting. Before you use it:
- Run agent workflows only from trusted events, branches, and actors. Event payloads such as pull request diffs, issue bodies, and comments become agent input.
- Pass event values such as branch names, issue titles, and comment bodies through the
envblock instead of placing them directly in theruncommand. - Use permissions and sandboxes to limit what the agent can access and run.
- On
pull_requestruns from forked repositories, GitHub does not expose repository secrets, so Poolside steps fail authentication by design. - Do not change a
pull_requestworkflow topull_request_targetto work around that. GitHub withholds secrets from forked pull-request workflows by design, andpull_request_targetcan expose secrets to code you do not control. See secure use ofpull_request_target.