Development × Email
GitHubGmailAGNT

Automate GitHub + Gmail

Where the code — and half the process — lives. The inbox most operations still start in. Put an agent between them and the hand-off stops being manual: it reads, decides, acts, and shows its work.

Install First-Pass Reviewer → Get AGNT free

First-Pass Reviewer is a ready-made agent built around GitHub; point its last step at Gmail to finish this hand-off.

Automations teams run

Each of these runs with a reasoning step between the two tools, so what reaches Gmail is a decision about the GitHub event rather than a transcription of it.

When a PR opens or merges in GitHub…

…an agent can send or draft a reply in Gmail — after reading the context and deciding it should.

When an issue is filed in GitHub…

…an agent can apply labels and archive in Gmail — after reading the context and deciding it should.

When a release is cut in GitHub…

…an agent can extract attachments and fields in Gmail — after reading the context and deciding it should.

When a new email arrives in Gmail…

…an agent can comment on PRs and issues in GitHub — with the reasoning recorded in the run’s receipt.

When a label is applied in Gmail…

…an agent can open issues with structured detail in GitHub — with the reasoning recorded in the run’s receipt.

When a thread goes unanswered in Gmail…

…an agent can draft release notes in GitHub — with the reasoning recorded in the run’s receipt.

Copy this GitHub → Gmail workflow

Start with the github-api node and the gmail-api node. Configure the GitHub source payload, the agent input, and the Gmail operation. The sequential template does not implement conditional writes or approval by itself.

GitHub to Gmail: run on a schedule → read github → review source and draft → configure destination in gmail TRIGGER trigger-timer Run on a schedule Configure activation ACTION github-api Read GitHub Configure inputs ACTION agnt-agent Review source and draft Configure inputs ACTION gmail-api Configure destination in Gmail Configure inputs
Setup template for GitHub and Gmail; verify data mapping and authorization using test accounts.
GitHub → GmailSetup template · configure before activation

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": "c184b0a6-306d-4c15-ae4b-d56db30efbde",
  "name": "GitHub → Gmail",
  "nodes": [
    {
      "id": "94102f49-37b5-4cda-a29c-2feb3dd5a47c",
      "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": "025f7b11-8cdc-4679-ab8e-6240d3a1ef0a",
      "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": "7d6aada6-0e47-4f9a-a70c-e36c0a63c170",
      "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 Gmail, 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": "eb241668-b2bf-4b23-aabd-0999a7ee98fe",
      "text": "Configure destination in Gmail",
      "x": 512,
      "y": 720,
      "isEditing": false,
      "type": "gmail-api",
      "icon": "connect",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "operation": "Search and Read Emails",
        "searchQuery": "CONFIGURE_SEARCHQUERY",
        "maxResults": 1
      },
      "description": "Setup template for Gmail API. A powerful tool to send, reply, read, organize, and manage attachments in Gmail. Configure credentials, inputs and output mapping before use.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    }
  ],
  "edges": [
    {
      "id": "8066dd9a-c8c4-4423-a113-882dd93dc73a",
      "start": {
        "id": "94102f49-37b5-4cda-a29c-2feb3dd5a47c",
        "type": "output"
      },
      "end": {
        "id": "025f7b11-8cdc-4679-ab8e-6240d3a1ef0a",
        "type": "input"
      },
      "startX": 800,
      "startY": 168,
      "endX": 512,
      "endY": 360
    },
    {
      "id": "19937d9f-050a-4f40-a537-5b5347eef3cc",
      "start": {
        "id": "025f7b11-8cdc-4679-ab8e-6240d3a1ef0a",
        "type": "output"
      },
      "end": {
        "id": "7d6aada6-0e47-4f9a-a70c-e36c0a63c170",
        "type": "input"
      },
      "startX": 800,
      "startY": 360,
      "endX": 512,
      "endY": 552
    },
    {
      "id": "61a4179d-8f16-4637-aadb-eac2f66f074a",
      "start": {
        "id": "7d6aada6-0e47-4f9a-a70c-e36c0a63c170",
        "type": "output"
      },
      "end": {
        "id": "eb241668-b2bf-4b23-aabd-0999a7ee98fe",
        "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 Gmail API

A powerful tool to send, reply, read, organize, and manage attachments in Gmail.

  • operation — The Gmail operation to perform. Current example: Search and Read Emails.
  • searchQuery — Optional. Gmail search query (e.g., 'from:user is:unread'). If blank, fetches latest emails. Current example: CONFIGURE_SEARCHQUERY.
  • maxResults — Maximum number of emails to return. Current example: 1.

Install First-Pass Reviewer

First-Pass Reviewer is a working agent built around GitHub. Install it, point its last step at Gmail, and you have this hand-off without building it from an empty canvas.

Runs on your own machine · See what it does

Build it in AGNT

  1. Get AGNT Community Core. Free, local, no sign-up needed to run a workflow.
  2. Add both connections to the vault — GitHub takes one OAuth sign-in, Gmail takes one OAuth sign-in.
  3. Configure the nodes above, or start from a marketplace workflow and edit it. The agent in the middle is the part worth spending time on.
  4. Run it once with an approval gate in place. The receipt tells you what it read, what it concluded, and what it changed in Gmail.

GitHub and Gmail — common questions

Can I connect GitHub to Gmail without writing code?

You can build it entirely from the canvas. Authorise GitHub with one OAuth sign-in, Gmail with one OAuth sign-in, then tell the agent what first-pass review on every diff should look like once Gmail is involved. Code is an option for the unusual cases, never a requirement for the common ones.

How is this different from a field-mapping GitHub to Gmail automation?

The difference shows up on the messy inputs. A rule chain needs every case enumerated in advance; an agent handles first-pass review on every diff the way a colleague would — reading the GitHub context, judging it, then writing to Gmail with the reasoning recorded.

Does my GitHub and Gmail data leave my machine?

AGNT Community Core is local-first, so there is no vendor middleman holding your GitHub or Gmail tokens. The runtime talks directly to both services. Choose a local model and the content of what it reads never leaves the machine at all.

What does a GitHub and Gmail 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 triage and classify incoming mail, and the exact change applied in Gmail, with approvals attached where you required them.

Give AI a job. Get the proof.