Automate Discord + Linear
Community chat with an automation-friendly API. 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.
Support First Responder is a ready-made agent built around Discord; point its last step at Linear to finish this hand-off.
Automations teams run
These are not field mappings. An agent reads the Discord side, works out what it means, and only then decides what — if anything — should happen in Linear.
When a message posts in a channel in Discord…
…an agent can create issues with full context in Linear — after reading the context and deciding it should.
When a member joins in Discord…
…an agent can update status and assignees in Linear — after reading the context and deciding it should.
When a keyword appears in Discord…
…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 post channel messages in Discord — with the reasoning recorded in the run’s receipt.
When a status changes in Linear…
…an agent can DM members in Discord — with the reasoning recorded in the run’s receipt.
When a cycle ends in Linear…
…an agent can publish digests in Discord — with the reasoning recorded in the run’s receipt.
Copy this Discord → Linear workflow
Start with the discord-api node and a custom-api call to api.linear.app. Configure the Discord 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": "0dc73547-3208-4b58-af55-cd3de214a38c",
"name": "Discord → Linear",
"nodes": [
{
"id": "b86bb24a-2081-4110-a4af-f2c2208dc738",
"text": "Watch Discord",
"x": 512,
"y": 144,
"isEditing": false,
"type": "receive-discord-message",
"icon": "connect",
"category": "trigger",
"isSelected": false,
"parameters": {
"channelId": "CONFIGURE_CHANNELID"
},
"description": "Setup template for Receive Discord Message. Listen for incoming Discord messages in a specified channel and trigger the workflow when a new message is received. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "2b7c1cc2-d060-4a8b-a827-4b7d2553f5b2",
"text": "Review source and draft",
"x": 512,
"y": 336,
"isEditing": false,
"type": "agnt-agent",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"agentId": "CONFIGURE_AGENTID",
"message": "Read the Discord 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": "ddbd8fb6-02c5-4210-a3f1-87f468c39a3c",
"text": "Call Linear",
"x": 512,
"y": 528,
"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": "99bc2f8c-73df-435f-a867-b85b624a80ea",
"start": {
"id": "b86bb24a-2081-4110-a4af-f2c2208dc738",
"type": "output"
},
"end": {
"id": "2b7c1cc2-d060-4a8b-a827-4b7d2553f5b2",
"type": "input"
},
"startX": 800,
"startY": 168,
"endX": 512,
"endY": 360
},
{
"id": "24589d9d-c419-4676-acda-7777823bd8b8",
"start": {
"id": "2b7c1cc2-d060-4a8b-a827-4b7d2553f5b2",
"type": "output"
},
"end": {
"id": "ddbd8fb6-02c5-4210-a3f1-87f468c39a3c",
"type": "input"
},
"startX": 800,
"startY": 360,
"endX": 512,
"endY": 552
}
],
"zoomLevel": 1,
"canvasOffsetX": 0,
"canvasOffsetY": 0,
"isTinyNodeMode": false
}
Configure Receive Discord Message
Listen for incoming Discord messages in a specified channel and trigger the workflow when a new message is received.
- channelId — The ID of the Discord channel to monitor Current example:
CONFIGURE_CHANNELID.
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 Support First Responder
Support First Responder is a working agent built around Discord. Install it, point its last step at Linear, 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
- Get AGNT Community Core. Free, local, no sign-up needed to run a workflow.
- Add both connections to the vault — Discord takes an API key pasted into the vault, Linear takes an API key pasted into the vault.
- 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.
- Run it once with an approval gate in place. The receipt tells you what it read, what it concluded, and what it changed in Linear.
Discord and Linear — common questions
Can I connect Discord to Linear without writing code?
Yes. Discord connects with an API key pasted into the vault and Linear with an API key pasted into the vault, both from the local credential vault. You then describe the job in plain language — “when a message posts in a channel, create issues with full context” — and the agent handles the rest.
How is this different from a field-mapping Discord to Linear automation?
The difference shows up on the messy inputs. A rule chain needs every case enumerated in advance; an agent handles community questions answered from your docs the way a colleague would — reading the Discord context, judging it, then writing to Linear with the reasoning recorded.
Does my Discord and Linear data leave my machine?
AGNT Community Core is local-first, so there is no vendor middleman holding your Discord or Linear 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 Discord and Linear run leave behind?
A receipt: what was read in Discord, which tools ran with which arguments, what the agent concluded, and what it wrote to Linear. Anything consequential can sit behind an approval gate so a person signs off before it happens.