Automate GitHub + Linear
Where the code — and half the process — lives. Fast issue tracking that deserves fast automation. Put an agent between them and the hand-off stops being manual: it reads, decides, acts, and shows its work.
First-Pass Reviewer already works across GitHub and Linear — free, and it runs on your machine.
Automations teams run
Each of these runs with a reasoning step between the two tools, so what reaches Linear is a decision about the GitHub event rather than a transcription of it.
When a PR opens or merges in GitHub…
…an agent can create issues with full context in Linear — after reading the context and deciding it should.
When an issue is filed in GitHub…
…an agent can update status and assignees in Linear — after reading the context and deciding it should.
When a release is cut in GitHub…
…an agent can write cycle summaries in Linear — after reading the context and deciding it should.
When an issue is created in Linear…
…an agent can comment on PRs and issues in GitHub — with the reasoning recorded in the run’s receipt.
When a status changes in Linear…
…an agent can open issues with structured detail in GitHub — with the reasoning recorded in the run’s receipt.
When a cycle ends in Linear…
…an agent can draft release notes in GitHub — with the reasoning recorded in the run’s receipt.
GitHub to Linear, setup template
Start with the github-api node and a custom-api call to api.linear.app. Configure the GitHub source payload, the agent input, and the Linear operation. The sequential template does not implement conditional writes or approval by itself.
This is a schema-checked starting point, not an end-to-end tested automation. Replace every CONFIGURE_ value, choose the operations you intend, connect credentials and map source outputs into later inputs. An edge orders steps; it does not supply a condition, an approval gate or a field mapping. Add and test those controls explicitly before any write. Cloud APIs and model providers may receive data. Keep the workflow inactive until tested with fixtures.
{
"id": "3042259b-b18d-44ea-aeea-63b99fc50e44",
"name": "GitHub → Linear",
"nodes": [
{
"id": "ee9a5d62-2dc1-4738-a620-c1105133058c",
"text": "Run on a schedule",
"x": 512,
"y": 144,
"isEditing": false,
"type": "trigger-timer",
"icon": "connect",
"category": "trigger",
"isSelected": false,
"parameters": {
"fireOnStart": "No",
"scheduleType": "Interval",
"schedule": "Every 15 Minutes"
},
"description": "Setup template for Timer Trigger. This trigger node fires the workflow at specified intervals or at a specific time. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "7a18649f-2baa-41ae-a8ca-3e23575cf130",
"text": "Read GitHub",
"x": 512,
"y": 336,
"isEditing": false,
"type": "github-api",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"action": "GET_AUTHENTICATED_USER",
"owner": "CONFIGURE_OWNER",
"repo": "CONFIGURE_REPO"
},
"description": "Setup template for GitHub API. Interact with GitHub: repos, branches, files, issues, comments, pull requests, reviews, releases, Actions/CI, and search. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "09ca93cd-0fc6-4b01-aaa3-1846a0ab0082",
"text": "Review source and draft",
"x": 512,
"y": 528,
"isEditing": false,
"type": "agnt-agent",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"agentId": "CONFIGURE_AGENTID",
"message": "Read the GitHub item. Decide whether it warrants action in Linear, and explain why.\nSource input: CONFIGURE_SOURCE_INPUT. Produce a reviewable draft only; do not take external actions."
},
"description": "Setup template for Agent Chat. Chat with an AI agent from your agent library. Select an agent and send messages to interact with it within your workflow. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "9eb5f07b-18cb-485c-a645-4e61e89b0a08",
"text": "Call Linear",
"x": 512,
"y": 720,
"isEditing": false,
"type": "custom-api",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"url": "https://api.linear.app/graphql",
"method": "GET",
"authType": "None",
"query": "",
"headers": "{}"
},
"description": "Setup template for Custom API Request. This action node makes a custom API request to any endpoint with configurable method, headers, and authentication. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
}
],
"edges": [
{
"id": "8d19ff7b-0e03-401e-a9ed-41a71a93ba40",
"start": {
"id": "ee9a5d62-2dc1-4738-a620-c1105133058c",
"type": "output"
},
"end": {
"id": "7a18649f-2baa-41ae-a8ca-3e23575cf130",
"type": "input"
},
"startX": 800,
"startY": 168,
"endX": 512,
"endY": 360
},
{
"id": "fd04cdbc-e2d2-454b-aee1-245941d338aa",
"start": {
"id": "7a18649f-2baa-41ae-a8ca-3e23575cf130",
"type": "output"
},
"end": {
"id": "09ca93cd-0fc6-4b01-aaa3-1846a0ab0082",
"type": "input"
},
"startX": 800,
"startY": 360,
"endX": 512,
"endY": 552
},
{
"id": "a4e18f7f-6687-440f-ad64-6878e96017ca",
"start": {
"id": "09ca93cd-0fc6-4b01-aaa3-1846a0ab0082",
"type": "output"
},
"end": {
"id": "9eb5f07b-18cb-485c-a645-4e61e89b0a08",
"type": "input"
},
"startX": 800,
"startY": 552,
"endX": 512,
"endY": 744
}
],
"zoomLevel": 1,
"canvasOffsetX": 0,
"canvasOffsetY": 0,
"isTinyNodeMode": false
}
Configure GitHub API
Interact with GitHub: repos, branches, files, issues, comments, pull requests, reviews, releases, Actions/CI, and search.
- action — The action to perform on GitHub Current example:
GET_AUTHENTICATED_USER. - owner — The owner of the repository (not needed for account-level or search actions) Current example:
CONFIGURE_OWNER. - repo — The name of the repository (for CREATE_REPO: the name of the new repository) Current example:
CONFIGURE_REPO.
Configure Custom API Request
This action node makes a custom API request to any endpoint with configurable method, headers, and authentication.
- url — The URL of the API endpoint Current example:
https://api.linear.app/graphql. - method — The HTTP method for the request Current example:
GET. - authType — The type of authentication Current example:
None. - query — Query parameters for the request (e.g., 'key1=value1&key2=value2') Current example:
. - headers — Optional headers for the request. e.g., {"Content-Type": "application/json"} Current example:
{}.
Install First-Pass Reviewer
First-Pass Reviewer already uses both GitHub and Linear, so installing it gives you this exact hand-off wired up — connected, editable, and running on your own machine.
Runs on your own machine · See what it does
Wiring GitHub to Linear
- Download AGNT Community Core — free and local-first.
- Connect GitHub with one OAuth sign-in and Linear with an API key pasted into the vault; both land in the local vault.
- Start from a marketplace workflow, or drop github-api and a custom-api node onto the canvas with an agent between them.
- Put an approval gate on anything consequential, then run it — the receipt shows what was read in GitHub and what was written to Linear.
GitHub and Linear — common questions
Can I connect GitHub to Linear without writing code?
No code is required. Add both connections in the vault (GitHub uses one OAuth sign-in, Linear uses an API key pasted into the vault), then either install a marketplace workflow for this pair or drag the two nodes onto the canvas and put an agent between them.
How is this different from a field-mapping GitHub to Linear automation?
Mapping tools move data; this reasons about it. Rather than copying a field into Linear, the agent can weigh what arrived from GitHub, classify it against criteria you wrote in prose, draft something new, and act only when it is warranted.
Does my GitHub and Linear data leave my machine?
Your credentials stay in a vault on your own disk rather than in someone else’s cloud. The only calls made are the ones the workflow needs: GitHub, Linear, and your chosen model provider — which can be a local one.
What does a GitHub and Linear run leave behind?
You get an auditable trail rather than a success flag. It shows the GitHub context the agent worked from, the judgment it made about support escalations become tracked issues, and the exact change applied in Linear, with approvals attached where you required them.