Set up a runner
A runner is the open-source vps-agent CLI you install on your own machine or VPS. It registers with SprintFlint, polls for Autoplay jobs, runs a coding harness (Claude Code by default) on the cloned repo, and opens a pull request. The runner never merges; you review and merge yourself.
Prerequisites
Install these on the host before registering a runner:
- Node.js 18+ - the runner is a Node CLI installed via npm
- git - to clone your repository and push branches
- GitHub CLI (
gh) - to open the pull request - Claude Code (
claude) - required for the default harness; skip if you only run thenoopharness
Where to run it - Anywhere with outbound HTTPS to SprintFlint: a spare laptop, a dev box, or a cloud VPS. The runner only makes outbound connections, so no inbound ports are required.
Install
Install the CLI globally with npm:
npm install -g vps-agent
Verify it is on your PATH:
vps-agent --version
Register
Registration links the runner to your SprintFlint organisation. There are two modes.
Token mode (recommended)
Generate a registration token from the runner setup page in SprintFlint, then register with it:
vps-agent register \
--token <token> \
--api-url https://sprintflint.com
Open Runners in SprintFlint, create a runner, and copy its registration token. The token both identifies the runner and authenticates it; keep it secret.
Org-id mode
If you prefer to name the runner at registration time, register against your organisation id:
vps-agent register \
--org-id <id> \
--name <name>
Start the runner
Start polling for jobs in the foreground:
vps-agent start
To keep it running in the background (for a VPS or long-lived host), use daemon mode:
vps-agent start --daemon
Once started, the runner sends heartbeats and shows as online in SprintFlint. It now picks up Autoplay jobs for your organisation.
Status, logs, and stopping
| Command | What it does |
|---|---|
vps-agent status | Show whether the runner is running and connected |
vps-agent logs | Print recent runner logs |
vps-agent logs -f | Follow logs live (useful while a job runs) |
vps-agent stop | Stop the runner |
vps-agent doctor | Check prerequisites, config, and connectivity |
Harness selection
The harness is the coding tool the runner invokes to implement the issue. Set the harness config key:
claude- the default; drives Anthropic's Claude Code CLI against the cloned repo. Requires theclaudeCLI installed and authenticated.noop- a dry run that clones the repo and opens an empty PR without changing code. Use it to verify connectivity, git auth, and the PR flow before turning on a real harness.
Permission modes
The permission_mode config key controls how much the harness can do without prompting:
acceptEdits- auto-accept file edits; a sensible default for unattended AutoplaybypassPermissions- run without permission prompts at all; use only on a host you fully trust and isolateplan- have the harness plan changes without writing them; useful for previewing what Autoplay would do
Git authentication
The runner uses the host's own git and gh CLI credentials to clone the repo, push the branch, and open the PR. Authenticate once on the host before starting the agent:
gh auth login
vps-agent doctor verifies this, and the agent refuses to start if gh is not authenticated. SprintFlint never handles your GitHub credentials.
Least privilege - the runner pushes with the host's GitHub account, so give that account only the repo access it needs. The runner runs your harness on your hardware; treat it like any CI worker.
Troubleshooting
Start with doctor
vps-agent doctor checks the common failure points and reports what is wrong:
vps-agent doctor
- Confirms Node 18+,
git,gh, andclaudeare installed and on PATH - Confirms the runner is registered and can reach the SprintFlint API
- Confirms
gitandghare authenticated on the host
Runner shows offline
- Run
vps-agent statuson the host to confirm it is running - Make sure outbound HTTPS to
sprintflint.comis not blocked - Re-check the registration token; regenerate it from Runners if needed
Jobs queue but never run
- Confirm at least one runner is online and started (
vps-agent start) - Follow logs with
vps-agent logs -fwhile you start Autoplay - Verify the project has GitHub integration and a configured repository
PR is not opened
- Check that
ghis installed and authenticated (gh auth status) - Confirm the runner can push to the repository
- Try the
noopharness to isolate whether the problem is the harness or the git/PR flow
Next Steps
- Autoplay - How jobs are queued and run end to end
- GitHub Integration - Connect a repo and link PRs to issues
- API Reference - Issue comments and integration