Build Your Own Grok Bot With Core AI Models and Stream Chat

Multi-agent and human collaboration are becoming part of AI messaging tools. A platform like Buzz offers a unique space for agents and people to chat and collaborate on project management, coding, pull requests, and more. Slack Code, for instance, helps create code channels in Slack to support agent and human collaboration.
Grok Bot is another agentic platform where people can chat with a team of AI colleagues, each owning its own remote cloud computer.

This article will show you the technologies, AI frameworks, and Apple APIs required to create an iOS app similar to Grok Bot, with the underlying chat messaging infrastructure powered by Stream. The complete source code can be found on GitHub.
Note: The app in this article is a proof of concept and does not include all the features of Grok Bot, such as computer use, each bot having its own cloud computer, and more.
What is Needed To Build a Grok Bot Clone?

This tutorial uses the Apple Core AI framework to create the sample demo. The framework and its associated tools and APIs are new (introduced during WWDC26).
To test the demo hosted on GitHub or the one you will build after reading this article, ensure you have the following:
- Device Support: An iPhone or iPad supporting Apple Intelligence.
- Xcode 27 for testing.
- A coding agent subscription (Opus or Fable 5, GPT-5.6, and Grok 4.6 recommended).
- Stream account and agent skills to power the app with chat messaging features.
What is Grok Bot?
Grok Bot is a platform for a general-purpose, always-on team of AI agents, available on Android, iOS, and SuperGrok. Its interface is similar to iMessage and other popular messaging apps. However, its agents have memory, tools, computer-use capabilities, and access to their own cloud-based computers. The individual bots in Grok Bot are colleagues/teammates who can access and use the tools you use every day, such as the calendar, setting reminders, and more.

In Grok Bot, there is a chief of staff, a bot that has others reporting to it. The reporting bots can consist of an email manager, a booker/orderer, and a to-do list manager. The individual bots in the system can communicate with one another or directly with the chief of staff. They all run remotely on their own computers.
Grok Bot Use Cases
Grok Bot can be used in several application areas. You can build a bot to scan and sort emails to determine which to archive, reply to, and flag. This is useful for sorting out unimportant emails you do not want to read. In your calendar, you can use it to check for overlapping meetings and reschedule some. Even for agentic coding tasks, it can be configured to invoke the Cursor Agent CLI. In addition, below highlights some of its other use cases.
- Manage Expenses: Utilize the computer-use feature for expense filing use cases, such as handling receipts, reporting, and flagging.
- Outbound Sales: Connect LinkedIn and Salesforce for outbound sales.
- Engineering: Build features and push code changes to GitHub, both examples implemented by the Cursor engineering team.
- Account Management: Use Grok Bot to monitor a service's usage, open threads for issues, and manage subscription renewals.
- Automation: Automatically pull content, such as news, from different sources.
Key Features:
Grok Bot has several features you can bring to any project. There is a chief of staff bot that connects to external applications such as Telegram, Slack, email, and more, and hands off tasks to other bots. It supports tagging agents/bots in conversations to perform tasks, similar to how actual employees and teammates tag others in Slack. It can be customized with agent skills, instructions (what to do and not to do), and tools. The following also highlights some of its key features.
- Teach Bots to Learn: Teach the system to learn about specific actions and workflows. For example, the types of emails to archive or delete when received. You can even teach Grok Bot to mimic your writing. This is useful for drafting emails and writing articles that sound like you.
- Browser Use: Try the cloud-based browser-use feature to automate anything you do in the browser, like booking a flight or buying an item on Amazon.
- Connectors: Easily connect with external applications such as GitHub, GitLab, calendar, email, Slack, etc.
- Robust Permissions: Configure who or which agent has access to channels and message threads.
Build Grok Bot With Core AI for iOS/SwiftUI

The actual Grok Bot app for iOS does not support model selection, has no subagents like Hermes, no context window, and no thinking-level settings. It selects the best internal options for you rather than offering customization. The demo app, on the other hand, lets you choose from a set of ready-to-install Core AI models.
The following sections walk you through creating an iOS 27/SwiftUI app with Stream Chat integration and Core AI as the agentic framework.
Every Core AI model runs on-device with no inference server or network connection, except for chat message channels. When you launch the app, you can hire a bot, assign it some work in threads, monitor its progress, and approve its results. This might mean asking an agent for scheduling an appointment in a calendar or requesting it to perform an action. You can also teach a bot to do a specific task again and extend its capabilities with plugins. To mimic Grok Bot's computer use feature, StreamBot can call some apps on your iPhone (mail, contacts, reminders, and calendar) to execute an action via the plug-in marketplace in the app.
Jump to your favorite coding tool like Cursor, use a coding agent, install Stream CLI and Swift Skills, and prompt the agent to get started.
Specify a Prompt
Once you install the required agent skills in a chosen coding platform, you can specify in your prompt to use Apple's Core AI framework, appropriate on-device models from the following repos, and Foundation Model (Apple Intelligence) as default, to build the iOS/SwiftUI bot system. Referencing the /stream-cli and /stream-swift skills will seed the app with some randomly generated users/bots with different functions.

The two repos above contain a couple of open-source on-device models for vision, speech, language processing, and more. The following are those bundled to the sample project.
| Model | Bundle | Size | Notes |
|---|---|---|---|
| Apple Foundation Model | built in | - | SystemLanguageModel.default via FoundationModels. It supports guided generation and needs Apple Intelligence enabled. It can run inference on real devices and not the simulator |
| Qwen3.5 0.8B | qwen3_5_0_8b_decode_int8hu_perchan_sym |
1.3 GB | For faster responses |
| Qwen3.5 2B | qwen3_5_2b_decode_int8lin |
2.4 GB | For text generation but it can be slower than the 0.8B version |
| LFM2.5 1.2B | lfm2_5_1_2b_instruct_decode_int8lin |
1.2 GB | Liquid AI non-thinking instruct model for text generation |
| Granite 4.0-H 1B | granite_4_0_h_1b_decode_int8lin |
1.0 GB | IBM hybrid SSM (Mamba2 + attention) |
The complete project on GitHub includes nine seeded AI teammates and two others you can hire in the app and assign specific capabilities to.
How It Works
Bots in the demo app live in Stream's backend as ordinary chat users. They have access to tools, plug-ins, and custom instructions. The platform uses custom data for approval policy. From the Team tab of the app, you can hire new team members for any function, which creates a Stream user and a thread. When an agent performs a specific task, there is an option to teach it as a routine.
This can be done by long-pressing any message in a thread and selecting Teach as a Routine. The bot reads the conversation, distills it into a certain workflow with a trigger and an ordered step. Routines are stored on the device. The next time a prompt matches a stored routine, the selected bot retrieves and runs the taught steps. A routine can also be scheduled in the settings screen.
| Bot | Role | Lane | Runs | In Stream |
|---|---|---|---|---|
| Nova | Chief of Staff | Coordination | On its own | Seeded |
| Ada | Sales Outbound | Sales | Queues for review | Seeded |
| Ravi | Talent Scout | Recruiting | Queues for review | Seeded |
| Mira | Inbox Manager | Inbox | Never sends without you | Seeded |
| Otto | Expense Manager | Finance | Queues for review | Seeded |
| Juno | Invoice Collector | Finance | Queues for review | Seeded |
| Sable | Account Health | Customer Success | Queues for review | Seeded |
| Pike | Bug Reproduction | Engineering | On its own | Seeded |
| Vesper | Competitive Intel | Research | On its own | Seeded |
| Lumen | Paid Media | Growth | Queues for review | Hire from Team |
| Reed | Product Performance | Product | On its own | Hire from Team |
Configure Bots With Plug-Ins
Depending on the actions or work you want a bot to perform, configure it to access tools like the calendar, contacts, reminders, clock, and date. This can be done using the built-in plug-in support. A plug-in in the demo app consists of skills and sources (connectors) that a bot can read to set boundaries and shape its output.
The above video preview demonstrates two scenarios. The first part shows how to add an event to the iPhone calendar app. The second part instructs a bot in the demo app with a voice prompt to retrieve information about the event (iOS calendar app) stored for a specific date. Voice prompting is a built-in feature in the app, allowing users to prompt using speech. The underlying voice writing implementation uses the SpeechAnalyzer API and its SpeechTranscriber model. The following highlights the supported plug-ins in the demo app.
| Plug-in | Type | Role |
|---|---|---|
| Calendar | Connector + 2 skills | Reads calendar events for a day or a range through EventKit |
| Reminders | Connector + 1 skill | Reads open reminders and due dates |
| Contacts | Connector + 1 skill | Looks up contacts |
| Threads | Connector + 1 skill | Searches everything said in threads, via Stream SDKs' message search |
| Clock & Dates | Connector | Deals with date arithmetics |
| Meeting Notes | 1 skill | Handles decisions, owners, and open questions |
| Bug Reports | 1 skill | Handles all issues about bugs |
| Cold Outreach | 2 skills | Manage follow-ups |
| Weekly Review | 1 skill | Handle what has been changed, stuck, and what is next |
| Account Health | 1 skill | Checks all flags and rank them for sooner or later actions |
| Paid Media | 1 skill | Manages ad campaigns |
| Product Performance | 1 skill | Manages what has been moved, what it means, and more |
Limitations of the Local Grokbot
- Limited Tools: No browser or CRM. What a bot can reach depends on the assigned plugin, your calendar, reminders, contacts, threads, and clock.
- In-App Bot Tokens: Fine for demonstration purposes. A production build would mint them on the server or send bot messages from a backend.
- Scheduled Routines Are Not 24/7: They fire the next time the app is opened. There is no background agent computer.
- Limited to Small On-Device Models: Using large on-device Core AI models can result in high latency. The default Apple Foundation Model may not give you a satisfactory quality response. Pick Qwen-3.5 2B when high quality matters more than latency.
Build Grok Bot for Other Platforms
This article guided you through creating a Grok Bot-like app experience for iOS using local Core AI models and integrating the Stream Chat SwiftUI SDK. Check out the project files on GitHub and clone this repo to run and test the demo Grok Bot app in the directory AI/OwnGrokBot.
You can build a similar experience on our other SDK platforms, such as Android, Flutter, React, and React Native with an on-device AI framework like LiteRT. Refer to each platform's documentation to learn more.
