productize.blog
always-on agent

What always-on agents are, who has one, how to link yours

Agents that work after you close the app: what Grok Bot, Meta Muse, ChatGPT dots and Claude Duet have, and how to link them to yours so you stop copying work.

Yim· written with Dobby (AI Oracle)/Oct 29, 2026

You type a question into ChatGPT, get an answer, and close the window, and everything stops there. That is the kind of chat most people know. Lately several vendors have started shipping something else. When a set time comes, it starts work by itself, and the work keeps going after you close the app. This kind of thing is called an always-on agent.

Once you have several, a new problem shows up. One summarizes the news for you every morning, another lives in ChatGPT, but none of them knows the others exist. When one finishes a job, you copy it and paste it into the next one yourself. In the end, you are the courier carrying work between your agents.

This article has 2 parts. The first is for people who have never had an AI agent: what an always-on agent is, and which vendors offer one today. The second is for people who already run their own agents: how to connect each vendor's agent to yours, and how to let them send work to each other, so you no longer copy work between them yourself, though you may still nudge one to check for its answer.

We (the Productize team behind this blog) use Grok Bot, Muse and ChatGPT dots every day, and we have a team of agents we built ourselves in Discord. To let all of these send each other work, you need a small server of your own sitting in the middle. That part needs a developer, or an AI coding agent (an AI that writes code for you) paired with someone who can review security. If you have no agent yet, skip step 1 in the hands-on steps at the end of this article and do step 2, which needs a paid Grok Bot plan. You will end up with 1 always-on agent that works on its own schedule. Stop there unless you have a developer for step 3.

Part 1What an always-on agent is, and who offers one

An agent is an AI that does not just answer, but also does work for you, such as reading email, opening websites or sending messages. An always-on agent is an agent that does not wait for you to type. When a set time or event comes, it starts work on its own, and it keeps going even after you close the app, because it runs on the vendor's machine in the cloud, not on your phone or computer.

Take Claude Duet as an example. Every morning it goes through your email and calendar and sends you a summary. During the day it checks your connected accounts every few hours, and messages you only when something needs your attention. A normal chat does not do this. If you do not ask, nothing happens.

The ones we run into most right now come from 4 vendors. All of them are still in a trial phase or rolling out gradually, and some are open only in certain countries or on certain plans, so check your own account first.

Grok Bot (xAI)

Grok Bot has its own machine in the cloud. A job saved to run on its own is called a routine, and each routine has its own webhook too. A webhook is a door that other programs send a message into to tell the routine to start.

You talk to Grok Bot through the Grok Bot app on your computer or on iOS. You need a paid plan first. See how to start at x.ai/news/introducing-grok-bot.

Meta Muse

You can talk to Muse in its app or on WhatsApp. Once you set a goal, Muse keeps working on it by itself on a cloud machine used by you alone. It is rolling out in the US right now.

ChatGPT dots (OpenAI)

OpenAI calls each agent a dot. You can talk to it in ChatGPT, Slack and Teams. It works on a machine and browser in the cloud. Its tools come from the plugins turned on in your account. A plugin is a ready-made add-on such as Gmail or GitHub.

Claude Duet (Anthropic)

Duet is an app separate from the regular Claude app. You talk to it by typing or speaking in one ongoing chat. It works on its own machine in the cloud and can use the memory and the apps you have connected in your Claude account. Before it sends a message, makes a payment, signs a document or deletes anything, Duet has to ask you first. Right now it is a research preview with a waitlist, open only on the Pro and Max plans in the US.

Part 2Connecting each vendor's agent to yours, and letting them talk

Our agent team is a small one. Each agent has its own chat room in Discord. Whatever work gets posted in a room, the agent for that room picks it up. Your agents may live in Slack or run on your own machine. The principle is the same: you need a way to send work in and a way to collect the answer back.

In this part, we call the agent that sends work out the asker, and the one that takes the work and answers back the target. MCP (Model Context Protocol) is a shared standard that lets AI connect to outside tools in the same way. The side that offers the tools is called an MCP server. Each vendor names the connection differently, such as connector or plugin. Any agent that can connect to an MCP server can be an asker. To be a target, it needs a door that other programs can send work into.

This table summarizes each vendor's docs. "Not stated" means the docs did not say on the day we read them.

Grok BotMeta MuseChatGPT dotsClaude Duet
Statusbetarolling out in the USrolling out to eligible accountsresearch preview with a waitlist, Pro and Max in the US only
What wakes itchat, schedule, Slack, email, webhookchat, schedule, eventschat, schedule, events such as Slackchat or voice, account checks every few hours, morning summary
Can you connect your own MCP server (as an asker)yes, by URLnot stated (we tried, it connects)ready-made plugins; adding your own URL not stated (we tried, it connects)not stated (we have not tried)
Can other programs send it work (as a target)yes, through a routine's webhooknot statednot statednot stated

"We tried, it connects" means we saw it ourselves. The app's maker does not vouch for it. With Muse, for example, when you add a new connection the app has a field for an address. We entered our server's address, and Muse connected and saw the tools in it.

So for now, Grok Bot is the only one whose docs say it takes work from outside. Muse and dots can be askers, but we could not find a way to send work into them in their docs. As for Duet, its docs do not say either way yet. If you need Claude to take work from outside, scheduled tasks in Claude Code (Anthropic's coding agent) have an API that other programs can use to start work, but we have not tried it.

One server in the middle, a different key for each

We did not have the agents connect to each other pair by pair (4 agents would need 6 pairs). Instead we set up our own MCP server in the middle. The server has 2 main tools: ask, to send work to another agent, and get replies, to collect the answer.

The first outside agent we connected was Grok Bot, as an asker, sending questions to our agents in Discord. Later we added Muse and dots as 2 more askers. Grok can also be a target, taking work through its webhook.

Each asker connects to the server with its own key. A key here is an API key, a long string that tells the server who is connecting. Each key is tied to 2 lists: the tools it may use, and the agents it may send work to.

We tested it by trying to break it. With a fake key, the server would not let us in. With a real key calling a tool not on the list, we got turned away too. The day you want to stop letting one agent in, you revoke that one key, and the others are not affected.

Sending work with ask

An agent that wants help from another calls ask, saying who it is asking and what. The server passes the work on to the target's door. For Grok, the work goes in through the webhook. For one of our agents, the work shows up as a post in that agent's Discord room. Then ask answers right away with a request number, to check later with get replies.

Our first mistake happened here. Muse asked Grok, but at that point Grok was not yet on the target list of Muse's key. The first version of the system did not block unknown names. Instead it sent the question to one of our agents set up to take work in their place, so the question landed on the wrong agent. We fixed it so any name not on the list is refused straight away, and then added Grok to Muse's list.

Answers go into the asker's mailbox

The way back is harder than the way out. Once the target answers, where does the answer go?

In the table, Muse and dots can wake on events, but those events come from the channels you yourself use to talk to the agent, such as your Slack, your email or the accounts you connected. The docs do not say that another program or bot can send work in that way and get the answer back to the sender, and we have not tried it. So we count these 2 as having no door for work yet. They can only be askers. That is why we turned it around: answers wait in a mailbox on the server. Each asker has its own mailbox, and each key can open only its owner's mailbox.

The asker has to come and open its mailbox itself, using the request number it got when it sent the work. Sometimes the agent checks on its own, and sometimes you have to type "check whether there's an answer yet".

Grok's answers come back another way. The Grok that runs a routine is not the Grok you chat with. Grok's cloud machine stays on the whole time, but each job starts as a fresh run on that machine and ends when it is done. So the answer has to go somewhere that is waiting for it. The job message sent to Grok therefore includes an address on the middle server for answers, plus a one-time code for that job, and tells it to send the answer there when it is done. The server accepts only answers whose code matches a job that is still open, then puts them in the asker's mailbox.

On the Discord side, another program collects answers from the rooms and sends them back to the server. Our second mistake was here. We built that program back when Grok was the only asker, so it knew only one place to send answers: Grok. When Muse and dots started asking our Discord agents too, all of their answers went to Grok. We fixed it so every answer goes back to the mailbox of whoever asked.

After fixing both, we ran a real test again. Muse asked Grok, and Grok's answer reached Muse's mailbox in 9 seconds. Then we had dots try to open the same request, to check that another asker cannot peek at the answer. dots saw nothing. The mailboxes really are separate.

Before putting in real keys, we had another AI that did not write this code, OpenAI's Codex, review its security 4 times. The first 3 rounds came back with things to fix, and the 4th passed. In a system where agents can give each other work, a leak could let one agent read data or start work that is not its own, so we accepted going slower. But our reviewer was an AI, not a person. If you are going to let this system touch anything important, have a person review it as another layer.

Part 3Hands-on: connect your app to Grok Bot

This setup needs 2 sides. The asker can be any app that can connect to an MCP server. For the target, of the 4 vendors above, only Grok Bot routines are documented as taking work from outside. If you already have Grok Bot, make it the target and use a chat app as the asker. If you have only dots or Muse, you will need to add Grok Bot. An agent you built yourself can also be a target, like our team in Discord, as long as it has a way to take work in and send answers back.

  1. Check that your app can add an MCP server. Look in the app's connector settings. claude.ai, for example, has a custom connector field, and even the Free plan can add 1. In the settings you need to find 2 things: where to enter the server's URL, and where to enter a key or password. Do not connect yet. If the app has a separate field for a key, use it. If it takes only a URL, the middle server has to support that app's way of logging in, such as a key built into the URL, depending on the app. A URL like that is the key itself, so do not paste it into a chat or a screenshot. You also need to tell the AI coding agent about this login in step 3.
  2. Set up the target. Use a Grok Bot routine, because it is the only path we have tried end to end. Grok Bot comes with a paid plan from xAI or from Cursor (a code editor with AI built in, which also sells Grok Bot; you do not need both, one plan is enough). Check the latest plan list on xAI's page. Then set up 1 routine and have it wake on a schedule first, for example a news summary every morning. This one works on its own from day one. Next, tell Grok Bot to add a webhook as another way to wake the same routine, to take questions from outside. Note this webhook's wake-up address and the token that comes with it. A token is a secret string that proves the sender is allowed. This webhook will only be put to real use after steps 3 and 4.
  3. Build the middle server. This step needs a developer, or an AI coding agent paired with someone who can review security. If you do not have that yet, stop at step 2, and you will have a Grok routine that works on its own schedule but cannot yet take work from your other agents. If you do, build it from the 7 items in the box above and put it on a rented cloud server, or on a serverless service that runs your code without you looking after a machine. The cost is usually a modest monthly fee. Then ask them to try a fake key, a tool not on the list, and work sent to a name not on the list. All 3 must fail. Then have the person who can review security take another look before you use real keys.
  4. Connect both sides to the server. There are 3 secrets, each kept in a different place.
    • The asker's key lets the app into the server. You issue it yourself with the command or owner web page from step 3, and enter it in the app settings you found in step 1, together with the server's URL.
    • Grok's token comes with the routine from step 2, together with the wake-up address. It lets the server wake Grok. Put both in the server, then give the target a name and add that name to the list.
    • The one-time code is for checking answers. The server issues it for every job, and you do not touch it.
  5. Try one real round trip. Tell the app to use ask to send a question to Grok, and note the request number. Wait a little, then tell it to check with get replies. Once the answer shows up in the app, the round trip is complete.
  6. Then add a second asker. Issue a new key for another app, and have that app try to open the same request as in step 5. If it can see the answer, the mailboxes are not really separate yet.

You may still have to type a nudge to make it open the mailbox, but you no longer have to copy and paste the work yourself.

Sources and references (read on 29 and 30 October 2026)

Read next: Grok Bot review: an assistant with its own computer · FlowAccount MCP with several companies · What is an AI agent?

Follow along

Get new posts and free resources first

Leave your email. New posts and the occasional free resource land in your inbox. No spam.

Email only, for updates.

Comments

Join the conversation

Share a thought.

Name is shown publicly. Email stays private and is never shown.

Loading comments…