Under the hood
Follow-up research

How the agent talks to its computer

The talk shows the agent loop on a server and the tools running on a Firecracker VM, but it skips the plumbing in between. This page puts together what the talk, xAI's Grok Bot docs and Cursor's engineering posts say about that plumbing. Grok Bot's computers run in Cursor's cloud, so Cursor's posts are the closest public description of the infrastructure. Where the sources stop, our own guesses are marked as such.

21 sectionsClaims tagged with their sourceStart with Quick answersP to present

The short version

  1. The agent loop is a Temporal workflow. Model calls and tool calls are activities with their own timeouts and retries, and Temporal workers on the server execute them. Cursor eng Talk
  2. Inside the VM, a supervised "command runner" process executes tool calls. It sits next to a file server and one screen with Chrome per bot. Talk
  3. In Cursor's self-hosted mode, a worker on the machine dials out to Cursor. It holds a long-lived HTTPS connection, and tool calls come down it. We think Grok Bot's command runner works the same way. Cursor eng Inferred
  4. Only some tools touch the computer. Connectors and remote MCP servers run on the server, and OAuth tokens never reach the VM. xAI docs
  5. A sleeping computer is restored from a snapshot on the next tool call. Only certain tools are allowed to wake it. Talk Inferred
00Key

How to read this page

Claims carry one of these tags. Solid tags are things a source says. Dashed tags and dashed boxes are things we inferred or couldn't find. Untagged notes and takeaways are our own explanation of the tagged material.

Talk
Said in the lecture or shown on a slide.
xAI docs
Grok Bot's product docs (docs.x.ai and cursor.com/docs/grok-bot).
Cursor eng
Cursor's posts and docs about its cloud agents. That's the same platform, but these weren't written about Grok Bot specifically.
Inferred
Our reading of the evidence. Plausible, not confirmed.
Unknown
Not public. We looked and found nothing.
Why the Cursor posts countxAI's docs say Grok Bot "runs in Cursor's cloud", and the talk's architecture (a Temporal loop on the server, tools on a VM) matches what Cursor describes for its cloud agents. We treat Cursor's posts as strong evidence about the shared platform, but still tag them separately.
01Start here

Quick answers

The questions people ask first. One row each, with the evidence and a link to the section with the details.

QuestionShort answerEvidenceMore
Where things run
Where does the agent run?On Cursor's servers, as a Temporal workflow. Model calls and tool calls are its activities. None of it runs on the VM or your device.TalkCursor eng§08
What is the "agent process"?No program stays running per user. Server workers pick up the workflow's tasks, and the workflow probably ends about 2 minutes after the work is done.Cursor engInferred§08
What is a Bot, and how many computers does a user have?A Bot is a named agent with its own role, chat, routines and memory. All of a user's Bots share one computer, with one screen each.xAI docs§03
What is a Team Bot?A Bot the owner publishes for the team. It has one setup and one team memory, but a 1:1 conversation usually runs on the computer and accounts of whoever is talking. Slack channels and group chats use a computer of the Bot's own.xAI docs§04
What is the computer used for?Anything that needs an operating system: shell and code, files in /workspace, a logged-in browser, desktop apps, screenshots, command-line MCP servers.TalkxAI docs§05
How does a tool call reach the computer?The server routes it to a command runner inside the VM, most likely over a connection the VM opens to the server.TalkCursor engInferred§12
When is the computer on?Only when a tool needs it. It's snapshotted a few minutes after the last activity (never mid-turn) and restored on the next tool call that may wake it.TalkInferred§13
Where do helper agents run?Each is its own durable workflow, most likely on the server. The computer-use helper drives the user's screens. Bigger coding tasks can go to Cursor Cloud Agents on separate VMs.TalkCursor engxAI docs§05
Starting work
What can start a turn?You, a call or meeting, a schedule, a webhook, events from Slack, GitHub, Linear, Sentry, PagerDuty or email, another Bot, or a helper finishing.TalkxAI docs§11
How do routines work?Each belongs to one Bot and is created by asking it. Up to 50 per Bot, at least 5 minutes apart, last 20 runs kept. They run in the cloud; one that only uses connectors shouldn't need the computer.xAI docsTalkInferred§11
What if I message it while it's working?Your message jumps the queue and can redirect or stop the turn. Everything else waits, and quick bursts become one turn.TalkxAI docs§11
Where things are stored
ConversationServer: an append-only log plus the database. Apps fetch new messages in order after a signal. Long histories get summarized.TalkCursor eng§06
MemoryServer, in four layers: facts about you (always in the prompt), the 30 most relevant log entries, short-lived notes, and everything else via search. Updated after each turn.Talk§07
SkillsOne private library shared by all your Bots, most likely stored on the server. The prompt holds a one-line pointer; the full text is read when needed.xAI docsTalkInferred§06
Files/workspace on the computer's durable disk, shared by all your Bots. Before the computer sleeps, files sync to cloud storage; which ones (most likely /workspace) isn't documented. Team Bot uploads land on the computer of the chat they're sent in; otherwise attachment storage isn't documented.xAI docsTalkInferredUnknown§14
Passwords, tokens, loginsOAuth tokens stay on Cursor's backend. You enter passwords by taking over the screen; secrets for supported connections go in a masked request the model never sees. Browser and CLI logins live on the computer.xAI docs§06
What survives a reset or update?/workspace files and most logins. Hand-installed packages and temp folders may not. A reset can lose very recent changes.xAI docs§13
What's lost if a server crashes mid-turn?Nothing that finished. Temporal retries the running step on another worker. The risk: a command that ran but wasn't recorded could run twice.Cursor engInferred§16
Safety
Who checks risky actions?A separate review model, before they run (memory writes aren't reviewed). Approvals wait for you in your own chats; ones from routines or other Bots expire after about 10 minutes. The talk's slide said 15 seconds.xAI docsTalk§17
Are Bots isolated from each other?No. The boundary is the user account. All of a user's Bots share the computer.xAI docs§03
Can I give each Bot different tools?Not for your own Bots: connectors and the computer are shared, and only enabled skills differ per Bot. Team Bots get their own plugins, skills and secrets, chosen by the owner.xAI docs§03
Can it touch my own laptop?Only if "Execution on Local Computer" is on. The default is "Ask every time". The review model doesn't cover it.xAI docs§17
Which model does it use?xAI's own models, possibly third-party ones too. No model picker. Enterprise teams can screen every model request (beta).xAI docs
Part 1

The whole system

Every component, how a user's Bots share one computer, how Team Bots differ, what the computer is for, where every piece of data is stored, and what a single turn reads and writes.

02Map

System map

Three zones: your apps, the server side (where the loop, the conversation and memory live), and the per-user VM (where tools run). Dashed boxes are components we believe exist but that no source names.

Apps and triggers
Desktop app
Mobile
Slack, email
Webhooks, schedules
6Live desktop and take-over go to the VM via *.*.cursorvm.com
Server side: Cursor's cloud
Entry point: checks, de-duplicates, routes1HTTPS
Temporalworkers run on server pods
Agent workflowone per task; loads state, loops, exits
load state2inferencetool callsave step
Tool router (inside the tool-call activity)
Runs on the server
3ConnectorsOAuth tokens stay here
Remote MCPcalled from Cursor's servers
Memory, SendToUserweb search most likely too
Talks to the computer
Worker gatewayholds the VM worker's connection4dials out
VM control planestate, snapshot, restore, reset5restore
Durable storage
Conversation logappend-only, streams to appslive updates
Databasememory, routines (skills most likely)
Snapshots + file syncwhere these are kept isn't documented
Agent's computer (one per user)
Firecracker microVM·own kernel
Debian container, kept up by a supervisor
Command runnershell, files, screenshots, clicks
File serverfiles, app connections, live desktop view
Screen + Chromeone per active bot (VNC)
stdio MCP serverscommand-line MCP runs here
/workspace on a durable disk
LinkWhat we knowEvidence
1Apps ↔ serverApps send messages with unique IDs. The server answers with tiny "something changed" signals, and apps fetch from the database in sequence order. Cursor streams conversation updates from an append-only store.TalkCursor eng
2Loop → modelInference runs as a Temporal activity with its own timeout and retries, so an inference outage doesn't lose the turn.Cursor eng
3Loop → connectorsConnectors and remote MCP servers are called from Cursor's servers. Bots use them without ever receiving the OAuth tokens, and tokens are never stored on the computer.xAI docs
4VM worker → serverFor Cursor's self-hosted machines, a worker on the machine opens a long-lived outbound HTTPS connection, and tool calls come down it. We assume the hosted VMs run the same worker. The protocol on that connection isn't public.Cursor engInferred
5Control plane → VMThe VM is snapshotted when idle and restored on the next tool call. How the server tells the Firecracker host to do this isn't public.TalkUnknown
6Apps → VMCorporate TLS proxies must allow *.*.cursorvm.com. The two-level pattern looks like one hostname per machine. We think that's how the live desktop view and take-control reach the file server.xAI docsInferred

Worth noticing

  • A conversation can carry on without the VM. The loop, the history and the memory all live on the server, which is why the talk stresses that the VM can be rebuilt at any time.
  • The "tool router" and "worker gateway" are our names. Some component has to decide which tools go to the VM and hold the VM's connection, but no source names them.
  • Cursor's posts say VNC and Chrome live in the VM and are shared by a parent agent and its computer-use helper.
TakeawayEverything the agent knows lives on the server. The VM runs tools and keeps working files and logins, and it can be replaced. Tool calls most likely reach it over a connection the VM opens itself.
03Bots

Bots, accounts and the one computer

In Grok Bot, a "Bot" is a named agent you create, with its own role and instructions. One account can have several. They each get their own chat, but they all run on the same computer. The colours below follow each Bot from the account to the server and onto the computer. The Bot names are made-up examples.

One user's account
Researchfinds and summarizes things
Inboxhandles email and calendar
Sales CRMkeeps the pipeline updated

You message each Bot separately, add it to Slack, or put several in one group chat. They can pass work to each other. xAI docs

Server: kept per Bot
Conversation · routines · enabled skills · memory
Conversation · routines · enabled skills · memory
Conversation · routines · enabled skills · memory
Shared by all three: facts about you, the skill library

Routines, enabled skills and settings belong to the Bot's profile. Duplicating a Bot doesn't copy its conversations or learned memory. xAI docs Facts about you are shared by all your agents, and each agent writes to its own file. Talk

Computer: one for the whole account
Firecracker microVM·belongs to the account, not to any Bot
Screen 1 + Chrome
Screen 2 + Chrome
Screen 3 + Chrome
Shared by every Bot files in /workspacebrowser cookies and loginscommand-line credentials

Each Bot gets its own screen and runs one computer-use task on it at a time. Screens are "separate work surfaces, not separate security boundaries." xAI docs

WhatPer Bot or shared?Evidence
Role, instructions, chat historyPer BotxAI docs
Routines, settings, enabled skillsPer Bot (part of its profile). The skill library itself is shared by all your Bots.xAI docs
Learned memoryPer Bot, plus shared facts about youxAI docsTalk
Screen and Chrome windowPer Bot, on the same computerxAI docsTalk
Files in /workspaceShared. That's how Bots hand files to each other.xAI docs
Browser cookies, logins, CLI credentialsShared. One Bot can use a login another Bot set up.xAI docs
The computer itselfShared. One Firecracker VM per user account.xAI docs
Tools and access: what you can set per Bot (Team Bots are covered in the next section)
WhatYour own BotsTeam BotsEvidence
Connectors and pluginsAccount-wide: every Bot can use every connected account. You can switch off individual plugin tools under Connect apps → Your plugins → Manage plugins and skills, but that applies to all your Bots. Typing @ attaches a connector to one task.The owner and managers add the Bot's shared plugins. OAuth plugins use the access of the person talking to it; key-based plugins use the Bot's own credential for everyone.xAI docs
SkillsOne private library shared by all your Bots. Each Bot has its own set of enabled skills, the only tool-related setting we found documented per Bot. Typing / references a skill.Team skills are saved by the owner or managers and apply in every teammate's conversation.xAI docs
Computer tools and loginsShell, files, browser and desktop, plus every login on the computer, are available to every Bot.The owner's chat runs on the owner's computer, and a teammate's chat or DM usually on theirs. Slack channels, threads, group DMs and group chats use a computer of the Bot's own.xAI docs
Personal connectorsNot applicable: every connector is already yours.Used without asking in a 1:1 chat. In shared conversations the Bot asks first (Allow once, or Always allow for this Bot).xAI docs
SecretsMasked secret requests for supported connections. Team Secrets only reach setup scripts, never the Bots directly.Up to 25 per Bot, used by name and shown as [REDACTED] in command output, file reads and plugin calls. Every teammate's conversation can use them.xAI docs
Custom MCP serversReportedly added by asking the Bot (a third-party guide citing Cursor forum replies). Command-line ones run on the computer. Whether they're limited to that one Bot isn't documented.Remote servers use the Bot's credential or each person's sign-in. Command servers run on the conversation's computer, and ones that need secrets only work in the owner's chat.xAI docsUnknown
Limits on what a Bot may doAuto Review rules, the network allowlist and the local execution policy apply to all your Bots. "Rules" written in a Bot's description are instructions it follows, not enforcement.The same, plus the team's connector policy: admins block connectors on Cursor's Plugins & MCPs page, and blocked ones show as "Disabled by team admin".xAI docs

Consequences worth knowing

  • Deleting a Bot doesn't remove its files or sign-ins from the computer.
  • If one of your own Bots needs different tools or its own computer, the documented route is a separate Cursor user. There's no per-Bot switch for connectors.
  • Team Bots, which the owner publishes for a whole team, work differently. The next section covers them.
  • The talk describes the same setup from the infrastructure side: when you run five or ten bots, each one needs its own browser, so each gets its own virtual screen on shared machinery.
TakeawayEach Bot has its own personality and conversations, but they all use the same machine. The security boundary is the user account, because everything on the computer is shared by all of that user's Bots.
04Team Bots

Team Bots: one Bot, many conversations

A Team Bot is a Bot its owner publishes for the whole team. It keeps one setup and one team memory, but its conversations run on different computers and with different accounts, depending on who is talking and where. The docs describe this behaviour; how it's wired underneath is our reading.

The Team Bot (server)
Instructions and profile
Shared pluginskey-based ones use the Bot's own credential
Team skills and filesused in every conversation
Secretsup to 25, shown as [REDACTED] in output
Team memoryread by every conversation
Only the owner and managers can change any of this

xAI docs Inferred: one setup, many conversations

Conversation
Computer it runs on
The owner's chatAccounts: the owner's own connectorsMemory: team memory + notes with the ownerBilled to: the owner (presumably)
The owner's computertheir files and logins
A teammate's chat or Slack DMAccounts: that teammate's own connectors (connected on first use)Memory: team memory + notes with that teammateBilled to: that teammate
That teammate's computerusually; files they upload in the chat land here
A Slack channel, thread, group DM or group chatAccounts: asks before using anyone's own connectorsMemory: team memoryBilled to: not documented
The Bot's own computerseparate from everyone's; shared by its channel conversations

Every conversation uses the same Team Bot setup. Which computer and whose accounts it uses depend on the conversation. xAI docs Group chats in the app are only listed in Cursor's Teams docs. Whether the Bot's own computer is one per Bot or one per channel isn't stated. Unknown

Personal Bot vs. Team Bot
WhatPersonal BotTeam BotEvidence
Who sets it upYouThe owner, plus any managers. Admins choose who gets it by default. Teammates can't change its setup.xAI docs
Which computerAlways your one computerThe owner's chat: the owner's computer. A teammate's chat or Slack DM: usually that teammate's computer. Slack channels, threads, group DMs and group chats: a computer of the Bot's own, separate from everyone's. The Team Bots docs call it "one shared computer for that Bot"; they don't say whether it's one per channel or whether it persists.xAI docs
OAuth plugins (Gmail and the like)Your accountsThe account of whoever is talking to it. Each teammate connects their own the first time.xAI docs
Key-based pluginsYour keysThe Bot's own credential, the same for everyonexAI docs
Teammates' own connectorsNot applicableUsed without asking in a 1:1 chat. In shared conversations it asks first (Allow once, or Always allow for this Bot).xAI docs
SecretsMasked secret requestsUp to 25 per Bot, used by name, shown as [REDACTED] in output, available in every teammate's conversationxAI docs
Files you upload in a chatNot documentedLand on the computer that chat runs on, so a teammate's uploads go to their own computer, not the owner'sxAI docs
Skills and filesShared library, enabled per BotTeam skills and files set by the owner or managers, used in every conversationxAI docs
MemoryFacts about you plus the Bot's own memoryTeam memory read by every conversation, plus private notes with each personxAI docs
UsageCounts against youEach teammate's chats count against their own allowance. Routines count against whoever set them up.xAI docs

Underneath (our reading)

  • The Team Bot is most likely one stored setup on the server (instructions, plugins, skills, secrets, files, team memory). Each conversation runs its own copy of the agent loop, with its own Temporal workflow. Inferred
  • When a turn starts, the server picks the computer and the accounts from who is talking and where. The setup stays fixed; the computer and personal access come from the conversation. Inferred
  • One thing doesn't add up: secrets work in every teammate's conversation, but command-line MCP servers that need secrets only work in the owner's chat. Their configuration may live on the owner's computer. Unknown
  • Not documented: whether the Bot's own computer is one per Bot or one per channel, and whether it persists between sessions. Unknown
  • Anything posted in a channel thread is visible to the whole channel, and the Bot's secrets reach every teammate. The docs recommend scoped, read-only service-account keys. xAI docs
TakeawayA Team Bot has one setup and one team memory. The computer it runs on and the accounts it uses are chosen per conversation.
05Purpose

What the computer is actually for

The computer does much more than browse the web. Anything that needs a real operating system happens there: running programs, keeping files, holding logged-in sessions, appearing on the network. The thinking, the memory and the connections to your apps all stay on the server.

Runs on the computer
Shell commands, scripts, codeRuns programs and CLIs, writes and runs code, installs packages (sudo is on by default). Team setup scripts run here on start.
TalkxAI docs
Files in /workspaceThe bots' shared working folder. Reports, downloads, data and code live here, and bots hand work to each other through it. If local access is enabled, files can also move to and from your laptop through the desktop app.
xAI docs
A logged-in browserChrome on each bot's screen, with cookies and sessions that persist. It's used for any site without a connector, like comparing prices or searching Facebook Marketplace.
TalkxAI docs
Desktop appsMouse and keyboard on a 1280×800 screen for apps and system dialogs a browser can't reach.
Talk
Screenshots and recordingsScreen captures and demo videos of its own work.
Talk
Command-line MCP serversMCP servers that start as a local process (stdio) run here. Remote ones don't.
xAI docs
CLI credentials and network presenceLogins for command-line tools live here. Traffic leaves from shared egress IPs, can be routed through your desktop, and Enterprise teams can install a networking client (Tailscale, for example) through setup scripts to reach private networks.
xAI docs
Handing you the screenYou watch it live and take control for passwords, 2FA, CAPTCHAs and payments.
TalkxAI docs
Never touches it
The agent loop and the modelEvery decision happens on the server, in Temporal.
TalkCursor eng
Connectors and remote MCPGmail, Calendar, Drive, Slack and other connectors are called from Cursor's servers. Their OAuth tokens never reach the VM.
xAI docs
Conversations, memory, routines, skillsThe talk says conversation logs, memories and routines are saved to the server's database and storage, so a rebuilt VM loses none of it. Skills most likely live there too.
Talk Inferred: skills
Delegated coding workBigger coding tasks can go to Cursor Cloud Agents, which run on separate computers. In xAI's example the Bot gathers context and writes the prompt, and the coding agent writes the code. The Bot still writes and runs smaller scripts on its own computer.
xAI docs
Messaging youSendToUser and every app channel go through the server.
Talk
Not clear from the sources
Web searchListed as a separate step from "browser on its computer", so probably a server tool.
Inferred
Image generationProbably a server-side model call. Where the image file ends up isn't said.
Unknown
"Long outputs go to files"The talk doesn't say whether those files sit on the VM or in server storage.
Unknown
Helper agentsThe computer-use helper drives the shared screens and Chrome, but its own loop most likely runs on the server like the main one.
Cursor engInferred
What that means for real requests (illustrative; which ones wake the computer is our reading, apart from the slide's routine)
RequestWhat it usesComputer
"Summarize my unread email"Gmail connector on the server, then SendToUserstays asleep
A routine at 8:00 that only reads from connectorsConnectors, then SendToUser (like the routine on the slide that "didn't need it")stays asleep
"Compare this TV on Costco and Amazon"The browser on the bot's screenwakes it
"Clean up the CSV I sent and chart it"Files in /workspace, then a script in the shellwakes it
"Log into the vendor portal and download the invoice"Browser, then a hand-off to you for 2FA, then fileswakes it
"Fix the bug in our repo"If the Bot delegates it: a Cursor Cloud Agent on a separate VM, with the Bot gathering context and writing the promptseparate VM

How to think about it

  • The server is the bot's brain and memory. The computer is its desk and hands: the place where work needs a real machine with real files and logged-in software.
  • That split is why the computer can sleep most of the time. Plenty of turns (email, calendar, chat, memory lookups) most likely never need it.
  • All of a user's Bots share this one computer, each with its own screen. The Bots section above shows what's shared and what isn't.
TakeawayIf a task needs an operating system (run something, keep a file, use a site without an API, stay logged in), it happens on the computer. Everything else stays on the server.
06Storage

Where everything lives

Every piece of data we could find, where it's kept, when it's written, how it gets used, and whether it belongs to one Bot or to the whole account.

Server Cursor's backend (database, log, Temporal, storage) Computer the user's Firecracker VM Device your desktop app Not documented
WhatLives inWrittenUsedScopeEvidence
Conversation and the agent loop
Loop progressServer Temporal historyAfter every activity (model call, tool call, save)Replayed on another worker after a crashPer taskCursor eng
Conversation transcriptServer append-only log + databaseEvery step of every turnApps fetch it in order after a signal; becomes the prompt's historyPer Bot conversationTalkCursor eng
Conversation summaryServerAbout 10 minutes after a big turn, or mid-turn if a turn gets too longReplaces older messages at the start of the next prompt; the last few messages to you stay word for wordPer conversationTalk
Tool definitionsServer prompt prefixFixed until the next summary; a deploy adds a note instead of new textFull details for a core set; other tools listed by name and loaded when neededPer conversationTalk
Memory and instructions
Profile (facts about you)ServerA pass after each turn adds and replaces facts; it can only remove facts it was shownAlways in the prompt: up to 100 facts in 4,000 charactersRead by all your Bots; each Bot writes to its own fileTalk
Log (dated events)ServerNot documentedThe 30 most relevant recent entries go in the promptPer BotTalkInferred scope
NotesServerNot documentedShort-term details that fade quicklyPer BotTalkInferred scope
Older memoryServer filesAs aboveFound with a memory search tool when neededPer BotTalk
Team memory (Team Bots)ServerNot documentedRead by every teammate's conversation; notes with each person stay private to that personPer Team BotxAI docsInferred location
SkillsServer private skill library (most likely)Saved from a finished task, a recorded demonstration (up to 10 minutes) or written instructionsA one-line pointer in the prompt; full text read on demand; type / to reference oneLibrary shared by all your Bots; enabled per BotxAI docsTalkInferred location
RoutinesServer the Bot's profileBy asking the Bot; it confirms schedule, inputs, result and approval limits, and new routines need your OKA schedule or event starts a run; the last 20 runs are keptPer Bot (up to 50)xAI docs
On the computer
FilesComputer /workspace on a durable diskBy tools running on the computer. Before sleep, files sync to cloud storage; that this covers /workspace is our readingShell and file tools; how Bots hand files to each otherShared by all your BotsxAI docsTalkInferred
Running programs, open appsComputer memory snapshotAt sleepRestored in place on wake; a reset goes back to the last snapshot; an image update starts from a fresh image, so running programs are lost (files and most logins are kept)Per userTalkxAI docs
Browser cookies and loginsComputer durable diskWhen you or a Bot log in (you take over for passwords and 2FA)By every Bot's Chrome; can drop when the computer is recreatedShared by all your BotsxAI docs
Command-line credentialsComputerWhen a CLI tool is logged inShell commandsShared by all your BotsxAI docs
Cloud Agent resultsComputer, then attached to the replyWhen a coding agent reports back, its images, videos and files are copied to the computerAttached to the Bot's replyPer conversationxAI docs
Your personal review rulesDevice, synced to ComputerWhen you add a rule in that desktop appBy the review model; each desktop install has its ownPer desktop installxAI docs
Credentials and secrets
Connector OAuth tokensServer connector backendWhen you connect an appBy server-side tool calls; never sent to the computer or the modelAccount (or team)xAI docs
Secure secret requestsNot documentedYou type the value in a masked fieldBy the supported connection; excluded from the transcript and the modelPer connectionxAI docsStorage unknown
Team SecretsServer encrypted, in the Cursor dashboardSet by adminsDelivered to Team Setup Scripts as environment variables when the computer starts; never given to Bots directlyTeamxAI docs
Team Bot secretsNot documentedSet by the owner or managers (up to 25)Used by name in every teammate's conversation; values shown as [REDACTED] in outputPer Team BotxAI docsStorage unknown
The machine itself
VM snapshot (memory + disk)Not documented host sideA few minutes after the last activity, never mid-turnRestored on wake; a reset rebuilds from the last saved dataPer userTalkxAI docs
Network policyServer team settingsBy adminsReaches running computers within about a minute; sleeping ones on wakeTeamxAI docs
Chat attachmentsNot documentedWhen you attach (up to 6 per message; 25 MB per document, image or audio; 200 MB per video)Go to the Bot you attach them to; not copied when a Bot is duplicated. With Team Bots, they land on the computer of the chat they're sent in.Per BotxAI docsStorage unknown

The pattern

  • Anything about you or your conversations (transcript, memory, routines, tokens, and most likely skills) lives on the server, so a rebuilt computer loses none of it.
  • Anything an operating system needs (files, browser logins, CLI credentials, running programs) lives on the computer and is shared by all your Bots.
  • The only thing we found stored on your device is your personal review rules, and those are copied to the computer too.
TakeawayThe server holds what the agent knows and remembers. The computer holds its working files and logged-in software. They're saved separately, on different schedules.
07Data flow

What one turn reads and writes

The same storage, seen through one turn: what gets loaded before the first model call, what's written while it works, and what happens afterwards while you're away.

1Before the first model call
Server

Profile facts, the top 30 log entries and a snapshot of routines go into the system prompt.

Talk
Server

Tool definitions sit in the fixed start of the prompt. The first message adds environment details and a list of tool names.

Talk
Server

Conversation history, starting from the latest summary, follows. The newest message goes last, with the time and short notes on what changed.

Talk
Server

Skills appear only as one-line pointers. The computer isn't touched yet.

Talk
2While the turn runs
Server

Every model call and tool result is recorded in Temporal's history.

Cursor eng
Server

Every step is appended to the conversation log, and open apps get a signal.

Talk
Computer

Tools that need it change files in /workspace, browser state and installed tools.

TalkxAI docs
Not documented

Long outputs go to files, and the context keeps only the path. Whether those files sit on the computer or in server storage isn't said.

TalkUnknown
Server

Skill text (most likely from the server), memory search results and tool details are read only when the model asks for them.

Talk
3After the turn, while idle
Server

A memory pass adds new facts and replaces old ones. It can only remove facts it was shown.

Talk
Server

After about 2 idle minutes the agent process stops.

Talk
Computer

After a few idle minutes, files sync to cloud storage, then memory and disk are snapshotted and the machine stops.

Talk
Server

About 10 minutes after a big turn, while the provider's cache is still warm, a summary is written for the next time you write.

Talk

Why it's built this way

  • Everything in step 1 is kept in a fixed order so the provider can reuse its cached work. Only the newest message is new on each call.
  • Step 2 writes to two places on purpose: Temporal history so a crash can resume, and the conversation log so every app shows the same thing.
  • Step 3 uses idle time for the expensive bits (summaries, snapshots) so the next turn starts small and fast.
TakeawayA turn reads almost everything from the server, writes its progress to the server twice, and only touches the computer when a tool needs it.
Part 2

The agent loop

How a turn runs on Temporal, how each tool call finds where it should run, what happens when the computer is asleep, and how work starts and results go out.

08Temporal

The loop as a Temporal workflow

A plausible event history for one task, using the pieces the sources describe. The workflow code only makes decisions; every call to the outside world is an activity, and Temporal records each result.

  • WorkflowStarted

    A trigger arrives: your message, a routine, a Slack mention, a helper finishing.

    Talk
  • Activity: loadState

    Conversation, memory, routines and (most likely) skills come from the database.

    Talk
  • Activity: inference

    The model answers with a tool call, e.g. Shell("npm test").

    Cursor eng
  • Activity: toolCall c42 · attempt 1 timed out

    Each activity has its own timeout and retry policy.

    Cursor eng
  • Activity: toolCall c42 · attempt 2 completed

    The result is written to the workflow history. If the server dies now, this call won't run again.

    Cursor eng
  • Activity: saveStep

    The step is appended to the conversation log, and apps get a "something changed" signal.

    Talk
  • Activity: inference

    The model decides it's done and calls SendToUser.

    Talk
  • Activity: sendToUser

    The last message can end the turn without another model call.

    Talk
  • Waiting for new messages…

    New input could arrive as a Temporal signal. If nothing comes, the workflow exits.

    Inferred
  • WorkflowCompleted

    This would match the slide's "stops after 2 idle minutes".

    Inferred
What Temporal gives them

Crash recovery without replaying finished steps, per-activity timeouts and retries, and runs that last days or weeks. Cursor reports 50M+ actions a day across 7M+ workflows.

Cursor eng
One workflow per task

Cursor moved from one "eternal" workflow per agent to shorter workflows that exit after a single task, mainly to make version upgrades easier.

Cursor eng
Where "2 idle minutes" fits

Our guess: the workflow waits briefly for follow-up messages, then completes. The next trigger starts a fresh workflow from saved state. It could also be the worker evicting the workflow from its cache. The talk doesn't say which.

Inferred

Terms, for anyone new to Temporal

  • Workflow: deterministic code that decides what to do next. Temporal replays it from the recorded history after a crash.
  • Activity: any call with side effects (model, database, VM). Its result gets recorded, so after a crash, completed activities aren't run again.
  • Worker: a process on a server pod that polls Temporal for workflow and activity tasks. It's the "agent process" on the slides.
TakeawayThere's no long-running process per user. Whichever server worker is free picks up the workflow's next task, and Temporal's history is the source of truth.
09Routing

Routing a tool call

The model asks for a tool. Before anything touches a VM, the server has to decide where the tool runs and whether the computer may be woken for it.

Tool call from the model
Does it need the computer?
no
Runs on the serverConnectors, remote MCP servers, memory, SendToUser, helper and cloud-agent delegation. Web search most likely too.
xAI docs Talk Inferred: web search
yes
Is the computer awake?
yes
Send it to the in-VM workerShell, read and write files, screenshots, clicks, stdio MCP servers.
Talk xAI docs
no
Is this tool allowed to wake it?
yes
Restore the snapshot, wait for the worker, then sendThe talk says the computer is "restored when a tool needs it". The waiting step is our inference.
Talk Inferred
no
Return an error that says what to do
The computer is asleep. Use Shell or Read to wake it, then try again.
Talk (tool-design slide)

Why we think the third question exists

  • That exact error message is on the talk's tool-design slide. It only makes sense if some tools refuse to wake the computer while Shell and Read are allowed to.
  • Our guess at why: screen tools (screenshot, click) assume a live desktop session. Waking a VM just to take a screenshot of a desktop that was frozen mid-state isn't useful, so the model is told to wake it on purpose first.
  • The tool list itself never changes between turns (that would break the prompt cache). Unavailable tools return errors instead.
TakeawayRouting happens on the server inside the tool-call activity. The VM only ever sees calls that are meant for it.
10Sequence

A tool call on a sleeping computer, step by step

The most involved path through the system. The dot on each message shows its evidence. Most of the middle is inferred, because no source describes the wire protocol.

Agent workflowTemporal
Activity workerserver pod
VM control plane
Firecracker host
Worker gateway
In-VM workercommand runner
schedule toolCall(Shell, c42)
is the computer up?
asleep
restore snapshot
memory and disk restored in place
VM resumes; its old TCP connections are dead
reconnect, same worker ID
send c42 once the worker is online
forward c42
run the command, capture output
result c42
result
activity completed
result in history; next inference
TalkCursor engInferredDashed lane = component nobody documents

The details that matter

  • "Same worker ID" comes from Cursor's self-hosted post: when a snapshot is restored, the worker "starts with the same ID". That's what lets a pending call find the machine again after a restore.
  • Restoring a snapshot kills open connections. The VM's memory comes back, but the TCP sessions it had are gone. A worker that dials out handles this by reconnecting, which fits the "same ID" detail.
  • The activity has to wait for the worker to come back, inside its own timeout. If the restore fails, the activity fails and Temporal retries it.
TakeawayFrom the model's side, waking the computer is part of the tool call and nothing more. The exception is tools that refuse to wake it.
11Triggers

How work starts and how results go out

Every turn starts with a trigger and ends with a reply, a draft, an approval request, or nothing at all. All of it is handled on the server.

What can start a turn
Youdesktop, mobile, Slack DM, voice, phone calls and meetings
Schedulein your time zone, at least 5 minutes apart
App eventsSlack (mention, phrase, reaction, any message), GitHub, Linear, Sentry, PagerDuty, email
WebhookPOST with Authorization: Bearer <key>; a 200 only means the run started
Another Botan async message wakes the receiver
Helpers and background workfinishing and reporting back

xAI docs Talk

On the server
Routerdrops duplicates, picks the Bot and conversation, records where the wake-up came from
That conversation's queueyour 1:1 messages skip the line and can stop the turn; quick bursts become one turn
Agent workflowmodel, tools, repeat

Talk xAI docs

How it ends
A replyvia SendToUser, to the conversation the work belongs to
Nothingif there's nothing worth saying
A draftemails and Slack messages wait until you press Send
An approval cardwaits for you in a chat you're in; expires after about 10 minutes if a routine, trigger or other Bot started the work
A message to another Botto hand off the next stage

Talk xAI docs

Routines belong to one Bot

Created by asking that Bot. Up to 50 per Bot. Deleting the Bot deletes them.

xAI docs
They run in the cloud

With your laptop closed. A routine that only needs connectors shouldn't need the computer, like the one on the talk's slide.

xAI docs Talk Inferred
Limited history

The last 20 runs are kept, each as running, succeeded or failed with a reason. Failed rate-limited runs aren't retried.

xAI docs
Paused when you're gone

After a long absence Grok Bot may ask whether to keep routines running, and pauses them if you don't answer.

xAI docs

Worth noticing

  • Event triggers come from Cursor account integrations, which are separate from the Slack or GitHub connectors a Bot uses to act.
  • Group chats hold two to six Bots. You can @mention one, several or everyone, or let them decide who answers. Approvals, secret requests and drafts never show up in groups.
  • Webhooks are fire-and-forget. A 200 means a run started; the result shows up later in the Bot's conversation.
TakeawayTriggers, queues and approvals all live on the server, so starting work never needs the computer. It only wakes if the work itself needs it.
Part 3

The computer

Which side opens the connection, how sleep and wake work, and what's inside the VM.

12Connections

Who connects to whom

Two candidate designs for reaching the VM. The evidence suggests both are used, for different jobs.

A. The VM dials out

A worker in the VM opens a long-lived connection to the server, and calls come down it.

Servergateway
long-lived HTTPS, opened by the VM
In-VM worker
  • Cursor's self-hosted workers work this way: "Cursor never initiates a connection into your network."
  • After a restore, the worker "starts with the same ID", which suggests it reconnects as itself.
  • No inbound ports on the VM, and no need to know its address.
B. Someone dials in

Each VM has a public hostname behind a proxy, and clients connect to services inside it.

Your app
*.*.cursorvm.com
File serverlive view
  • The Teams docs tell admins to allow *.*.cursorvm.com through TLS-inspecting proxies. That's a two-level hostname, plausibly service and machine.
  • The VM's file server provides the "live desktop view", and you can take control from the app.
  • Streaming a desktop straight from the VM to your app avoids sending video through the agent loop.
JobOur best guessConfidence
Tool calls from the loopA: the in-VM worker dials out to a gateway, the same design as Cursor's self-hosted workers.Medium-high
Live desktop, take controlB: the app connects to the VM's file server through a per-VM hostname.Medium
Snapshot, restore, resetNeither: the host manages Firecracker directly. The VM can't restore itself.Unknown how
Network policy updatesPushed to running computers "within about a minute"; sleeping ones apply them on wake. They could be enforced at the host or by an agent in the VM.xAI docs

What we couldn't find

  • The protocol on the worker connection (WebSocket, gRPC streaming or long-poll), and how the worker and server authenticate each other.
  • Whether Firecracker's host-to-guest socket (vsock) is used for any of this.
TakeawayFor tool calls, the VM most likely acts as a client of the server. That's simpler to secure and survives restores. As far as we can tell, inbound access is only used for the desktop view.
13Lifecycle

Sleep and wake

The computer sleeps a few minutes after the last activity, never in the middle of a turn, and wakes on the next tool call that's allowed to wake it.

Going to sleep
Last activity

The last tool call finishes. Talk

Idle check

A few minutes pass with no turn running. Talk

Flush files

Files sync to cloud storage. Talk

Snapshot, stop

Memory and disk are saved, and the machine stops. Talk

Waking up
Tool call

Shell or Read is called for a sleeping computer. Talk

Restore

The snapshot is restored in place, with logins and tools intact. Talk

Reconnect

The worker comes back with the same ID. Cursor eng Inferred

Deliver

The waiting call is sent. Conversation state comes from the server. Talk

Reset can lose recent work

A reset rebuilds from the last saved data. Very recent changes are lost "if the computer can't be reached to save them", which suggests the server asks the VM to save before a reset.

xAI docs Inferred
Updates recreate the machine

Image updates recreate the computer on a fresh image and keep your files and logins, though some sign-ins can drop. Packages installed by hand and temp folders may not survive.

xAI docs
Terminate keeps the disk

An admin terminate stops running bots but keeps the durable disk, and the next session starts a fresh computer on it. Hibernation is not deletion.

xAI docs

Layers of persistence

  • The snapshot (memory + disk) makes waking fast and keeps running processes and logged-in browsers exactly as they were.
  • The durable disk, plus whatever the pre-sleep sync copies to cloud storage, survives even when a snapshot can't be used: updates, recreates and terminates. Which files are synced, and whether that cloud storage is simply the durable disk, isn't documented. Inferred
  • "Never mid-turn" means the control plane must know whether a turn is running. Temporal can tell it, since an open activity means the computer is in use. That link is our inference.
TakeawayThe computer only sleeps between turns, after files are flushed. What decides when (most likely the server's control plane) isn't documented.
14Inside

Inside the VM

Three nested layers, and a clear split between what survives and what doesn't.

Host machine (Cursor's cloud, US)Details unknown
Firecracker microVM · one per user · own kernel, memory, devicesxAI docs
Debian container, kept up by a supervisorTalk
Command runnerShell, files, screenshots, clicks
Talk
File serverFiles, app connections, live desktop
Talk
Screens + ChromeOne per active bot, via VNC
Talk Cursor eng
stdio MCP serversStarted on the computer
xAI docs
/workspace: shared by all of your botsxAI docs
ThingFateSource
Files under /workspacekept across sleep, updates, recoveryxAI docs
Browser sessions, loginskept on the durable diskxAI docs
Installed tools (between sleeps)kept in the snapshotTalk
Hand-installed packages, temp dirsreplaceable on update or recoveryxAI docs
Connector OAuth tokensnever on the VMxAI docs
Values typed in a secure secret requestkept out of the transcript and the model (supported connections only; passwords use screen takeover)xAI docs
Team Secretsgiven to setup scripts as environment variablesxAI docs
Env names PATH, HOME, SAND_*, LD_*reserved by the "computer runtime"xAI docs
sudoallowed by default; admins can turn it offxAI docs

Worth noticing

  • Bots share the whole computer: files, cookies, logins, command-line credentials. The docs call screens "separate work surfaces, not separate security boundaries".
  • The reserved SAND_ prefix hints at an in-house sandbox runtime that configures itself through environment variables. Nothing else about it is public.
TakeawayThe isolation boundary is the user, enforced by Firecracker. Inside a user's VM, everything is shared.
Part 4

Reliability

Where state lives, what each failure costs, and the security boundaries.

15State

Three kinds of state, kept apart on purpose

Cursor describes the agent loop, the machine and the conversation as three separate components. Each one can fail or be replaced without the other two noticing much.

Agent loop
Temporal workflow history
Holds
Where the task is, which activities finished, their results.
Survives
Server pods being replaced, EC2 nodes going down, inference outages.
Recovery
Replay the history on another worker and continue from the last completed step.
Cursor eng
Machine
VM snapshot + durable disk
Holds
Files, installed tools, browser logins, running processes.
Survives
Hibernation, pod replacement, image updates (files and most logins survive; running programs don't).
Recovery
Restore the snapshot, or start a fresh computer on the durable disk (plus whatever was synced to cloud storage before sleep).
Cursor eng Talk
Conversation
Append-only log + database
Holds
Messages and steps every app shows, plus memory and routines (and most likely skills).
Survives
Lost signals, app restarts, retried steps.
Recovery
Apps re-fetch in sequence order. If a step was re-run, the client rewinds its stream and shows the new data.
Cursor eng Talk

From Cursor's post

  • Because the loop lives in Temporal and not on the VM, they can manage pod lifecycles independently, including hibernating and resuming pods.
  • Helper agents can run on a completely different kind of pod and can outlive their parent.
TakeawayBecause the three are kept apart, the VM can sleep while the history and the log stay available, and any one of them can be replaced without losing the others.
16Failures

What happens when things fail

Each failure mode, what absorbs it, and where the evidence comes from. The amber row is the one we'd watch most closely if we built this.

FailureWhat happensSource
Server pod dies mid-turnTemporal hands the workflow to another worker. Completed activities aren't repeated, and the running one is retried.Cursor eng Talk
Model provider outageThe inference activity times out and retries under its own policy. The turn waits instead of failing.Cursor eng
VM pod replaced or crashesThe loop doesn't notice until the next tool call, which restores or rebuilds the computer.Cursor eng Inferred
A command ran, but the result was lostIf the server dies after the VM ran c42 and before Temporal recorded it, the activity retries and the command could run twice. The worker needs to de-duplicate by call ID, or the tool needs to be safe to repeat. The talk says steps are written to be idempotent, but not how.Talk Inferred
App misses a signalHarmless. The signal has no data, and apps fill gaps from the database by sequence number.Talk
A step is re-run after a retryThe client detects it, rewinds its stream and shows the new data.Cursor eng
Reset while the VM is unreachableIt rebuilds from the last saved data, so very recent changes can be lost.xAI docs
17Security

Security boundaries

Where the walls are, mapped onto the architecture.

Between users

Firecracker gives each user a separate kernel, memory and devices. One user can't reach another's computer.

xAI docs
Between bots

None. Bots "isolate personalities and workspaces, not compute." Give a workload its own Cursor user if it needs its own computer.

xAI docs
Before a risky action

A separate review model checks shell commands, app calls, computer use and delegation before they run. It can allow, ask you, or deny. Memory writes aren't reviewed.

xAI docs
Secrets

OAuth tokens stay on the server. For passwords, 2FA, CAPTCHAs and payments you take over the screen yourself. Secrets for supported connections go in a masked request, kept out of the transcript and away from the model.

xAI docs

Also documented

  • Network policy has three modes (allow all, defaults plus team allowlist, allowlist only). Traffic leaves through shared static egress IPs.
  • Auto Review covers work inside the hosted computer. Commands on your own laptop go through a separate approval policy.
  • Approval cards in a chat you're in wait for your answer. Cards from work started without you (a routine, a trigger, another Bot) expire after about ten minutes and don't run. The talk's slide said "no answer in 15 seconds means blocked"; the docs describe the ten-minute expiry.
  • Team Bots use a computer of their own for Slack channels and group chats, shared by those conversations, so anything posted there is visible to the channel. Their secrets are usable in every teammate's conversation.
  • Enterprise teams can record bot actions (including scrubbed shell commands) and export events over OpenTelemetry.
TakeawayWhere the review model runs isn't documented. It has to sit between the model's tool call and its execution, which is how it sees every risky action before anything happens.
Part 5

For our team

A sketch of how we'd build the same thing, and the questions nobody has answered publicly.

18SketchOur design

How we'd build it

A minimal version of the inferred design, in TypeScript with the Temporal SDK. It's here to make the moving parts concrete. We wrote it; it isn't based on anyone's real code.

workflow.ts · runs on server workers// One workflow per task. No I/O here: only decisions.
export async function agentTask(convId: string) {
  let inbox: Msg[] = [];
  setHandler(newMessage, (m) => { inbox.push(m); });

  const state = await loadState(convId);
  for (;;) {
    const step = await inference(state.prompt(inbox));
    inbox = [];
    if (step.kind === 'send_to_user') {
      await sendToUser(convId, step.message);
      // wait briefly for follow-ups, then exit
      if (!(await condition(() => inbox.length > 0, '2 minutes'))) return;
      continue;
    }
    const result = await toolCall({ convId, callId: step.callId,
                                    tool: step.tool, args: step.args });
    await saveStep(convId, step, result);  // append + signal apps
    state.add(step, result);
  }
}
activities.ts · the tool routerexport async function toolCall(c: ToolCall) {
  if (SERVER_TOOLS.has(c.tool)) return runOnServer(c);

  const vm = await controlPlane.state(c.userId);
  if (vm === 'asleep') {
    if (!WAKING_TOOLS.has(c.tool))
      return error('The computer is asleep. Use Shell ' +
                   'or Read to wake it, then try again.');
    await controlPlane.restore(c.userId);
  }
  // the worker reconnects after a restore
  const worker = await gateway.waitFor(c.userId, '60s');
  return worker.call(c.callId, c.tool, c.args);
}
worker.ts · runs inside the VM, started by the supervisor// Dials out, so the VM needs no inbound ports and survives restores.
for (;;) {
  const conn = await dialOut(GATEWAY_URL, { workerId: WORKER_ID });   // same ID after every restore
  for await (const call of conn.calls()) {
    // de-duplicate by call ID: Temporal may retry a call that already ran
    const result = (await doneLog.get(call.id)) ?? (await doneLog.put(call.id, await execute(call)));
    conn.reply(call.id, result);
  }
  // connection dropped (snapshot restored, network blip): loop and reconnect
}

Decisions this sketch forces

  • doneLog has to persist (on disk in the VM) or retries can repeat side effects after a restore.
  • Activity timeouts must cover a restore plus the command itself, or long commands need heartbeats.
  • The control plane must know when a turn is running, so it never snapshots mid-turn.
TakeawayThe loop itself is small. Most of the work is at the edges: reconnecting after a restore, de-duplicating retried calls, and deciding when it's safe to sleep.
19Open

Open questions

Things we looked for and didn't find. If anyone on the team can find out more, these are worth asking.

  • The worker protocolWebSocket, gRPC streaming or long-poll? How do the worker and the server authenticate each other?
  • Hosted vs. self-hostedDo hosted VMs run the same dial-out worker as self-hosted machines, or something else?
  • vsockDoes anything use Firecracker's host-to-guest socket instead of the network?
  • What "2 idle minutes" endsThe workflow? The worker's cache? A separate session process?
  • Call de-duplicationHow are retried tool calls kept from running twice inside the VM?
  • The SAND_ runtimeWhat is the "computer runtime" that reserves these environment variables?
  • Where policy is enforcedIs the network allowlist applied at the host or inside the VM?
  • File sync before sleepWhich files are synced to cloud storage before the computer sleeps, and is that the durable disk or a separate copy?
  • Where the review model runsOn the server next to the loop, or somewhere else? The docs don't say.
  • Attachments and secretsWhere are personal-Bot chat attachments and the values from secure secret requests stored? (Team Bot uploads land on the chat's computer.)
  • Web search and image generationServer-side tools, or something that runs on the computer?
  • Team Bot routingHow does a conversation get its computer and accounts? Is the Bot's own computer one per Bot or one per channel, and does it persist? Why do command-line MCP servers that need secrets only work in the owner's chat?
  • Where helpers runCursor says a computer-use helper shares the VM's Chrome and VNC, and that some helpers run on a different kind of pod. Which Grok Bot helpers run where isn't documented.
20Sources

Sources

Primary sources first. The talk itself isn't online as a transcript; the slides and our transcript are covered on the talk notes page.

  1. Grok Bot overview (xAI docs)
  2. Grok Bot: the computer and apps (xAI docs)
  3. Grok Bot security (Cursor docs)
  4. Grok Bot for Teams and Enterprise (Cursor docs)
  5. What we've learned building cloud agents (Cursor blog)
  6. Run cloud agents on machines you manage (Cursor blog)
  7. Self-hosted agents (Cursor docs)
  8. Bring your own machine (Cursor docs)
  9. Self-hosted machines help (Cursor help)
  10. Cursor agents can now control their own computers (Cursor blog)
  11. Bots (xAI docs)
  12. Team Bots (xAI docs)
  13. Settings and notifications (xAI docs)
  14. Teams and enterprises (xAI docs)
  15. Skills, routines and automations (xAI docs)
  16. Chat and collaboration (xAI docs)
  17. Approvals, security and privacy (xAI docs)
  18. Files and results (xAI docs)
  19. Grok Bot 101 (xAI guide)
  20. Grok Bot security FAQ (Cursor docs)
  21. Routines help (Cursor help)
  22. Grok Bot architecture explained (third party)
  23. A deep dive into Grok Bot (third party)
  24. Building always-on agents (third party summary of the talk)