Rensei docs
Nodes

GitHub Action Nodes

GitHub PR/branch/file action nodes.

GitHub action nodes let workflows create and manage pull requests, create branches, and read file contents from connected GitHub repositories. All nodes use your organization's connected GitHub OAuth or GitHub App installation - no per-node credential configuration is required.

For GitHub Issues (create/update/close/label/assign), see GitHub Issues Action Nodes.

Pull request nodes

github.pr.create

Creates a pull request in a GitHub repository.

Input ports

PortTypeRequiredDescription
ownerstringyesRepository owner (user or org name)
repostringyesRepository name
titlestringyesPR title
headstringyesHead branch name containing the changes
bodystringnoPR description body (Markdown)
basestringnoBase branch to merge into (default: repository default branch)
draftbooleannoCreate as a draft PR (default: false)

Output ports

PortTypeDescription
successPullRequestCreated PR metadata
fail{ error: string }GitHub API error

PullRequest shape

{
  number: number
  url: string       // API URL
  htmlUrl: string   // Browser URL
  title: string
}

github.pr.comment

Adds a comment to an existing pull request.

Input ports

PortTypeRequiredDescription
ownerstringyesRepository owner
repostringyesRepository name
pullNumbernumberyesPR number
bodystringyesComment body (Markdown)

Output ports - success ({ id: number; htmlUrl: string }) / fail ({ error: string })


github.pr.merge

Merges a pull request. Supports squash, merge, and rebase merge strategies.

Input ports

PortTypeRequiredDescription
ownerstringyesRepository owner
repostringyesRepository name
pullNumbernumberyesPR number
mergeMethodstringnomerge, squash, or rebase (default: merge)
commitTitlestringnoOverride merge commit title
commitMessagestringnoOverride merge commit message

Output ports - success ({ merged: boolean; sha: string; message: string }) / fail ({ error: string })

Branch node

github.branch.create

Creates a new branch in a GitHub repository from a given SHA or existing branch.

Input ports

PortTypeRequiredDescription
ownerstringyesRepository owner
repostringyesRepository name
branchstringyesNew branch name
shastringnoCommit SHA to branch from
fromBranchstringnoSource branch name (alternative to sha)

Output ports - success ({ ref: string; sha: string }) / fail ({ error: string })

File node

github.file.read

Reads the contents of a file from a GitHub repository at a given ref (branch, tag, or commit SHA). Returns the decoded file content as a string.

Input ports

PortTypeRequiredDescription
ownerstringyesRepository owner
repostringyesRepository name
pathstringyesFile path within the repository
refstringnoBranch, tag, or commit SHA (default: repository default branch)

Output ports

PortTypeDescription
success{ content: string; sha: string; size: number; encoding: string }Decoded file content
fail{ error: string }File not found or API error

Condition nodes for GitHub

The following condition nodes evaluate GitHub state and are documented in Condition Nodes:

Node IDWhat it checks
github.branch.existsWhether a named branch exists in the repo
github.pr.checks_passingWhether all required status checks are passing on a PR
github.pr.has_conflictsWhether a PR has merge conflicts

Usage example: agent-to-PR pipeline

A typical pattern in the SDLC templates connects an agent dispatch to PR creation:

steps:
  - id: create_branch
    type: action
    nodeId: github.branch.create
    config:
      owner: "{{ $trigger.data.repository.owner }}"
      repo: "{{ $trigger.data.repository.name }}"
      branch: "agent/{{ $trigger.data.issueIdentifier }}"
      fromBranch: main

  - id: dispatch_dev
    type: action
    nodeId: agent.invoke
    config:
      agentRef: "agent://my-org/dev-agent"
      repoPath: "{{ $trigger.data.repository.fullName }}"

  - id: create_pr
    type: action
    nodeId: github.pr.create
    config:
      owner: "{{ $trigger.data.repository.owner }}"
      repo: "{{ $trigger.data.repository.name }}"
      title: "Agent work: {{ $trigger.data.issueIdentifier }}"
      head: "agent/{{ $trigger.data.issueIdentifier }}"
      base: main
      draft: true

On this page