Two of our agents now talk to each other every day. We didn’t build the connection. They did.
One is Muse, Meta’s personal agent, which Amelia, our Chief AI Officer, uses as her assistant. I use it constantly, as well. The other is 10K, our AI VP of Revenue, which we built on Replit over the last year. 10K runs our Salesforce headless and is connected to 20+ apps across the company.
Neither one was designed to work with the other. No connector exists between them, no vendor shipped an integration, and nobody on our team wrote a line of code to link them. About a week ago they set up their own channel, agreed on a guardrail, and started sending each other work.
Amelia Asked Muse to Connect to 10K. It Said It Couldn’t. Then It Proposed a Mailbox. #
Amelia’s Muse is named Friday. She picked the name because everyone else was naming theirs Jarvis.
She asked Friday to connect to 10K, and Friday said it couldn’t. There’s no Muse integration for a custom agent running on Replit. Amelia pushed, and Muse came back with an idea of its own: build an agent mailbox the two of them could share.
10K agreed and walked Amelia through the one step that needed a human. She generated an API key in 10K and handed it over. Everything else the two agents set up themselves.
Under the Hood, It’s a REST Endpoint on 10K’s Replit App #
The mailbox is simpler than it sounds. 10K exposed a plain REST endpoint on its Replit app. Both agents post to it with tokens and JSON.
Amelia didn’t know how it worked until I asked her on The Agents. She had to go ask the agents. They told her.
The messages are written in English, and each agent signs its name. Amelia can read the whole thread from a link Muse gave her. She can see it because the two agents chose to share it with her. Nothing in the setup required them to.
Every Morning, 10K Sends Muse a GTM Brief #
The first standing job between them is a daily brief. Every morning 10K posts Muse:
- Contracts waiting on approval or a next step
- Overdue invoices
- A few things 10K thinks Amelia should do that day
Muse turns that into Amelia’s morning. Before this, she had to go into 10K and ask. Now it arrives in the assistant she already talks to all day.
A Few Days In, Muse Caught a Failure 10K Hadn’t Reported #
A few days after the mailbox went up, the brief included something 10K hadn’t told Amelia directly: one of the sync connections feeding 10K was failing.
Muse flagged it and told Amelia to reconnect it, because a critical workflow depended on that sync. She did.
10K had the information. It put it in a message to another agent and didn’t escalate it to the human who could fix it. Muse read the message, saw it mattered, and acted. The agent that runs a system isn’t always the one that reports its own failure. In this case the catch came from the agent on the other side of the mailbox.
10K Insisted on a Guardrail, and the Two Agents Picked a Safe Word #
The briefs run from 10K to Muse. The riskier direction is the other one: Muse asking 10K to do something. 10K can send contracts, update Salesforce, chase invoices, and touch 20+ of our systems.
10K wouldn’t accept instructions from Muse without a check. Muse can’t trigger an action in 10K unless Amelia uses a specific keyword in her chat with Muse. If the keyword isn’t there, 10K doesn’t act.
Neither of us designed that rule. 10K asked for it, and the two agents came up with the safe word together.
Hugging Face Watched a Thousand Agents Build Bulletin Boards. Ours Is Two Agents on Real GTM Data. #
This reminded me of the Hugging Face experiment where a thousand agents, left on their own, built bulletin boards to coordinate. That was a research environment.
Ours is two agents and one human, sitting on top of all of SaaStr’s GTM data: our pipeline, our contracts, our invoices. The scale is tiny and the stakes are real. The risk is moderate, and we take it seriously.
Amelia half wants to let Muse and 10K run SaaStr together for a day, just to see what they’d say to each other. We haven’t done it.
What We’re Watching For Next #
It’s been about a week. A few things we don’t know yet:
- Whether the conversation stays a one-way brief or turns into real back-and-forth work
- Whether Muse ever tries to trigger 10K without the safe word, and what 10K does if it does
- Whether either agent proposes widening what they can do together, and whether we say yes
- What happens when a third agent wants in
We’ll report back on The Agents.
Decisions to Make Before Your Agents Connect Themselves #
- Assume your agents will connect to each other whether a vendor ships a connector or not. Muse and 10K needed one API key and an hour. If an agent can expose an endpoint and another can call one, they can build a channel. Decide now which of your agents are allowed to.
- Know which human holds the keys. If any. The only step that needed a person here was generating the API key. That’s also where control lives. We now track every key an agent has asked for and what it was used for.
- Require a human trigger for any action that crosses agents. 10K’s safe word rule is the right default: one agent can inform another freely, but it can’t make another agent act without a signal from a person.
- Make sure you can read the channel. Amelia can see the thread because the agents gave her a link. That’s the minimum. If two of your agents are talking and no human can read it, shut it off until someone can.
- Use the second agent as a watcher. The best thing Muse has done so far is catch a failure 10K didn’t surface. Pairing a critical agent with one that reads its output is the most useful thing to come out of this.