# AI use cases for Whirl (whirlchat/whirl)

Repo: [whirlchat/whirl](https://github.com/whirlchat/whirl) | Use cases: 4 | Page: https://dedupedai.com/use-cases/whirlchat-whirl/

Whirl is an open source, MIT licensed AI chat app built on Next.js and Convex that routes many models through OpenRouter, with memory, artifacts, and MCP tool integrations.

This file holds every use case of this repo. Each one starts with a "## " heading and ends with its URL.

- Run your own copy of the Whirl chat app: https://dedupedai.com/use-cases/whirlchat-whirl/self-host-whirl-chat-app/
- Give a team chat access to its own tools via MCP: https://dedupedai.com/use-cases/whirlchat-whirl/connect-team-tools-over-mcp/
- Keep sensitive chats locked on your device: https://dedupedai.com/use-cases/whirlchat-whirl/lock-private-chats-with-password/
- Run research chats with memory and live web search: https://dedupedai.com/use-cases/whirlchat-whirl/research-with-memory-and-live-web/

## How to run your own copy of the Whirl chat app with Whirl

Repo: [whirlchat/whirl](https://github.com/whirlchat/whirl) | Difficulty: Intermediate | Time: 60 minutes | Basis: From the README

Clone the repo, connect Convex, Clerk, and OpenRouter, and chat with models from your own deployment.

**Who it is for:** A developer who wants a private, self-run AI chat app and has the three required accounts ready.

**The problem:** Hosted chat apps keep your conversations and configuration on someone else's servers, and you cannot change how they work.

**The outcome:** A local Whirl instance at localhost:3000 where you can send messages to models through OpenRouter.

### Steps

1. Run `git clone https://github.com/whirlchat/whirl.git` and then `cd whirl`.
2. Run `bun install` from the repo root.
3. Run `cd packages/backend` then `bunx convex dev` and finish the first-run project setup.
4. In another terminal, run `bunx convex env set CLERK_JWT_ISSUER_DOMAIN https://your-instance.clerk.accounts.dev` and `bunx convex env set OPENROUTER_API_KEY sk-or-v1-...`.
5. Run `cd ../../apps/v2`, then `cp .env.example .env.local`, fill in the four required values, then run `cd ../..` and `bun run dev`.
6. Open localhost:3000 in a browser and send a test message.

### Prompt to paste into your agent

```text
In the whirlchat/whirl repo, follow the Quick start in the README to run the web app locally using my Convex, Clerk, and OpenRouter values in <placeholder-env-file>. Report the URL the app is serving on and whether a test message to a model returns a reply. Verify that bun run dev starts without errors before reporting success.
```

### Caveat

The README says the self-hosting guide covers the Clerk JWT template Convex needs, so read that guide before assuming the quick start alone is complete.

Risk, credentials: The setup asks you to store an OpenRouter API key and Clerk domain in Convex, so keep those values out of shared logs and commits.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/whirlchat-whirl/self-host-whirl-chat-app/

## How to give a team chat access to its own tools via MCP with Whirl

Repo: [whirlchat/whirl](https://github.com/whirlchat/whirl) | Difficulty: Advanced | Time: 120 minutes | Basis: From the README

Add MCP integrations, with OAuth, so Whirl can work with the tools your team already uses.

**Who it is for:** A team lead or developer who runs Whirl for a group and wants the assistant to reach internal tools.

**The problem:** A general chat model cannot see a team's internal tools, so answers stay generic and people copy data in by hand.

**The outcome:** Whirl connected to one or more of your own MCP tools, with OAuth sign-in where the tool requires it.

### Steps

1. Complete the self-host steps so the Whirl web app runs locally.
2. Start the admin console in apps/console, since the README says it manages integrations, and follow its setup notes. (inferred, check the README)
3. Add an MCP integration in the admin console and enter the tool details you want Whirl to use.
4. Complete the OAuth sign-in for that integration if the tool asks for it.
5. Open a new chat in Whirl and ask a question that needs that tool.

### Prompt to paste into your agent

```text
In the whirlchat/whirl repo, read the apps/console directory and the docs/configuration.md file, then describe how to add an MCP integration with OAuth for <target-tool>. Output the exact steps and any environment variables needed. Verify each claim against the README or docs before reporting.
```

### Caveat

The README names MCP and OAuth support but does not describe the admin console steps, so confirm the exact flow in the console before rolling it out.

Risk, credentials: OAuth connections give Whirl access to a team tool, so grant only the scopes the team needs and review who can add integrations.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/whirlchat-whirl/connect-team-tools-over-mcp/

## How to keep sensitive chats locked on your device with Whirl

Repo: [whirlchat/whirl](https://github.com/whirlchat/whirl) | Difficulty: Intermediate | Time: 60 minutes | Basis: From the README

Use locked chats so messages are encrypted on your device and answered only by zero-retention models.

**Who it is for:** A user or team member who discusses sensitive material and wants chats the server cannot read.

**The problem:** Standard chat history is stored on servers, so sensitive conversations stay exposed to whoever runs the backend.

**The outcome:** Chats that are encrypted on your device with a password the server never sees.

### Steps

1. Run the self-host steps and open Whirl at localhost:3000.
2. Start a new chat and choose the locked chat option in the app.
3. Set a password for the locked chat and keep it somewhere safe.
4. Send messages and confirm that the model answering is a zero-retention model.
5. Reopen the locked chat later and enter the password to read it.

### Prompt to paste into your agent

```text
In the whirlchat/whirl repo, read the README's Locked chats feature and the docs/architecture.md file, then explain how a locked chat is encrypted and which models answer it. Output a short summary with two cited facts. Verify that every claim appears in the README or docs.
```

### Caveat

The README does not describe password recovery, so assume a lost password may leave a locked chat unreadable until the README or docs say otherwise.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/whirlchat-whirl/lock-private-chats-with-password/

## How to run research chats with memory and live web search with Whirl

Repo: [whirlchat/whirl](https://github.com/whirlchat/whirl) | Difficulty: Intermediate | Time: 75 minutes | Basis: From the README

Enable web search, page reading, and long-term memory so answers use today's web and past context.

**Who it is for:** A researcher or analyst who asks repeat questions over days and needs current sources in each answer.

**The problem:** A chat model answers from old training data and forgets your projects between sessions, so you repeat context and check sources by hand.

**The outcome:** Answers grounded in live web results, plus preferences and projects remembered across chats.

### Steps

1. Complete the self-host steps and confirm the app runs at localhost:3000.
2. Open docs/configuration.md and find the keys for web search (Exa) and memory (Supermemory).
3. Add those keys to your Convex deployment using the same env set command pattern from the quick start.
4. Start a chat, ask a question that needs current information, and confirm sources appear.
5. Tell Whirl a project preference in one chat and check that it is recalled in a new chat.

### Prompt to paste into your agent

```text
In the whirlchat/whirl repo, open docs/configuration.md and list the exact environment variable names for Exa and Supermemory. Output them as a table with the feature each one enables. Verify each name against the file before reporting.
```

### Caveat

The README says these features are hidden until their keys are set, so a missing key will make search or memory appear absent rather than fail loudly.

Risk, credentials: Exa and Supermemory each need their own API key, so store those keys in Convex env settings and not in client code.

Disclaimer: Third-party repos we don't own or vouch for. AI-generated use cases can be wrong: review everything and run at your own risk. Full text: https://dedupedai.com/disclaimer/

URL: https://dedupedai.com/use-cases/whirlchat-whirl/research-with-memory-and-live-web/
