This document contains a publicly accessible product knowledge map in a structured text format designed for consumption by Large Language Models (LLMs)
## 1. Overview
**Product Name:** TypingMind
**Tagline:** Your Personal AI Workspace
**Core Value Proposition:** TypingMind is a comprehensive AI chat platform designed to enhance the user experience when interacting with various Large Language Models (LLMs). It provides a unified interface for accessing and managing multiple AI models like ChatGPT, Gemini, Claude, and even custom models, using the user's own API keys. TypingMind aims to overcome the limitations of the standard AI model interfaces by offering advanced features, customization options, and organizational tools, allowing users to maximize their productivity and creativity. It also positions itself as a platform to build internal AI platform easily.
**Target User:** AI enthusiasts, developers, researchers, content creators, business professionals, and teams who frequently work with LLMs. It caters to individuals and organizations seeking a more efficient, customizable, and collaborative AI experience. Specifically, it targets those who:
- Want to access multiple AI models from a single platform.
- Require advanced features beyond the basic AI model interfaces.
- Need robust tools for managing and organizing their AI conversations.
- Desire greater control over the AI's behavior and output through customization options.
- Seek to collaborate with teams on AI-powered projects.
- Prioritize data privacy and security by using locally stored data.
- Want to build internal AI platform for their company.
**Key Benefits:**
- **Centralized AI Access:** Eliminates the need to switch between different AI platforms by providing a single interface for multiple models (GPT-4, Gemini, Claude, and custom models).
- **Enhanced User Experience:** Offers a streamlined and intuitive user experience with advanced features that go beyond the capabilities of standard AI model interfaces.
- **Cost Control:** Empowers users to manage their AI costs by connecting their own API keys and paying directly to the AI providers, avoiding additional fees or usage limits imposed by TypingMind.
- **Advanced Customization:** Provides extensive customization options, including custom system instructions, model parameters, and the ability to create and personalize AI agents.
- **Robust Organization:** Includes powerful tools for managing chats, such as search functionality, folder organization, tagging systems, and data export options.
- **Seamless Collaboration:** Facilitates teamwork with features like shared licenses (TypingMind for Teams), allowing teams to collaborate on AI-driven projects and build custom AI portals.
- **Extensive Extensibility:** Supports a wide range of plugins that extend the platform's functionality, enabling tasks like web search, image generation, and integration with other applications.
- **Prioritized Privacy and Security:** Ensures data privacy by storing data locally on the user's device by default, with optional cloud sync and backup for added convenience.
## 2. Key Features
Here's an in-depth look at TypingMind's features:
- **Multi AI Chat Models:**
- Supports a diverse range of LLMs, including:
- GPT-4 (and its variants)
- Gemini
- Claude
- Open-source LLMs
- Custom models (allowing users to connect their own fine-tuned models)
- Enables seamless switching between models within the same chat interface.
- Allows users to compare the performance of different models on the same task.
- **No Monthly Fee, No Usage Limit:**
- Users connect their own API keys from AI providers like OpenAI, Google AI, and Anthropic.
- TypingMind does not impose any monthly fees or usage limits on the platform itself.
- Users pay only for the AI usage consumed through their API keys, providing greater cost control.
- **Easily Manage All Chats:**
- **Search:** Powerful search functionality to quickly find specific conversations or information within chats.
- **Folders:** Create and organize chats into folders for easy access and categorization.
- **Tags:** Add tags to chats for enhanced organization and filtering.
- **Export:** Export chat data in various formats (e.g., text, JSON) for analysis or archival.
- **Pin Favorite Chats:** Pin important chats for quick access.
- **Edit & Fork Conversations:** Edit existing conversation or fork it to create a new one.
- **Create a new chat thread** When you regenerate or edit a message, the app preserves the original conversation along with the new prompt and response, creating a separate thread for each version. You can easily switch back and forth among versions, view each message thread independently, and continue the conversation based on any version you choose.
- **AI Agents, Prompt Library:**
- Provides a collection of pre-built AI agents designed for specific tasks or domains.
- Includes a library of community-contributed prompts that can be used to guide the AI's responses.
- Allows users to create, customize, and manage their own AI agents with specific instructions, prompts, and training data.
- **Text-to-Speech, Voice Input:**
- Enables voice input for hands-free interaction with AI.
- Supports multi-language text-to-speech for receiving AI responses in various languages.
- Offers customizable voice options and settings.
- **Web Search, Vision, DALL-E:**
- Integrates web search functionality to access real-time information from the internet within the chat interface.
- Supports image analysis through AI vision capabilities, allowing the AI to understand and respond to images.
- Enables image generation using DALL-E, allowing users to create images from text descriptions.
- **Control Parameters:**
- Allows users to adjust key AI model parameters, such as:
- Temperature (influences the randomness of the AI's responses)
- Streaming (enables real-time streaming of AI responses)
- Provides granular control over the AI's behavior and output.
- **Use Unlimited Plugins:**
- Supports a wide range of plugins that extend the platform's functionality.
- Allows users to explore and install plugins from a plugin marketplace (coming soon).
- Enables users to build their own custom plugins to integrate with other applications or services.
- **Upload Documents:**
- Allows users to upload documents (e.g., PDF, DOCX) and ask the AI questions about their content.
- Enables the AI to extract information, summarize, or analyze the uploaded documents.
- **Control Context Limit:**
- Allows users to define the amount of conversation history that the AI remembers.
- Helps to manage token usage and improve the AI's performance by limiting the context window.
- **Dynamic Context via API (New):**
- Enables users to integrate live data from external APIs or their own data sources (using Retrieval-Augmented Generation or RAG) into the AI conversations.
- Allows the AI to access and utilize real-time information to provide more relevant and accurate responses.
- **Chats Sync and Backup:**
- Automatically syncs chat data across multiple devices.
- Provides secure cloud backup to prevent data loss.
- **Hotkey & Shortcuts:**
- Allows users to customize hotkeys for common actions.
- Offers keyboard shortcuts for efficient navigation and command execution.
- **Beautiful Light/Dark Mode:**
- Provides both light and dark themes for user preference.
- Offers a visually appealing and customizable user interface.
- **Personalized AI Agents:**
- Train the AI on your own instructions, prompts, and training examples.
- **Fetch Live Data:**
- Let AI fetch content from APIs or implement RAG to get information from your own data sources.
- **Speak with its own voice:**
- Assign a voice to each AI agent with multi-language support.
- **Use multiple plugins:**
- Enable any plugins for the AI such as Web Search, DALL-E 3, and more.
- **Mention other AI agents in the chat:**
- Call other AI agents for help in the same conversation.
## 3. Additional Details
**Model Configuration:**
- **Custom System Instruction:** Set specific instructions for the AI model to follow in every conversation.
- **Custom Model Parameters:** Fine-tune the model's behavior with parameters like temperature, top_p, etc.
- **Custom Endpoint & Proxy:** Use your own custom API endpoints or proxy servers.
**Chat Experience:**
- **Language Output Control:** Control the language of the AI's output.
- **Multi-Conversations in Parallel:** Engage in multiple conversations simultaneously.
- **Dynamic Context Limit:** Control how much of the conversation the AI remembers.
**Chat Management:**
- **Edit & Fork Conversations:** Modify existing conversations or create new ones based on previous interactions.
- **Create a new chat thread** When you regenerate or edit a message, the app preserves the original conversation along with the new prompt and response, creating a separate thread for each version. You can easily switch back and forth among versions, view each message thread independently, and continue the conversation based on any version you choose.
- **Pin Favorite Chats:** Keep important conversations easily accessible.
- **Migrate from OpenAI ChatGPT:** Import your chat history from OpenAI.
**User Interface:**
- **Wide Screen Support:** Optimized for use on wide screens.
- **Custom Avatar:** Customize your avatar within the platform.
- **Sound Notification:** Receive sound notifications for new messages.
**Security and Privacy:**
- **Private By Default:** Data stored locally on your device.
- **API Key Encryption With Password:** Secure your API keys with a password.
- **API Tokens Cost Estimation:** Estimate the cost of your API token usage.
**Integrations:**
- **MacOS App (PWA):** Progressive Web App for macOS.
- **Web Search & Live Data:** Access real-time information from the web.
- **Search Keyword Suggestions:** Get suggestions for search keywords.
- **Domain Check Integration:** Integrate with domain checking services.
- **CodePen Integration:** Integrate with CodePen.
## 4. Plugins
TypingMind offers a variety of plugins to extend its functionality:
- **Web Search:** Search the internet using Google Search.
- **Perplexity Search:** Search for information from the internet using Perplexity.
- **DALL-E 3:** Generate images using DALL-E 3 based on image descriptions.
- **Stable Diffusion v3 Image:** Generate images using Stable Diffusion v3 based on a text description.
- **Image Search:** Search for images from the internet using Google Search.
- **Interactive Canvas:** Render an interactive canvas with HTML source to the user interface.
- **Web Page Reader:** Read the content of a web page via its URL.
- **Any Custom Plugins:** Create your plugins such as Azure AI Search, Sound Effect Generator, and more.
## 5. Pricing
TypingMind offers a lifetime license with three tiers:
- **Standard:** $39 (Basic Features, Unlock AI Agents, Voice Input, Share Chats, Remove Ads/Popups)
- **Extended:** $79 (Image Generation, Web Search, Text-to-Speech / Vision / Images, Upload Documents)
- **Premium:** $99 (Unlimited Plugins, Project Folders, Artifacts, Canvas Editor, Free Updates)
There is also a "TypingMind for Teams" option for building custom AI chat portals for teams.
## 6. Security
- **Data stored locally by default**: Your data remains securely stored on your device. There's no training conducted on your chats.
- **Optional Cloud Sync & Backup**: Allow your data sync across multiple devices and prevent unexpected data loss. Activation is fully optional.
### 1. Overall Layout
The TypingMind interface is divided into two main sections: a sidebar on the left and a main content area on the right. The design appears clean and modern, utilizing a light color scheme.
### 2. Left Sidebar
- **Top Section:**
- **App Title/Logo:** Absent in this view, but typically located at the top.
- **"Chat" Button (Selected):** Indicates the user is currently in the Chat view. The icon appears to be a speech bubble. The button is highlighted in blue indicating it's active.
- **"New Chat" Button:** A button with a speech bubble icon and the text "New Chat". Presumably, this starts a new conversation.
- **User Profile Icon:** A circular icon representing the user's profile, potentially with an avatar image.
- **Search Bar:** Located below the buttons, a search bar with the placeholder text "Search chats" and a magnifying glass icon. This allows users to search through their existing conversations.
- **Chat Management Tools:** To the right of the Search bar are icons suggestive of chat management functions:
- Create Folder
- Sort
- Filter
- **Navigation Menu (Icons):** A vertical menu of icons is placed on the far left of the sidebar, providing access to different sections of the application:
- **Chat (Selected):** (As above)
- **Agents:** Navigates to AI Agent Management.
- **Prompts:** Navigates to the Prompt Library.
- **Plugins:** Navigates to the Plugin Marketplace/Management.
- **Models:** Navigates to model management
- **KB:** Navigates to Knowledge Base management.
- **Teams:** Navigates to team management features
- **Settings:** Navigates to the application settings.
- **Chat List:** Occupies the majority of the sidebar space. It displays a list of recent chats and chat folders.
- **Folders:** Categorized chats within folders, with the folder name and the number of chats inside in parentheses.
- **Individual Chats:** Displayed with:
- **AI Avatar:** An icon indicating an AI agent or a default avatar.
- **Chat Title:** A descriptive title for the conversation.
- **Preview Text:** A snippet of the most recent message in the chat.
- **Timestamp:** Indicates how long ago the last message was sent (e.g., "42m", "2d", "3d", "4d").
- **Folder and Chat Actions:** To the right of each folder and some of the individual chats, "+" (add to folder), a pencil icon (edit), and a trash can icon (delete).
- **Bottom Section:**
- The user's avatar is shown.
### 3. Main Content Area (Right Side)
- **Top Bar:**
- **Back Arrow:** Navigates back to the chat list (only visible when a chat is open).
- **Chat-Specific Action Icons (Left to Right):**
- **Minimap:** Toggles a minimap view of the conversation. Icon looks like search icon. This also allows you to search a specific message within a chat.
- **Share:** Opens the chat sharing options popup. Icon is a standard share symbol.
- **Reset Chat (⌘⇧R):** Clears the current chat history. Icon is often a refresh or circular arrow. Tooltip shows the keyboard shortcut.
- **Clear Context (⌘⇧J):** Resets the AI's memory without deleting messages. Icon might be a broom or eraser. Tooltip shows the keyboard shortcut.
- **Cost Indicator:** Shows the estimated cost for the current session (e.g., "$0.0016").
- **Profile Icon (Top Right):** Displays the current user's profile icon/avatar, likely providing access to profile switching or settings.
- **More Actions (Three Dots Icon - Top Right):** --> Opens a dropdown menu containing additional chat-level actions:
- **Minimap:** (Duplicate access) Toggles the minimap view.
- **Share (⌘S):** (Duplicate access) Opens sharing options. Includes pin/unpin action button (bell icon).
- **Reset chat (⌘⇧R):** (Duplicate access) Clears chat history. Includes pin/unpin action button (bell icon).
- **Clear context (⌘⇧J):** (Duplicate access) Resets AI memory. Includes pin/unpin action button (bell icon).
- **About this chat:** Opens the Chat Info dialog (showing tokens, model, timestamps, etc.). Includes pin/unpin action button (bell icon).
- **Pin/Unpin Action Buttons (Bell Icons):** Small bell icons next to each action in the dropdown allow pinning/unpinning these specific actions to/from the main top bar for quicker access.
- **Chat Message Display Area:** Shows the conversation history between the user and the AI.
- **Model and Plugin Selection Bar (Above Input Field):**
- **Model Selector:** Dropdown to choose the active AI model(s).
- **Plugin Selector:** Button/indicator to manage enabled plugins for the chat.
- **Input Area:**
- **Placeholder Text:** Guides user input (e.g., "Press "/" to focus input").
- **Input Field:** Where the user types their message. Live token count displayed nearby.
- **Input Action Buttons (Below Input Field):** Icons for Quick access (Prompt Library, AI Agents list, Output Settings, Knowledge Base toggle, Thinking Mode Toggle - on the left, on the right, there are Attachment, Voice Input.
- **Chat Composition Actions (Right of Input Field):**
- **New chat:** Button to start a new conversation. Often includes a "+" icon.
- **Regenerate:** Button (often blue) to request a new response from the AI for the last user prompt.
### 4. General Observations
- The UI maintains a clean, two-column layout.
- Core chat functionalities (model/plugin selection, input actions) are grouped near the message input area.
- Chat-level management actions (Share, Reset, Clear Context, Minimap, Info) are now consolidated in the top bar, accessible via direct icons or the "More Actions" menu.
- The top bar allows customization by pinning/unpinning frequently used actions.
### Chat Features
### Top Bar Chat Actions
- **Placement:** Located in the top bar of the main chat area.
- **Purpose:** Provides quick access to chat-level management and information actions.
- **Direct Icons (Default):**
- **Minimap:**
- **Icon:** Stacked lines/paragraphs.
- **Function:** Toggles a condensed visual overview of the chat conversation, often displayed in a sidebar or popup, allowing for quick navigation through long chats. Tooltip: "Minimap".
- **Share:**
- **Icon:** Standard share symbol (e.g., arrow pointing out of a box).
- **Function:** Opens the sharing options dialog (Secret Link, Text, JSON, HTML, Print/PDF). Tooltip: "Share (⌘S)".
- **Reset Chat:**
- **Icon:** Refresh/circular arrow.
- **Function:** Clears the entire chat history for the current session. Confirmation might be required. Tooltip: "Reset chat (⌘⇧R)".
- **Clear Context:**
- **Icon:** Broom or eraser symbol.
- **Function:** Resets the AI's contextual memory without deleting the visual chat history. Tooltip: "Clear context (⌘⇧J)".
- **More Actions Menu (Three Dots Icon):**
- **Function:** Opens a dropdown menu containing additional actions and the ability to pin/unpin actions to the main top bar.
- **Menu Items:**
- **Minimap:** (Duplicate access). Includes a pin/unpin bell icon.
- **Share (⌘S):** (Duplicate access). Includes a pin/unpin bell icon.
- **Reset chat (⌘⇧R):** (Duplicate access). Includes a pin/unpin bell icon.
- **Clear context (⌘⇧J):** (Duplicate access). Includes a pin/unpin bell icon.
- **About this chat:**
- **Icon:** Information symbol (i) or speech bubble with 'i'.
- **Function:** Opens the "Chat Info" dialog which displays details like the model used, total tokens consumed (input/output), estimated cost, creation date, last updated date, message count, and potentially prompt caching status.
- Includes a pin/unpin bell icon.
- **Pin/Unpin Action Buttons (Bell Icons):**
- **Function:** Clicking the bell icon next to an action in the dropdown menu toggles its visibility as a direct icon in the main top bar. Pinned actions appear directly in the top bar; unpinned actions are only accessible via the dropdown.
### Model and Plugin Selection Bar
- **Placement:** Directly above the message input field.
- **Components:** Model Selector dropdown, Plugin Selector button/indicator.
- **Functionality:** Select AI model(s), manage enabled plugins for the current chat session. (See previous description for popup details).
### Message Input Field
- **Purpose:** Primary area for composing prompts.
- **Placeholder Text:** Guides user (e.g., `Type "@" to mention an AI agent`).
- **Live Token Count:** Dynamically shows token usage for the composed message.
- **Send/Stop Button:** Submits the message or interrupts AI generation.
### Input Action Buttons (Below Input Field)
- **Prompt Library:** Access pre-saved prompts.
- **Output Settings:** Control AI response format, tone, style, language.
- **Attachment:** Upload files (PDF, DOCX, images, etc.).
- **Microphone (Voice Input):** Dictate messages.
- **Thinking Mode Toggle (Conditional):** Toggle visibility of AI reasoning steps for supported models.
### AI Agent Mention (@ Functionality)
- **Activation:** Typing "@" in the input field.
- **Selection:** Popup lists available AI Agents.
- **Insertion:** Adds agent tag (e.g., `@[Agent Name]`) to use the agent for the message.
### Message Display (User and AI)
- Visually distinct bubbles, avatars, timestamps.
### Message Actions (Hover Actions)
- **Access:** Appear on mouse hover over a message.
- **Actions:** Edit (user message), Edit in Canvas (AI message), Copy, Play (TTS), More Options (Pin, Delete, Show raw, Fork chat).
### Pinned Messages Functionality
- **Access:** Via a pin icon (likely consolidated in the top bar or its menus).
- **Dialog:** Lists pinned messages with an option to unpin.
### Chat Composition Actions (Right of Input Field)
- **Placement:** Located to the right of the message input field.
- **Purpose:** Actions directly related to starting new chats or regenerating the last response.
- **Components:**
- **New chat:**
- **Icon:** Often a "+" sign.
- **Function:** Initiates a completely new and independent chat session.
- **Regenerate:**
- **Icon/Button:** Often a prominent blue button.
- **Function:** Instructs the AI to generate a new response to the *user's last message*.
## Chat Thread Feature
**1. Definition and Purpose:**
The Chat Thread feature allows users to view, switch between, and continue chatting with multiple different *versions* or *branches* of a conversation *within the same chat session*. It is designed to handle variations created when a user edits their own message or regenerates an AI's response, preserving the history of these changes without creating separate chat entries in the sidebar.
**2. Core Functionality:**
- **Non-Destructive Editing/Regeneration:** When a user edits their message and sends the replacement, or when they regenerate an AI's response, the system automatically saves this new interaction as a *new version* or *thread* branching off from the point of change.
- **Preservation of Originals:** The original message (user or AI) and the subsequent conversation flow are preserved as a distinct thread.
- **In-Chat Navigation:** Users can navigate between these different versions directly within the chat interface using dedicated controls that appear below the modified message.
- **Context Preservation:** Each thread maintains the conversation history *up to the point* where the edit or regeneration occurred. Subsequent messages within a specific thread build upon that thread's unique history.
- **Independent Continuation:** Users can select any version/thread and continue the conversation from that point. New messages will be added to the currently selected thread.
**3. Key Use Cases & Benefits:**
- **Preserve Ideas:** Never lose previous prompts or AI responses when iterating or refining.
- **Explore Different Directions:** Test various prompts, tones, or instructions stemming from the same conversational point without creating multiple separate chats.
- **Compare Versions Easily:** Quickly switch between edited prompts or regenerated AI responses to see how changes impact the output.
- **Flexible Continuation:** Choose the most promising branch or version to continue the conversation from.
- **Better Organization:** Keep related explorations and variations contained within a single chat session, reducing clutter in the chat list compared to forking.
- **Specific Scenarios:** Useful for content writing (drafting variations), problem-solving (testing approaches), coding (comparing generated snippets), learning (seeing how rephrasing affects AI), and decision-making (comparing brainstormed options).
**4. How to Use Chat Threads:**
**a. Triggering a New Thread - Edit a user message:**
1. **Hover:** Place the mouse cursor over a previous *user* message bubble.
2. **Click Edit Icon:** Click the "Edit" icon (pencil symbol) that appears in the message actions.
3. **Modify Prompt:** The original message text appears in the input area below the chat. Edit the prompt as desired.
4. **Click Replace:** Click the "Replace" button (which acts as the send button in edit mode).
5. **New Thread Created:** The edited user message appears in the chat history. A version indicator (e.g., `< 2/2 >`) and navigation arrows (`←`, `→`) appear directly *below* this edited user message. The AI will then generate a response based on this *new* edited prompt, forming the start of the new thread.
**b. Triggering a New Thread - regenerate AI response:**
1. **Hover:** Place the mouse cursor over a previous *AI* message bubble.
2. **Click Regenerate Icon:** Click the "Regenerate" icon (circular arrow) that appears in the message actions OR click the main "Regenerate" button located next to the chat input area (this regenerates the *last* AI response).
3. **New Thread Created:** The AI generates a new response. A version indicator (e.g., `< 2/2 >`) and navigation arrows (`←`, `→`) appear directly *below* this regenerated *AI message*. The previous AI response becomes version 1, and the new one becomes version 2.
**c. Navigating Between Threads/Versions:**
1. **Locate Controls:** Find the version indicator (`< X/Y >`) and navigation arrows (`←`, `→`) below the message that was edited or regenerated.
2. **Click Arrows:**
- Click the left arrow (`←`) to view the *previous* version/thread.
- Click the right arrow (`→`) to view the *next* version/thread.
3. **Dynamic Update:** As you navigate, the chat display updates dynamically to show the selected version of the message and the subsequent messages *belonging to that specific thread*.
**d. Continuing a Conversation on a Specific Thread:**
1. **Navigate:** Use the arrows to select the desired version/thread.
2. **Type New Message:** Enter your next prompt in the main chat input area.
3. **Send:** Send the message.
4. **Branch Continuation:** The new user message and subsequent AI responses will be appended to the *currently selected thread*.
**5. User Interface Elements:**
- **Version Indicator:** Displayed as `< X/Y >` below the edited/regenerated message, where `X` is the current version number and `Y` is the total number of versions for that specific message point.
- **Navigation Arrows:** Left (`←`) and Right (`→`) arrow icons flanking the version indicator, used for switching between versions.
**6. Comparison: Chat Thread vs. Fork Chat:**
- **Chat Thread:**
- **Scope:** Creates variations *within the same chat session*.
- **Trigger:** Implicitly created by *editing* a user message or *regenerating* an AI response.
- **Structure:** Creates parallel branches linked to a specific message point. Navigated via inline controls (`←`/`→`).
- **Outcome:** Keeps related iterations and explorations tightly coupled within one chat window. Ideal for refining prompts/responses or exploring minor variations. Non-destructive.
- **Sidebar:** Does *not* create a new entry in the sidebar chat list.
- **Fork Chat:**
- **Scope:** Creates a completely *new, independent chat session*.
- **Trigger:** Explicitly triggered by the user selecting the "Fork Chat" action on a specific message (user or AI).
- **Structure:** Duplicates the entire conversation history *up to the point of forking* into a separate chat.
- **Outcome:** Creates a distinct copy of the conversation for taking it in a significantly different direction, preserving a snapshot, or creating a clean starting point based on a previous state.
- **Sidebar:** Creates a *new chat entry* in the sidebar list.
**7. FAQs (Based on provided text):**
- **Q: Does editing delete the original message?**
- **A:** No. Editing creates a new version/thread while preserving the original.
- **Q: Can I continue conversations from different versions?**
- **A:** Yes. Each version acts as an independent starting point for continuing the conversation.
- **Q: How many versions can I have?**
- **A:** There isn't a strict limit imposed by the feature itself for most users. However, very old or inactive branches *might* be subject to archiving in the future depending on system implementation (this needs confirmation on exact behavior).
## Multi AI Response Feature
The Multi AI Response feature allows users to send a single prompt to multiple selected AI models simultaneously and view their responses side-by-side within the chat interface. This enables direct comparison of different models' outputs for the same input, helping users choose the best response or understand the variations in model capabilities.
### Activating Multi-Model Mode
1. **Access Model Selection:** Click on the currently selected model's name/icon in the **Model and Plugin Selection Bar** located *above the message input field*. This opens the model selection popup.
2. **Enable Multi-Model Selection:** Locate the model(s) you wish to add to the current chat session from the list within the popup. Hover over the "+" (plus) icon located to the right of the desired model's name. A tooltip appears with the text "Activate multi-model".
3. **Add Models:** Click the "+" icon for each additional model you want to include.
- Each time a model is added via the "+" icon, the model selection popup closes automatically.
- The **Model and Plugin Selection Bar** (above the input field) updates immediately to display the icons of *all* currently selected models horizontally.
- The top bar of the main chat area also updates to show the icons of the selected models.
- The context message count (e.g., "+4") remains visible, likely in the top bar or near the model icons in the selection bar.
### Managing Selected Models in Multi-Model Mode
1. **View Selected Models:** Click on the area in the **Model and Plugin Selection Bar** where the selected model icons are displayed. This re-opens the model selection popup.
2. **Selected Models List:** The top section of the popup now lists the models currently active for the multi-response session.
- Each selected model is displayed with its icon and name.
- An "x" (cross) icon appears to the right of each selected model's name.
3. **Removing Models:** Click the "x" icon next to a model's name within the popup to remove it from the multi-response session for the *current chat*.
- The model is immediately removed from the selected list at the top of the popup.
- The **Model and Plugin Selection Bar** updates instantly to remove the icon of the deselected model. The top bar display also updates.
- Removing the second-to-last model reverts the interface back to single-model mode.
### Multi-Response Chat Interface
When a user sends a prompt while multiple models are selected:
1. **User Prompt Display:** The user's prompt is displayed at the top of the main chat area as usual.
2. **"Select primary response" Section:** Below the user's prompt, a dedicated section appears for managing the multiple responses:
- **Label:** The text "Select primary response" is displayed.
- **Dropdown Arrow:** A small dropdown arrow appears next to the label.
- **Model Icons:** Icons representing all the selected models for this session are displayed horizontally below the label. These icons likely correspond to the order of the response cards below.
3. **Response Containers:** Below the model icons, the chat area splits into separate containers or cards, one for each selected model.
- **Layout:** The cards are arranged horizontally or vertically depending on screen space.
- **Card Content (Initial State):**
- **Model Identification:** Each card clearly displays the icon and name of the corresponding AI model (e.g., "GPT-4o", "O3")
- **Loading Indicator:** Initially, each card shows a loading state (e.g., "Assistant is thinking...", pulsing animation).
- **Card Content (Completed State - Success):**
- The loading indicator disappears.
- The AI's generated text response is displayed within the card.
- If the model supports Thinking Mode, the thinking bubble may appear *within* the card before the final response.
- **Card Content (Completed State - Error):**
- An error message is displayed instead of a response (e.g., API key issue, quota exceeded). Error text is often red.
4. **Simultaneous Generation:** All selected models process the prompt and generate responses concurrently. Cards update independently.
### Interacting with Response Cards
Once responses (or errors) are displayed in the cards:
1. **Hover Actions:** Hovering over a response card reveals action icons (typically top-right):
- **Set as Primary Response (✓):** Checkmark icon. Tooltip: "Set as primary response".
- **Delete Response (🗑️):** Trash can icon. Tooltip: "Delete response" or similar.
2. **Selecting the Primary Response:**
- Click the checkmark (✓) on the desired response card.
- **Interface Collapse:** The multi-response view collapses.
- **Chat View Update:** The chat returns to standard single-response view, showing only the user's prompt and the *selected primary* AI response.
3. **Deleting a Response:**
- Click the trash can (🗑️) on a card to remove that specific model's response from the current multi-response view.
### Considerations
- **Token Consumption:** Using multiple models consumes tokens for *each* model, increasing costs.
- **Error Handling:** Individual model errors are contained within their cards.
### Notes
- **Chat Info:** In multi-model responses, the chat info popup shows context length based on the *selected primary* response, but the total token cost reflects the combined usage of *all* models activated for that prompt.
- **Feature Limitations:** Editing messages, pinning messages, and using the Canvas Editor might be disabled while in the multi-response view (before a primary response is selected).
### Sidebar Features
The sidebar in TypingMind provides the primary navigation and chat management tools. Here's a breakdown of each feature:
### The Workspace Bar
- **Placement:** Located at the left edge of the app as a long narrow workspace navigation.
- **Function:** Allow the user to switch between the main tabs of the app, including “Chat”, “Agents”, “Prompts”, “Plugins”, etc.
### "Chat" tab
- **Icon:** A speech bubble icon.
- **State:** Highlighted (in blue in the screenshot), indicating the active view.
- **Function:** Confirms that the user is currently viewing the chat interface. Clicking it again will refresh the chat interface.
### "New Chat" Button
- **Icon:** A speech bubble icon with a "+" sign.
- **Text:** "New Chat"
- **Function:** Initiates a new, blank chat session.
- When clicked, a new chat is created and added to the chat list.
- The main content area switches to the new chat, ready for user input.
### User Profile Icon
- **Shape:** Circular.
- **Content:** Displays the user's avatar or profile image. If no image is set, it may show default initials or a generic user icon.
- **Function:** Clicking this icon typically opens a user profile menu or settings panel, allowing users to:
- Manage their account information.
- Change their profile picture.
- Access application settings.
- Log out.
### Search Bar
- **Placeholder Text:** "Search chats"
- **Icon:** A magnifying glass icon.
- **Function:** Enables users to search through their existing chat conversations.
- Typing in the search bar and pressing "Enter" filters the chat list to display only conversations that match the search query.
- The search considers chat titles and message content.
- A clear "x" button appear to clear the search.
- The search results are displayed dynamically.
### Chat Management Tools
These icons are located to the right of the Search bar, offering quick access to organizational features:
- **Create Folder:**
- **Icon:** A folder icon with a "+" sign.
- **Function:** Allows users to create new folders or folders within folders to organize their chats.
- Clicking the icon opens a small input field where the user can type the name of the new folder.
- After entering the name and pressing "Enter" (or clicking a "Save" button), the new folder is created and added to the chat list.
- **Sort:**
- **Icon:** An icon with 3 horizontal line, sorted.
- **Function:** Allows users to sort chats with several options
- Clicking the icon opens a popup where the user can choose the sort by options
- **Recent Chats First:** Sort the list of chats with the latest updated chats on top.
- **Oldest Chats First:** Sort the list of chats with the oldest chats on top.
- **Title A to Z:** Sort chats alphabetically with A on top.
- **Title Z to A:** Sort chats alphabetically with Z on top.
- **Reset** button: Reset the settings
- **Cancel** button: Cancel the changes
- **OK** button: Confirm the changes
- **Filter:**
- **Icon:** A funnel icon.
- **Function:** Allows users to filter the chats by tags.
- Clicking the icon opens a popup where the user can choose the filter by tags.
- A list of tags is displayed.
- User can select multiple tags.
- **Reset** button: Reset the settings
- **Cancel** button: Cancel the changes
- **OK** button: Confirm the changes
### Chat List
- **Function:** Displays a list of recent chats and chat folders, providing access to existing conversations.
- **Folders:**
- Represented by a folder icon and the folder name.
- The number of chats within the folder is displayed in parentheses (e.g., "IMAP (10)").
- Clicking a folder expands or collapses it to show or hide the chats within.
- **Folder actions**: To the right of each folder is "+" (add to folder), a pencil icon (edit), and a trash can icon (delete).
- **Individual Chats:**
- Each chat is displayed with:
- **AI Avatar:** An icon or image representing the AI agent used in the conversation.
- **Chat Title:** A descriptive title for the conversation. If no custom title is set, the title may be automatically generated based on the conversation's content or the AI agent used.
- **Preview Text:** A snippet of the most recent message in the chat, providing a quick overview of the conversation's content.
- **Timestamp:** Indicates how long ago the last message was sent (e.g., "42m", "2d", "3d", "4d"), helping users prioritize recent conversations.
- **Chat Actions:**
- **"+" (Add to folder)**: Add the chat to a folder.
- **Favorite chat**: Mark the chat as favorite
- **More options**:
- **Edit Title:** Allows users to modify the title of the chat.
- Clicking "Edit Title" transforms the chat title into an editable text field.
- The user can type a new title and press "Enter" (or click a "Save" button) to save the changes.
- **Add Tags:** Allows users to add tags to the chat for enhanced organization and filtering.
- Clicking "Add Tags" opens a dialog box where the user can select existing tags or create new ones.
- A text input field allows the user to type in a new tag.
- A list of existing tags is displayed, allowing the user to select from pre-defined options.
- Clicking "Save" applies the selected tags to the chat.
- **Move to Folder:** Allows users to move the chat to a different folder.
- Clicking "Move to Folder" opens a list of available folders.
- Clicking a folder in the list moves the chat to that folder.
- **Archive:** Archives the chat, removing it from the main chat list but preserving it for future access.
- **Export:** Exports the chat data in various formats (e.g., text, JSON) for analysis or archival.
- Opens a "Save As" dialog box, allowing the user to choose the file name and location.
- **Share:** Opens a sharing menu with options to:
- Create a secret link to share the chat.
- Export the chat as Markdown text.
- Export the chat as JSON data.
- Export the chat as an HTML webpage.
- Print or save the chat as a PDF.
- **Delete:**
- **Icon:** A trash can icon.
- **Function:** Deletes the chat conversation.
- **Confirmation:** A confirmation prompt ("Click again to confirm") appears to prevent accidental deletion. Clicking the trash can icon again permanently removes the chat.
### 9. Bottom Section (User Avatar)
- **Content:** Displays the user's avatar or profile picture.
- **Function:** Clicking this area may:
- Open the user profile settings.
- Display account information.
- Provide access to a help or support menu.
- Indicate the user's online status.
## Cloud Sync & Backup Features
TypingMind offers robust cloud sync and backup features to ensure data security and accessibility across multiple devices.
### Accessing Cloud Sync & Backup Settings
1. **Locate the User Profile Icon:** Click the user profile icon located in the bottom left-hand corner of the sidebar. This action opens the user menu.
2. **Select "Manage Cloud Sync":** In the user menu, click on the "Manage Cloud Sync" option. This action opens the Cloud Sync & Backup settings dialog.
### Cloud Sync & Backup Settings Dialog Overview
The "Cloud Sync & Backup" settings dialog provides an overview of the account's cloud sync status, storage usage, and sync preferences. It includes the following key sections:
- **Account Information:**
- **Account Email:** Displays the email address associated with the TypingMind Cloud account.
- **Sync Controls:**
- **"Sync Changes" Button:** Initiates a manual synchronization of any recent changes made on the current device to the cloud. The button is typically blue in color.
- **"Re-sync Everything" Button:** Forces a complete re-synchronization of all data between the current device and the cloud, overwriting any local changes with the cloud data. The link is blue in color.
- **"Last Sync" Information:** Displays the date and time of the most recent successful synchronization. The time is displayed in a human-readable format (e.g., "2/23/2025, 7:13:05 AM (now)").
- **Cloud Storage Information:**
- **Storage Usage Bar:** A horizontal bar that visually represents the amount of cloud storage currently being used, relative to the total storage limit.
- The bar is typically green, with the filled portion indicating the percentage of storage used.
- The bar includes numerical data: "Usage: \[X] KB (\[Y]%)".
- **"Manage" Dropdown:** A dropdown menu labeled "Manage" provides access to cloud storage management options. Clicking on it, there are options:
- `Cloud Data`: Open a popup to manage cloud data
- `Shared Links`: Open a popup to manage shared links
- **Storage Limit:** Indicates the total cloud storage limit available to the account (e.g., "Limit: 50 MB (Free)").
- **"Select What You Want to Sync" Section:**
- **Section Header:** A collapsible section labeled "Select what you want to sync" that allows users to selectively enable or disable the synchronization of specific data types.
- **Data Type List:** A list of checkboxes representing different data types that can be synchronized:
- Chats: Chat conversations.
- AI Agents: Custom AI Agent configurations.
- Prompts: Custom Prompt Library entries.
- Plugins: Installed plugins and their settings.
- Profiles: User profile settings.
- Preferences: Application preferences.
- Model Settings: Custom model configurations.
- Keyboard Shortcuts: Custom keyboard shortcut settings.
- Custom Models: Custom models added by user
- Plugin Settings: Plugin settings
- Message Attachments (Images, Files, etc.): Files attached to messages.
- API Keys & License Key: Stored API keys and license key.
- The checkboxes are checked by default, indicating that all data types are enabled for synchronization.
- Unchecking a checkbox prevents the corresponding data type from being synchronized with the cloud.
- **"Storage Upgrade" Section:**
- **Section Header:** A collapsible section labeled "Storage upgrade" that provides options for increasing the cloud storage limit.
- **Storage Upgrade Options:** A display with multiple plans for the user to select. User can choose:
- 1 GB Plans: $10/month or $50/year (save 58%) — includes 1 GB fast sync storage and 1,000,000 KB character limit.
- 5 GB Plans: $20/month or $100/year (save 58%) — includes 5 GB fast sync storage and 5,000,000 KB character limit.
- **Checkout**: After selecting plan, the user will be navigated to the Stripe payment page to fill in payment.
- **1GB Storage**: Shows the current plan that user is using, with a green `Active` status. User can click on `Manage Subscription` to change the settings.
*Tip*:
- After purchasing a license key, the app will prompt you to also login to your cloud sync account under the same email you used for the purhase. While it's possible to use different email for Cloud Sync and License Key, it's recommended to use the same email so that you can easily manage the license key and your cloud sync account in one email.
- Enable Cloud Sync with your License Key synced in the app so that you don't need to enter the license key manually next time you login.
### Manage Cloud Data
1. **Access the Manage Dropdown Menu:** (As described above).
2. **Click `Cloud Data`**: Click the `Cloud Data` to trigger a new popup window.
### Cloud Data Popup Overview
The "Cloud Data" dialog is structured to guide users through the configuration process. It includes the following key sections:
- **Account Information:**
- **Account Email:** Displays the email address associated with the TypingMind Cloud account.
- **Cloud Storage Information:**
- **Storage Usage Bar:** A horizontal bar that visually represents the amount of cloud storage currently being used, relative to the total storage limit.
- The bar is typically green, with the filled portion indicating the percentage of storage used.
- The bar includes numerical data: "Usage: \[X] KB (\[Y]%)".
- **Storage Limit:** Indicates the total cloud storage limit available to the account (e.g., "Limit: 10 MB (Free)").
- **Clear All Storage Button**: A button that allows the user to clear all storage in the Cloud.
- **Important note**
- A warning in a yellow frame: `Deleting your data from the cloud will also delete the corresponding local data. For example, if a chat is deleted from the cloud, it will be deleted from this device and any other devices with Cloud Sync enabled.`
- **Data type navigation**: With tab navigation bar such as `Files`, `Chats`, `Prompts`, `AI Agents`, `Plugins`, `Restore Deleted Chats` (to restore your deleted chats within 30 days
- **Data Display Area (Main Content Area):**
- A list/table that displays all of data associated with selected data type.
- Each object is represented by a row containing:
- **Title:** The name of the item.
- **Size:** The size of the data.
- **Synched At:** Timestamp of the synchronization
- **Action:**
- **`Delete` Button:** Clicking this button will delete the data. A prompt window shows up for double confirmation, with content such as `Sure?`, `Click again to confirm`
- **Pagination Area**: Area for pagination, including total count of items
- **Close button:** To close the popup.
### Managing a Cloud Data Plan
1. **Access the Manage Dropdown Menu:** (As described above).
2. **Click `Manage Subscription`**: Click the `Storage Upgrade` to trigger a new popup window to upgrade the current plan.
3. **Select the Plans**: (1 GB or 5 GB)
4. **Checkout**: After selecting plan, the user will be navigated to the Stripe payment page to fill in payment.
### Manually Syncing Changes
- **Click the "Sync Changes" Button:** In the "Cloud Sync & Backup" settings dialog, click the "Sync Changes" button.
- The button's label may change to "Syncing..." during the synchronization process.
- A progress indicator (e.g., a loading spinner) may appear to indicate that synchronization is in progress.
- Once the synchronization is complete, the "Last Sync" information is updated with the current date and time.
### Re-syncing Everything
- **Click the "Re-sync Everything" Link:** In the "Cloud Sync & Backup" settings dialog, click the "Re-sync Everything" link.
- A confirmation prompt may appear, warning the user that local changes will be overwritten.
- The link's label may change to "Syncing..." during the synchronization process.
- A progress indicator may appear to indicate that synchronization is in progress.
- Once the synchronization is complete, the "Last Sync" information is updated with the current date and time.
### Selective Sync
- **Expand the "Select What You Want to Sync" Section:** Click the dropdown.
- **Check or Uncheck Data Types:** Check the boxes next to data types that you want to sync, and uncheck the boxes next to data types that you want to exclude from synchronization.
- The changes are applied immediately.
### Detailed Feature Information
- **Automatic Synchronization:** TypingMind automatically synchronizes data in the background at regular intervals. The frequency of automatic synchronization may depend on the subscription plan or application settings.
- **Data Encryption:** All data stored in the TypingMind Cloud is encrypted both in transit and at rest, ensuring data privacy and security.
- **Data Backup:** TypingMind automatically backs up data stored in the cloud, providing an additional layer of protection against data loss.
## Managing shared links
1. **Access the Manage Dropdown Menu:** (As described above).
2. **Click `Shared Links`**: Click the `Shared Links` to trigger a new popup window.
### Shared Links Popup Overview
The "Shared Links" dialog is structured to guide users through the process of managing shared links. It includes the following key sections:
- **Account Information:**
- **Account Email:** Displays the email address associated with the TypingMind Cloud account.
- **Cloud Storage Information:**
- **Storage Usage Bar:** A horizontal bar that visually represents the amount of cloud storage currently being used, relative to the total storage limit.
- The bar is typically green, with the filled portion indicating the percentage of storage used.
- The bar includes numerical data: "Usage: \[X] KB (\[Y]%)".
- **Storage Limit:** Indicates the total cloud storage limit available to the account (e.g., "Limit: 10 MB (Free)").
- **List of shared chats:** List of shared chats in a table format. There are columns such as:
- Link
- Name
- Created
- Action
- **`Delete` Button:** Clicking this button will delete the shared links. A prompt window shows up for double confirmation, with content such as `Sure?`, `Click again to confirm`
- **Close button:** To close the popup.
FAQs:
Q: Can I use the app without cloud sync?
A: Yes, absolutely. By default, all your TypingMind data is stored locally in your browser—no login or cloud sync is required.
If you choose to log in and enable TypingMind Cloud Sync, your data will be securely backed up to TypingCloud, allowing you to sync seamlessly across multiple devices.
Cloud sync is entirely optional and designed to be flexible. To support the ongoing server costs, there is a free cloud storage limit per account. If you need more storage, you can upgrade at any time. Otherwise, you’re free to log out of cloud sync—your app will continue to work as usual, with all data stored locally.
Q: How do you handle syncing if I use the app on multiple devices?
A: Normally, the system will sync your latest updates from the device you are currently using. This way, when you switch to another device, the new updates will also sync accordingly.
However, when:
- You open the same chat on two devices simultaneously
- You start chatting before the previous session has fully synced
- Your chat history isn't fully up-to-date across devices
...and syncing conflict might occur. When conflicts occur, our system preserves messages from all devices in the conversation, allowing you to manually review and manage any duplicates or conflicts rather than losing those messages.
## Project Features
Projects in TypingMind provide a way to group related chats, assign default models and AI agents, and manage project-specific context and instructions.
### Creating a New Project/Folder
1. **Click the "Create Folder" Icon:** This icon (a folder with a "+" sign) is located to the right of the "Search chats" bar in the sidebar.
2. **Enter Project Name:** A text input field appears where you can type the name of the new project.
- The text input is a single-line field with rounded corners.
- The text color in the input field is white.
- The background color is dark blue.
- The field has a blinking cursor to indicate where the text will be inputted.
3. **Confirm Project Name:** After typing the name, press "Enter" on your keyboard.
4. **Project is Created:** A new folder with the specified name will appear in the chat list within the sidebar.
### Project Settings
Each project has associated settings that control the behavior of chats within that project.
1. **Accessing Project Settings:** Find the project folder in the sidebar and click on the "Project Settings" text located just below the folder name.
2. **Project Settings Dialog:** A dialog box appears with the following sections:
- **Project Context & Instructions:**
- A text area where you can enter instructions or context that will be appended to the system instructions for all chats within this project.
- A descriptive text explains the purpose of this section: "This will be appended to the system instruction for all chats in this project. Note that this does not override, but "appended" on top of the global system instruction and agent-specific instructions."
- The text area supports multi-line input.
- The text area has a light-gray background.
- The text color in the text area is black.
- Example usage is provided: "E.g., Use ReactJS/TailwindCSS for all code output."
- **Starting Model:**
- A dropdown menu that allows you to select the default AI model to use when creating new chats within this project.
- The description explains "The model to start new chats with. When you create a new chat within this project, it will start with this model. You can change to another model manually anytime."
- The dropdown defaults to "Use Global Default."
- Clicking the dropdown reveals a list of available models, including Ollama/Llava, DeepSeek, Liquid, Gemini, and custom models.
- **Assigned AI agent:**
- A dropdown menu that allows you to select a default AI agent to use when creating new chats within this project.
- The description explains "If selected, new chats within this project will start with the selected AI agent. You can still change the AI agent for each individual chat if needed. Note: if the AI agent already has an assigned model, it will override the starting model setting"
- The dropdown defaults to "No assigned AI agent."
- Clicking the dropdown reveals a list of available AI agents.
- **Project Documents:**
- Allows you to upload documents that will be embedded directly into the system instructions for all chats in this project.
- A "Select files" button opens a file dialog, allowing you to browse and select files from your local device.
- The file dialog is the standard operating system file selection window.
- A text label indicates how many characters and tokens the uploaded document contains.
- **Dynamic Context:**
- Allows you to create dynamic context with variables or retrieve data from an API and inject it into the system prompt using Retrieval-Augmented Generation (RAG).
- Clicking the "+ Add Context" button adds a new dynamic context configuration section.
- **Dynamic context configuration:**
- **Context Name:** A text input field to define a name for the dynamic context (e.g., "Last 10 tweets").
- **Context Source:** A dropdown menu to choose the source of the dynamic context data.
- "Read from HTTP endpoint": Retrieves data from an API endpoint. Requires configuration of:
- HTTP Method (GET, POST, PUT, DELETE, PATCH).
- Endpoint URL.
- "Enable Cache" checkbox to cache the API response.
- "Add Request Headers" button will add a new input for the request headers with a delete button
- "Test Endpoint" button to test the API connection.
- "Simple text prompt (with variables)": Allows you to define a simple text prompt with variables. Displays the text input field.
- "Available variables": Shows the list of available variables in the project such as {lastUserMessage} and {chatID}.
- A text input field to enter the prompt here
- **"Collapse"** button: Will collapse the section.
- **"Remove"** button: Will remove the dynamic context settings.
- A confirmation prompt ("Sure?") appears to confirm the removal action. Clicking "Click again to confirm" will remove the context.
3. **Saving Changes:** After configuring the project settings, click the "Save" button (blue color with white text).
4. **Discarding Changes:** To revert the changes, user can click on the "Discard Changes" button.
### Adding a New Chat to a Project/Folder
1. **Click the "Add Chat" Icon:** Located to the right of the project folder's name in the sidebar (a "+" sign next to a speech bubble icon).
2. **New Chat is Created:** This action creates a new chat within the selected project. The new chat inherits the project's settings (system instructions, default model, and AI agent).
### Deleting a Project/Folder
1. **Click the "Delete" Icon:** Located to the right of the project folder's name in the sidebar (a trash can icon).
2. **Confirmation Prompt:** A confirmation prompt ("Click again to confirm") appears to prevent accidental deletion.
3. **Confirm Deletion:** Click the trash can icon again to permanently remove the project and all its associated chats.
### Editing a Project/Folder Name
1. **Click the "Edit" Icon:** Located to the right of the project folder's name in the sidebar (a pencil icon).
2. **Edit the name:** A text input field appears with current name for you to edit.
3. **Confirm Project Name:** After typing the name, press "Enter" on your keyboard.
4. **Project is Renamed:** The folder name will update
### Visual Cues
- **Project Settings Icons:** There are three small icons showing the project settings: `System Instruction`, `Upload Document` and `Dynamic Context`. User can hover to see the tooltips.
## Getting Started Flow
This section outlines the process of setting up and using the licensed version of TypingMind.
### 1. Entering OpenAI API Key
- **Modal Window:** A modal window appears titled "Enter Your OpenAI API Key:".
- **Title:** "Enter Your OpenAI API Key:"
- The title is in a clear, bold font for easy readability.
- A purple icon is located at the top.
- **Description:** The modal provides information about the need for an OpenAI API key to use the app.
- Text: "You need an OpenAI API Key to use the app."
- Text: "Your API Key is stored locally on your browser and never sent anywhere else."
- **Input Field:** A text input field is provided for the user to enter their OpenAI API key.
- The input field has a light background for contrast against the text.
- Placeholder text: "sk-*************************************"
- Autocomplete may be enabled.
- **"Get your API key from OpenAI dashboard." Link:** A hyperlink is provided to direct users to the OpenAI platform where they can obtain their API key.
- This link opens the OpenAI website in a new tab.
- **Save and Cancel Buttons:** Two buttons at the bottom allow the user to either save the entered API key or cancel the operation.
- **"Save" Button:** A blue button with white text that saves the entered API key.
- On click, the API key is stored locally, and the modal closes.
- The button provides visual feedback upon being clicked.
- **"Cancel" Button:** A button that cancels the API key entry process and closes the modal.
- **"API Key not working? Click Here." Section:** An expandable section providing troubleshooting information.
- Initial State: Collapsed, indicated by a right-facing arrow.
- Text: "API Key not working? Click Here."
- Expanding reveals troubleshooting steps.
- "The app will connect to OpenAI server to check if your API Key is working properly."
- **"FAQs about API Key" Section:** An expandable section linking to frequently asked questions about API keys.
- Initial State: Collapsed, indicated by a right-facing arrow.
- Text: "FAQs about API Key"
- Expanding reveals a list of common questions and answers.
- **API Key Validation:** Upon clicking "Save", TypingMind attempts to connect to the OpenAI server to validate the provided API key.
- **Success:** A success notification or message is displayed if the API key is valid.
- **Error:** An error message is displayed if the API key is invalid or if the connection to the OpenAI server fails.
- **Confetti:** Confetti will show up if API key is valid.
### 2. Start Chatting
- **After valid API key:** "Awesome! You can start chatting now!" appear in the bottom of screen.
- **Type the message:** The user can start typing the message in the message input field.
- **Assistant response:** AI assistant will respond to the user
### 3. License Activation
- **Limitation:**
- In the sidebar, a red banner shows up: `Chats are not saved in free trial. Please buy a license to unlock all features. Buy Here.`
- This indicates some features is not available.
- **Trigger:** User can click on `Buy a license` button on top right corner.
- **Pricing modal will show up:**
- **Header:** `Get A Lifetime License` with `Buy once, use forever!`
- **3 options for user to choose**
- `Standard`: $39
- Feature: `Remove Ads/Popups`, `Basic Chat Features`, `Unlock AI Agents`, `Voice Input`, `Share Chats`
- `Buy Standard` button to proceed
- `Extended`: $79
- Feature: `Image Generation`, `Web Search`, `Text-to-Speech`, `Vision / Images`, `Upload Documents`
- `Buy Extended` button to proceed
- `Premium`: $99 (Limited Time Offer)
- Feature: `Unlimited Plugins`, `Project Folders`, `Artifacts`, `Canvas Editor`, `Free Updates`
- `Buy Premium` button to proceed
- Other options in pricing modal
- `I already have a License Key` link: To trigger license key input.
- `View Plan Comparison` link: To see more detailed comparison.
- **Footer**:
- `14-day money-back guarantee. All plans are one-time payments. Upgrade between plans anytime. Price does not include the API cost (Privacy Policy | Terms of Service)`
- **Checkout process:**
- After click on `Buy Premium`, the Stripe checkout page will show up.
- **Left side:**
- `Devuap LLC (TypingMind)` on the top.
- `Choose a currency` dropdown: User can select the currency, either VND or USD.
- Detail of order will be shown such as: `Premium License`, `Subtotal`, `Add promotion code`, `Total due`
- **Right side:**
- Contact information: `Email`
- Payment method: `Card information`, `MM/YY`, `CVC`, `Cardholder name`, `Country or region`
- Other information: `Securely save my information for 1-click checkout`, agreement for term of service.
- `Complete order` button on the bottom.
- **Promotion code:** User can add promotion code
- If the promotion code is invalid, an error will show.
- If the promotion code is valid, the price will be updated with discount.
- **Thank you page:** User will be redirected back to TypingMind app after payment.
- Popup: `Thank you for your purchase!`
- Display: `The License Key and a Receipt has been sent to your email.`
- Display your email
- Display: `Your license is activated` with a checkmark.
- `View license key` button to see the key.
- `Get Started` button to continue.
- Confetti: Confetti will show up if the license is activated.
### 4. Data Storage Choice
- **Popup:** `Choose how your data is stored`
- **2 options for user to choose:**
- `Cloud Sync`: Store your data on the cloud and sync between devices
- Recommended - 50MB Free
- Information: `Automatic Backup/Sync: Your data is securely stored on TypingMind Cloud and automatically synced between devices.`, `Login with email: Easily login to your account on any device using your registered email address.`, `50MB free storage: You have 50MB of free storage. Upgrades are available for more storage. If you exceed this limit, you can still use the app but you won't be able to sync new data.`
- To get started, user need to verify your email by inputing the email and press `Send Code` to receive the code.
- User will be asked to enter the code here.
- If don't see the email, user can click on `Alternative Login`.
- `Local Only`: Only store your data on this device, no where else
- Information: `Stored on device: Your data is stored only on this device, no one else can see your data. If you need to use TypingMind on another device you need to export/import manually.`, `Unlimited storage: You can store as much data as your device can handle. There is no limit set by the app.`, `Login with License Key: Use your license key to activate the app on a new device. If you lose your license key, recover it from your receipt email.`, `Data lost risk: If you lose your device or your browser cache/storage/cookies is cleared, you will lose all your data. Make sure to backup your data regularly using our export feature.`, `Here is your License Key. Please save this key in a safe place.`
- User will be given the License Key, and need to check the agreement.
- The agreement: `I understand that all of my data (chat messages, agents, prompts, etc.) will be lost if my browser cache or site data is cleared.`
- To continue, user need to check the checkbox and click `Continue`.
- **Continue**: After selecting data storage choice, the user will be redirected back to the main interface.
- **Finish**: To finish the onboarding, user can press `Finish` button at the bottom of screen.
### 5. Post-Activation Interface Changes
- **No more red banner:** The red banner is no longer appear after license activation.
- **Icon change**: The app icon in the sidebar will show `B` indicator, stand for Basic License. This depends on the license plan.
- **Manage Cloud Sync**: User can click on the user profile icon and click on `Manage Cloud Sync` to manage the cloud sync settings.
## TypingMind for Teams vs. TypingMind for Individuals
TypingMind offers two main versions of its platform: one tailored for individual use and another designed for team collaboration. Here's a detailed comparison:
### 1. Core Functionality
- **TypingMind for Individuals:**
- Focuses on providing a personal AI workspace.
- Emphasizes individual productivity and customization.
- Offers a range of features for managing AI chats, creating AI agents, and utilizing plugins.
- **TypingMind for Teams:**
- Extends the individual features with team-oriented functionalities.
- Enables team members to collaborate on AI-driven projects.
- Provides tools for managing user access, setting usage limits, and customizing the AI experience for the entire team.
### 2. User Interface and Branding
- **TypingMind for Individuals:**
- Features a clean and intuitive interface designed for single-user operation.
- Allows for basic UI customization, such as theme selection and avatar personalization.
- **TypingMind for Teams:**
- Offers advanced customization options, including:
- Custom branding (logo, colors, tagline) to align with the organization's identity.
- Customizable chat features (e.g., enabling/disabling specific functionalities).
- Custom domain support to access the chat interface through the organization's own domain or subdomain.
- Custom email templates for notifications and communications.
### 3. Collaboration Features
- **TypingMind for Individuals:**
- Limited collaboration capabilities, primarily through chat sharing (exporting chats as text, JSON, HTML, or creating secret links).
- **TypingMind for Teams:**
- Provides robust collaboration features, including:
- Shared AI agents and prompts: Teams can create and share AI agents and prompt libraries, ensuring consistency and best practices across the organization.
- Centralized knowledge base: Team members can contribute to a shared knowledge base that the AI can access, improving the accuracy and relevance of its responses.
- Role-based access control: Administrators can assign roles and permissions to team members, controlling their access to features and data.
- Usage limits: Set usage limits for AI agents, prompts, or specific AI models to manage costs and prevent overuse.
### 4. Data Management and Security
- **TypingMind for Individuals:**
- Data is stored locally on the user's device by default, with optional cloud sync and backup.
- **TypingMind for Teams:**
- Offers centralized data management and enhanced security features:
- Secure deployment options: Deploy the platform on TypingMind's secure cloud infrastructure or self-host it on your own servers.
- Regional data storage: Select data centers located in the US or EU to comply with data residency requirements.
- Granular access controls: Use roles and tags to securely manage team members' permissions.
- Single Sign-On (SSO): Reduce the risk of password-related security breaches by enabling SSO.
- GDPR and HIPAA compliance: Ensure compliance with data privacy regulations.
### 5. Management and Analytics
- **TypingMind for Individuals:**
- Limited management and analytics capabilities.
- **TypingMind for Teams:**
- Provides comprehensive management and analytics tools:
- User access management: Invite users, manage their roles, and track their activity.
- Usage analytics: Gain insights into how the team is using the platform, including which AI agents and models are most popular.
- Chat history and reporting: Access detailed chat history and generate reports for auditing and analysis.
### 6. Integration and Extensibility
- **TypingMind for Individuals:**
- Supports a range of plugins to extend functionality.
- **TypingMind for Teams:**
- Offers advanced integration and extensibility options:
- API access: Integrate TypingMind with other internal systems and workflows.
- Custom plugins: Build custom plugins tailored to the organization's specific needs.
- Webhooks: Receive real-time notifications about events within the platform.
- Embed as chat widget: Embed the chat interface into your website, blog, or CMS.
### 7. Pricing and Licensing
- **TypingMind for Individuals:**
- Offers a lifetime license with different tiers based on features.
- **TypingMind for Teams:**
- Typically offers subscription-based pricing, with costs depending on the number of users and features required.
- May offer custom pricing plans for large organizations.
### 8. Target Audience
- **TypingMind for Individuals:**
- AI enthusiasts, developers, researchers, content creators, and individual business professionals.
- **TypingMind for Teams:**
- Businesses, organizations, and teams of all sizes that want to leverage AI for collaboration, knowledge sharing, and improved productivity.
- Ideal for companies looking to build internal AI platforms or integrate AI into their existing workflows.
## Add Custom Model Feature
The "Add Custom Model" feature in TypingMind allows users to integrate their own custom-built or fine-tuned Large Language Models (LLMs) into the platform, expanding the range of AI models they can access and utilize. This feature supports various API types, enabling compatibility with a wide array of custom models.
### Accessing the "Add Custom Model" Dialog
1. **Navigate to the "Models" Section:** In the left sidebar, click on the "Models" icon. This will open the Model Management interface.
2. **Click the "+ Add Custom Model" Button:** Located at the top-right corner of the Model Management interface, this button initiates the process of adding a new custom model. Clicking it opens the "Add Custom Model" dialog.
### "Add Custom Model" Dialog Overview
The "Add Custom Model" dialog is structured to guide users through the configuration process. It includes the following key sections:
- **Create Manually / Import Options:** Radio buttons to select the method for defining the custom model.
- **Create Manually:** Allows users to manually enter all the model's configuration details through a form.
- **Import JSON:** Enables users to import model settings from a JSON file.
- **Import Open Router:** Allows users to import model configuration from Open Router.
- **Custom Model Guides:** A sidebar on the right provides links to guides and documentation for setting up various custom models, including Mistral AI, Open Router models, Perplexity AI, Azure OpenAI, LocalAI, and Ollama.
### 1. Create Manually Option
When "Create Manually" is selected, the dialog displays the following input fields and settings:
- **Name:**
- **Purpose:** Assign a descriptive name to the custom model for easy identification within TypingMind.
- **Input Type:** Text field.
- **Placeholder Text:** "e.g., GPT4All"
- **Requirement:** Mandatory. The model cannot be added without a name.
- **API Type:**
- **Purpose:** Specify the API type that the custom model is compatible with.
- **Input Type:** Dropdown menu.
- **Options:**
- "OpenAI Chat Completion API": For models that adhere to the OpenAI API standard.
- "OpenAI Response API": OpenAI’s new API for stateful conversations, with built-in tools like web search, image generation, and structured function calling.
- "Claude Messages API": For accessing Claude models via Anthropic's native API.
- "Claude via Bedrock": For accessing Claude models through Amazon Bedrock.
- "Gemini API": For interacting with Google’s Gemini models.
- More options might appear in the future to support other API standards.
- **Requirement:** Mandatory.
- **Icon URL (Optional):**
- **Purpose:** Provide a URL to an image that will be used as the icon for the custom model within TypingMind.
- **Input Type:** Text field.
- **Requirement:** Optional. If left blank, a default icon will be used.
- **Recommendation:** Use a direct link to an image file (e.g., PNG, JPG) for best results.
- **Endpoint:**
- **Purpose:** Enter the API endpoint URL for the custom model. This is the address where TypingMind will send requests to the model.
- **Input Type:** Text field.
- **Requirement:** Mandatory. The model cannot be added without a valid endpoint URL.
- **Note:** The endpoint URL must be compatible with the selected API Type. For OpenAI Compatible APIs, the endpoint must be compatible with `/v1/chat/completions`.
- **Model ID:**
- **Purpose:** Specify the model identifier as recognized by the API. This might be the model's name or a unique ID.
- **Input Type:** Text field.
- **Placeholder Text:** "e.g., gpt4all-j-v1.3-groovy.bin"
- **Requirement:** Mandatory.
- **Context Length:**
- **Purpose:** Define the maximum context length (in tokens) that the custom model supports. This determines how much of the conversation history the model can consider when generating responses.
- **Input Type:** Number field.
- **Default Value:** 2048
- **Requirement:** Mandatory.
- **Impact:** Setting the context length accurately is crucial for managing token usage and ensuring the model performs optimally.
- **Price for Cost Estimation (Optional):**
- **Purpose:** Allows users to input the cost per 1 million input tokens and the cost per 1 million output tokens for the model. This information is used to estimate the cost of using the model, helping users manage their API expenses.
- **Input Type:** Number fields with a currency symbol ($).
- **Default Value:** $0.00 for both input and output tokens.
- **Requirement:** Optional. If left blank, cost estimation will not be available for this model.
- **Support Plugins (via OpenAI Functions):**
- **Purpose:** Enables support for plugins (also known as tools or functions) within the custom model.
- **Input Type:** Toggle switch.
- **Functionality:** When enabled, TypingMind will send the "functions" or "tool_calls" parameter to the model, allowing it to utilize plugins.
- **Requirement:** Optional. Only enable if the custom model supports the OpenAI Functions API.
- **Support OpenAI Vision:**
- **Purpose:** Enables support for processing image inputs with the custom model.
- **Input Type:** Toggle switch.
- **Functionality:** When enabled, TypingMind will allow image uploads and send the image data to the custom model for processing (if the model supports it).
- **Requirement:** Optional. Only enable if the custom model supports image input.
- **Support System Role:**
- **Purpose:** Enables the use of system role messages in the chat conversation with the custom model.
- **Input Type:** Toggle switch.
- **Functionality:** When enabled, TypingMind will include system role messages when communicating with the custom model.
- **Requirement:** Enabled by default.
- **Support Streaming Output:**
- **Purpose:** Enables real-time streaming of the model's responses.
- **Input Type:** Toggle switch.
- **Functionality:** When enabled, TypingMind will receive the model's responses in chunks, displaying them to the user as they are generated. This provides a more interactive and responsive experience.
- **Requirement:** Enabled by default.
- **Supported Parameters:**
- **Purpose:** Enables which parameters the custom model suppports. If a model doesn’t support a specific parameter (e.g. temperature, top-p, etc.), any values set in chat will be ignored and not applied - which prevents you from any potential errors during the conversation
- **Input Type:** Toggle switch.
- **Functionality:** when chatting with the model, any parameters that are disabled will be ignored and not applied in the conversation.
- **Requirement:** Enabled by default.
- **Custom Headers:**
- **Purpose:** Allows users to add custom HTTP headers to the requests sent to the custom model's API endpoint. This is useful for providing authentication tokens, API keys, or other custom information required by the API.
- **Functionality:**
- Clicking the "+ Add Custom Headers" link adds a new row with two input fields: "Header Key" and "Header Value".
- "Header Key": Input the name of the HTTP header (e.g., "Authorization", "X-API-Key").
- "Header Value": Input the value of the HTTP header (e.g., "Bearer ", "your_api_key").
- A "Remove" button allows you to delete the header.
- **Custom Body Params:**
- **Purpose:** Allows users to add custom parameters to the body of the requests sent to the custom model's API endpoint. This is useful for including additional data or instructions with the request.
- **Functionality:**
- Clicking the "+ Add Custom Body Params" link adds a new row with three input fields: "Type", "Key", and "Value".
- **Type:** A dropdown menu to select the data type of the parameter (string, number, boolean, object).
- **Key:** Input the name of the parameter.
- **Value:** Input the value of the parameter.
- A "Remove" button allows you to delete the parameter.
- **Test Button:**
- **Purpose:** Sends a test request to the custom model's API endpoint to verify that the configuration is correct and the model is accessible.
- **Functionality:**
- Clicking the "Test" button initiates the test request.
- A success message is displayed if the test is successful ("Nice, the endpoint is working! ✨").
- An error message is displayed if the test fails, indicating potential configuration issues.
- **Add Model Button:**
- **Purpose:** Saves the custom model configuration and adds it to the list of available models in TypingMind.
- **Functionality:**
- Clicking the "Add Model" button saves the configuration.
- The "Add Custom Model" dialog closes.
- The new custom model appears in the list of available models in the Model Management interface.
- **Cancel Button:**
- **Purpose:** Cancels the process of adding a custom model and closes the dialog without saving any changes.
### 2. Import JSON Option
Allows the user to import custom model configurations via JSON.
### 3. Import Open Router Option
Allows the user to import custom model configurations from Open Router.
### Editing a Custom Model
1. **Access the Model Management Interface:** (As described above).
2. **Locate the Custom Model:** Find the custom model in the list of available models.
3. **Click the "Edit" Icon:** Click the "Edit" icon (pencil icon) associated with the custom model. This will open the "Update Custom Model" dialog, which is similar to the "Add Custom Model" dialog.
4. **Modify the Settings:** Make the desired changes to the model's configuration settings.
5. **Test the Configuration (Optional):** Click the "Test" button to verify the updated configuration.
6. **Update Model Button:** Click the "Update Model" button to save the changes.
### Important Considerations
- **API Compatibility:** Ensure that the custom model's API is compatible with the selected API Type in TypingMind.
- **Endpoint URL:** Double-check the endpoint URL to ensure it is correct and accessible.
- **Context Length:** Set the context length appropriately to optimize performance and manage token usage.
- **Security:** If the API requires authentication, provide the necessary credentials through custom headers or body parameters.
- **Testing:** Always test the custom model configuration before saving it to ensure that it is working correctly.
### Add Custom Model: Deep Dive for Pro Users
This section delves into the technical aspects of the "Add Custom Model" feature, providing insights for advanced users who want to understand how TypingMind interacts with their custom models and how to troubleshoot potential issues.
### How TypingMind Communicates with Custom Models
- **Direct Client-Side Communication:** TypingMind establishes a *direct* connection from the user's browser (client-side) to the API endpoint of your custom model. This means that:
- **Data Privacy:** Your data (prompts, conversation history) is sent directly to *your* model's endpoint and doesn't pass through TypingMind's servers (unless you are using cloud sync).
- **Latency:** The latency is dependent on the network connection between the user's browser and your model's server. TypingMind adds minimal overhead to this communication.
- **Security:** TypingMind relies on your custom model's API endpoint to handle security and authentication. Ensure your endpoint is properly secured with HTTPS and appropriate authentication mechanisms.
**API Compliance:** TypingMind expects the custom model to adhere to the API specification corresponding to the selected "API Type" (e.g., OpenAI Chat Completions API, OpenAI Responses API, Claude Messages API, Claude via Bedrock, Gemini API). This includes:
- **Request Structure:** TypingMind sends requests with a structure that matches OpenAI's API, including parameters like `messages` (an array of conversation turns with `role` and `content`), `temperature`, `top_p`, `n`, `stream`, etc.
- **Response Format:** TypingMind expects responses to be in the format defined by OpenAI's API, typically a JSON object containing a `choices` array with the model's generated `text`.
- **Streaming:** If `Support Streaming Output` is enabled, TypingMind expects the API to send Server-Sent Events (SSE) with the `data` field containing JSON chunks of the response.
- **Custom Headers & Body Parameters:** These features allow you to tailor the requests sent to your custom model's API:
- **Headers:** Useful for authentication (e.g., `Authorization: Bearer `, `X-API-Key: your_api_key`), content type specification (`Content-Type: application/json`), or custom tracking.
- **Body Parameters:** Useful for passing additional data or instructions to your model that are not part of the standard OpenAI API.
### Common Questions & Troubleshooting Guide
**Q: My custom model is not working. What should I do?**
1. **Verify the Endpoint URL:** Double-check that the endpoint URL is correct and that the API is running and accessible. Use tools like `curl` or `Postman` to test the endpoint directly.
2. **Check the API Type:** Ensure that you have selected the correct API Type (for example: "OpenAI Compatible API" for OpenAI-like models, or for the new OpenAI Response API, Claude via Bedrock, Gemini API).
3. **Review Custom Headers & Body Parameters:** Make sure that any custom headers or body parameters are correctly configured. Typos or incorrect values can cause API requests to fail.
4. **Inspect the Request/Response:** Use your browser's developer tools (Network tab) to inspect the actual requests being sent to your custom model and the responses being returned. Look for any error messages or unexpected data.
5. **Examine the Model's Logs:** Check your custom model's logs for any errors or exceptions that might be occurring. This can provide valuable insights into what's going wrong.
6. **Confirm API Compliance:** For "OpenAI Compatible API" models, make sure that your API adheres to the OpenAI `v1/chat/completions` API specification.
7. **Context Length:** If your model is cutting off responses, ensure that the context length is set appropriately.
8. **Rate Limiting:** Check if your custom model has rate limiting enabled. If so, TypingMind might be exceeding the limits.
**Q: How can I troubleshoot authentication issues?**
1. **Verify API Keys/Tokens:** Double-check that your API keys or authentication tokens are correct and have the necessary permissions.
2. **Inspect Headers:** Use browser developer tools to confirm that the `Authorization` header or other authentication-related headers are being sent correctly with the request.
3. **Check Server Logs:** Review your custom model's server logs for any authentication errors.
**Q: The streamed responses are garbled or incomplete. What could be the issue?**
1. **SSE Compliance:** Ensure that your API is sending valid Server-Sent Events (SSE) with the `data` field containing JSON chunks of the response.
2. **Encoding:** Make sure that the responses are properly encoded (e.g., UTF-8).
3. **Buffering:** Check if your API is buffering the output before sending it. This can cause delays and incomplete responses.
4. **Network Issues:** Investigate potential network issues that might be interrupting the stream.
**Q: How can I estimate the cost of using my custom model?**
1. **Token Usage:** Accurately estimate the number of input and output tokens used per conversation.
2. **Pricing Information:** Obtain the cost per 1 million input tokens and the cost per 1 million output tokens from your custom model provider.
3. **Manual Calculation:** Multiply the number of tokens by the cost per token to estimate the total cost.
4. **TypingMind Integration:** Enter the price information into the "Price for Cost Estimation" fields in TypingMind. This will allow TypingMind to provide cost estimates within the chat interface.
**Q: My model supports OpenAI Functions (plugins). How do I enable them in TypingMind?**
1. **Enable the Toggle:** Set the "Support Plugins (via OpenAI Functions)" toggle to "On" when adding or editing the model.
2. **Function Schema:** Ensure that your model's API is able to interpret the "functions" or "tool_calls" parameter in the request and that it returns the correct function call information in the response.
3. **Plugin Configuration:** Configure the plugins you want to use in TypingMind's plugin management interface.
By understanding these technical details and troubleshooting tips, you can effectively integrate and utilize your custom models within TypingMind, unlocking the full potential of your AI creations.
## Model Parameters Settings
TypingMind allows for granular control over the behavior of AI models, allowing users to adjust various parameters that influence the model's output and performance. These settings can be accessed and modified on a per-model basis, giving users the flexibility to fine-tune each model to their specific needs.
### Accessing Model Parameter Settings
There are two ways to access the model parameters settings:
#### 1. Via "Change Chat Parameters"
1. **Open a Chat:** Start or open an existing chat.
2. **Access the Model Selection Dropdown:** In the chat interface, locate the dropdown menu that displays the currently selected AI model (e.g., "Claude 3.5 Sonnet").
3. **Click "Change Chat Parameters":** At the bottom of the model list, there is a "Change Chat Parameters" option. Click on this to open the `Model Settings` dialog.
4. **Find the Model:** Find the model you want to change the settings.
5. **Click the "Settings" Icon:** Next to each custom model there is an edit icon (looks like a pencil). Click on it will bring up the parameters for the model.
#### 2. Via Models Tab
1. **Navigate to the "Models" Section:** In the left sidebar, click on the "Models" icon. This will open the Model Management interface.
2. **Find the Model:** Locate the AI model you want to configure in the list of available models. Models are displayed with their name, icon, and a toggle switch to enable/disable them.
3. **Select the Model:** Click on the model's name or icon to select it. This will display the model's overview and parameters.
4. **Navigate to "Parameters" Tab**: Click on the "Parameters" tab to view and adjust the model's parameters.
### Model Settings Dialog Overview
- **Title:** "Model Settings"
- Displayed at the top of the dialog.
- **Information Text:** "Changes are saved only for the current chat"
- A yellow text is displayed indicating changes are saved for the current chat only.
- **Search Models:** A search box to search for the models.
- **Model List:** The main section displays a list of available AI models.
- **Model Name:** The name of the AI model.
- **Settings Icon**: To the right of each model, there is an icon to change the settings.
- **Trash Icon**: To the right of each model, there is an icon to delete the model.
- **Model Selection:**
- The currently selected AI model is highlighted or visually indicated.
- The model name and a descriptive label (e.g., "GPT-4", "Claude 3.5 Sonnet") are displayed.
- A dropdown menu or similar control allows you to switch to a different AI model.
- **"+ Add Custom Model" Button:** Allows you to add the custom model.
- **Cancel Button:** A cancel button on the bottom right corner to cancel the action.
### Parameters Tab
The "Parameters" tab allows you to adjust the model settings.
- **Override Global Model Parameters:**
- Function: Allows users to override the global model parameters defined in the Global Settings.
- Input Type: Toggle switch.
- Functionality: When enabled, the following parameters can be modified specifically for the selected model.
- Requirement: Optional. If disabled, the model will use the global parameters defined in the Global Settings.
### Model Parameters List
The following parameters can be adjusted when "Override Global Model Parameters" is enabled:
- **Context Limit:**
- **Description:** The number of messages to include in the context for the AI assistant. When set to 1, the AI assistant will only see and remember the most recent message.
- **Default Value:** All
- **Functionality:** A dropdown menu to select the number of messages to include in the context.
- All Previous Messages
- Last 1 message
- Last 2 messages
- Last 3 messages
- ...
- Last 30 messages
- Last 31 messages
- Last 32 messages
- **Note:** Adjusting the context limit can impact the AI's ability to understand the conversation history.
- **Temperature:**
- **Description:** Higher values (e.g., 0.8) will make the output more random, while lower values (e.g., 0.2) will make it more focused and deterministic.
- **Default Value:** 1
- **Functionality:** A slider to adjust the temperature.
- **Range:** 0 to 2
- **Reset to default** link: Reset the settings.
- **Visual Cue:** A visual representation of where the current temperature falls on the scale between "Precise" and "Creative."
- **Presence Penalty:**
- **Description:** How much to penalize new tokens based on whether they appear in the text so far. Increases the model's likelihood to talk about new topics.
- **Default Value:** 0
- **Functionality:** A slider to adjust the presence penalty.
- **Range:** -2 to 2
- **Reset to default** link: Reset the settings.
- **Visual Cue:** A visual representation of where the current presence penalty falls on the scale between "Balanced" and "Open-minded."
- **Frequency Penalty:**
- **Description:** How much to penalize new tokens based on their existing frequency in the text so far. Decreases the model's likelihood to repeat the same line verbatim.
- **Default Value:** 0
- **Functionality:** A slider to adjust the frequency penalty.
- **Range:** -2 to 2
- **Reset to default** link: Reset the settings.
- **Visual Cue:** A visual representation of where the current frequency penalty falls on the scale between "Balanced" and "Less Repetition."
- **Top P:**
- **Description:** An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.
- **Default Value:** 1
- **Functionality:** A slider to adjust the top P.
- **Range:** 0 to 1
- **Reset to default** link: Reset the settings.
- **Visual Cue:** A visual representation of where the current top P falls on the scale between "Precise" and "Creative."
- **Top K:**
- **Description:** Only sample from the top K options for each subsequent token. Used to remove "long tail" low probability responses. Min: 0
- **Default Value:** 0
- **Functionality:** A numeric input to adjust the top K.
- **Range:** 0 to 40
- **Reset to default** link: Reset the settings.
- **Note:** Setting Top K to 0 will disable it
- **Max Tokens:**
- **Description:** The maximum number of tokens to generate before stopping.
- **Default Value:** 4000
- **Functionality:** A numeric input to adjust the max tokens.
- **Range:** 0 to 4000
- **Reset to default** link: Reset the settings.
- **Safety Settings (Gemini Only):**
- **Description:** Content is blocked based on the probability that it is harmful.
- **Default Value:** DEFAULT
- **Functionality:** A section to adjust the safety settings of the Gemini model.
- **Individual Settings:**
- **Harassment:** Block none, few, some, most.
- Functionality: A slider to adjust the harassment level.
- **Hate speech:** Block none, few, some, most.
- Functionality: A slider to adjust the hate speech level.
- **Sexually explicit:** Block none, few, some, most.
- Functionality: A slider to adjust the sexually explicit level.
- **Dangerous:** Block none, few, some, most.
- Functionality: A slider to adjust the dangerous level.
- **Civic integrity:** Block none, few, some, most.
- Functionality: A slider to adjust the civic integrity level.
- **Reset to default** link: Reset the settings.
- **Prompt Caching:**
- **Description:** Prompt caching helps save token costs for long conversations. Enabling this will incur additional tokens when initiating the cache for the first time, but it can save many more tokens later, especially for long conversations. Not all models support caching, and some models require a minimum number of tokens for caching to be initiated. Please check with your AI model provider for more information.
- **Functionality:** A toggle to enable or disable prompt caching.
- **Reasoning Effort (Reasoning models only):**
- **Description:** Constrains effort on reasoning for reasoning models. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response.
- **Default Value:** DEFAULT
- **Functionality:** A dropdown menu to select the reasoning effort.
- None
- Low
- Medium
- High
- **Reset to default** link: Reset the settings.
### Applying Changes
- **Apply for current chat Button:**
- After adjusting the parameters, click the "Apply for current chat" button to apply the changes to the current chat session.
- **Cancel Button:**
- Discards the changes.
### Dynamic Context (Advanced users)
- **Purpose:** Enables users to inject dynamic data from external APIs or data sources into the AI's context, providing real-time information and enhancing the relevance of the AI's responses.
- **Functionality:**
- **"+ Add Context" Button:** Clicking this button adds a new dynamic context configuration section.
- **Context Name:**
- A text input field to define a descriptive name for the dynamic context (e.g., "Live Weather Data", "Stock Prices").
- The name helps identify the context within the chat interface and when configuring prompts.
- **Context Source:** A dropdown menu to choose the source of the dynamic context data.
### Context Source Options:
1. **Read from HTTP Endpoint (API Integration):**
- Allows users to fetch data from an external API endpoint.
- Configuration Options:
- **HTTP Method:** A dropdown menu to select the HTTP method for the API request (GET, POST, PUT, DELETE, PATCH). The default method is GET.
- **Endpoint URL:** A text input field to enter the URL of the API endpoint.
- **Enable Cache Checkbox:** A checkbox to enable caching of the API response.
- When checked, the API response will be stored for a specified duration, reducing the number of API calls and improving performance.
- The cache duration can be configured in the settings.
- **Request Headers:** A section to add custom HTTP request headers.
- "+ Add Request Headers" Button: Clicking this button adds a new row with two input fields: "Header Key" and "Header Value".
- "Header Key": Input the name of the HTTP header (e.g., "Authorization", "Content-Type").
- "Header Value": Input the value of the HTTP header (e.g., "Bearer ", "application/json").
- A "Delete" button allows you to remove the header.
- **Test Endpoint Button:** Clicking this button sends a test request to the configured API endpoint and displays the response.
- This allows users to verify that the API endpoint is accessible and that the data is being retrieved correctly.
2. **Simple Text Prompt (with variables):**
- Enables users to define a simple text prompt with variables that will be dynamically replaced with data.
- Configuration Options:
- **Available Variables:** A display showing the list of available variables in the project, such as `{lastUserMessage}` (the last message sent by the user) and `{chatID}` (the unique identifier of the current chat).
- **Text Input Field:** A multi-line text input field where users can enter the prompt text, including the variables.
### Additional Controls:
- **"Collapse" Button:** Collapses the dynamic context configuration section, hiding the settings.
- **"Remove" Button:** Removes the dynamic context configuration section.
- A confirmation prompt ("Sure?") appears to prevent accidental deletion.
- Clicking "Click again to confirm" permanently removes the dynamic context.
- **Saving Changes:** After configuring the dynamic context, click the "Save" button to save the settings.
- **Using Dynamic Context in Prompts:**
- Once configured, dynamic context can be used in prompts by referencing the context name within curly braces (e.g., `{{Live Weather Data}}`).
- When the AI processes the prompt, TypingMind will automatically replace the context name with the corresponding data from the API or variable.
## AI Agents Features
TypingMind's AI Agents feature allows users to create, customize, and manage specialized AI assistants tailored for specific tasks or domains. AI Agents can be configured with unique instructions, knowledge sources, skills (plugins), and even distinct voices, enabling them to function as highly personalized and efficient collaborators.
### Accessing the AI Agents Interface
1. **Locate the "Agents" Icon:** In the left sidebar, find the icon that represents AI Agents. The icon typically depicts a stylized human head or figure.
2. **Click the "Agents" Icon:** Clicking this icon navigates you to the main AI Agents management interface.
### AI Agents Interface Overview
The AI Agents interface is organized to provide an intuitive overview of available agents and facilitate easy creation and management. The interface generally consists of the following elements:
- **Page Title:** Displays the title "Agents," clearly indicating the purpose of the page.
- **Page Description:** A concise description of the AI Agents feature is provided below the title, such as "Agents are pre-built AI assistants for specific tasks."
- **Search Bar:** A text input field labeled "Search AI agents..." allowing users to quickly find specific agents by name or keyword.
- The search bar includes a magnifying glass icon.
- As the user types, the list of displayed agents is dynamically filtered to match the search query.
- The search considers agent names, descriptions, and categories.
- **"Create AI Agent" Button:** A prominent button that initiates the process of creating a new AI Agent.
- The button is typically green or blue to visually distinguish it as a primary action.
- The button's label clearly indicates its function: "Create AI Agent."
- Clicking this button opens the "New AI Agent" creation form.
- **"Browse Agents" Button:** A blue button will be displayed. It will open another popup page to show off the AI agents in TypingMind's marketplace
- The button's label clearly indicates its function: "Browse Agents."
- The default selection of sorting algorithm is the default algorithm
- User can sort the AI agents with "Most Popular" and "Trending" algorithm
- **Category Navigation (Left Sidebar):** A vertical list of categories is located on the left side of the interface, allowing users to filter and browse agents by category.
- Common categories may include "Uncategorized," "Lifestyle and Wellness," "Tech," "Design," "Marketing," "Legal," and "Sales."
- Clicking a category filters the list of displayed agents to show only those belonging to the selected category.
- **Agent Display Area (Main Content Area):** The main content area displays a grid or list of available AI Agents.
- Each agent is represented by a card or tile containing:
- **Icon/Avatar:** An icon or image representing the AI Agent.
- **Name:** The name of the AI Agent.
- **Description:** A brief description of the AI Agent's purpose or capabilities.
- **Action Buttons:** A set of buttons or icons providing quick access to common actions:
- **"Chat now" Button:** Initiates a new chat session with the selected AI Agent.
- **"Edit" Icon:** Opens the AI Agent's configuration settings for modification.
- **"Share" Icon:** Show the sharing model with two options: `Share to Secret Link` and `Share to TypingMind`.
- **"Copy" Icon:** Show the options to copy `System Instruction`.
- **"Delete" Icon:** Deletes the AI Agent (with confirmation).
- **View Layout Toggle:** Two icons ("Grid" and "List") allow the user to switch between grid and list views for displaying AI Agents.
- The selected layout is visually indicated (e.g., highlighted icon).
- **Sort Order Dropdown:** A dropdown menu labeled "Last Created" (or similar) allows users to sort the agents based on different criteria.
- Common sorting options include "Title," "Last Used," and "Last Created."
- The currently selected sorting option is displayed in the dropdown label.
### Creating a New AI Agent
1. **Click the "Create AI Agent" Button:** In the main AI Agents interface, click the "Create AI Agent" button. This will open the "New AI Agent" creation form.
2. **New AI Agent Form Overview:** The "New AI Agent" form is structured to guide users through the configuration of a new AI Agent. It includes the following key sections:
### General Information Section
- **Name:**
- **Purpose:** Assign a name to the AI Agent. This name will be used to identify the agent in the AI Agents interface and when mentioning the agent in chats (using the @ symbol).
- **Input Type:** Text field.
- **Placeholder Text:** "E.g., Life Coach"
- **Requirement:** Mandatory. The agent cannot be saved without a name.
- **Description:**
- **Purpose:** Provide a brief description of the AI Agent's purpose or capabilities. This description is for the user's information and is displayed in the AI Agents interface.
- **Input Type:** Text area (multi-line text field).
- **Example Text:** "E.g., A life coach who can help you set and achieve personal and professional goals."
- **Requirement:** Optional, but highly recommended.
- **"Auto fill" Button:** Automatically generate the agent's description.
- **Categories (Optional):**
- **Purpose:** Assign the AI Agent to one or more categories to help organize and filter agents in the AI Agents interface.
- **Input Type:** Text field with auto-suggest or dropdown.
- **Functionality:**
- The user can type in the field to create a new category.
- A list of existing categories is displayed, allowing the user to select from pre-defined options.
- The user can assign the AI Agent to multiple categories.
- **Requirement:** Optional.
- **Profile Picture:**
- **Purpose:** Provide a URL to an image that will be used as the icon for the AI Agent.
- **Input Type:** Text field.
- **Placeholder Text:** "https://"
- **Requirement:** Optional. If left blank, a default icon will be used.
- **Recommendation:** Use a direct link to an image file (e.g., PNG, JPG) for best results.
- **System Instruction:**
- **Purpose:** Define the system instructions that will be used to guide the AI Agent's behavior. These instructions provide the AI with context, goals, and constraints for generating responses.
- **Input Type:** Text area (multi-line text field).
- **Example Text:** "E.g., You are a life coach, you help the user identify and achieve their goals, motivate them, and provide support and encouragement."
- **Requirement:** Mandatory. The agent cannot be saved without system instructions.
- **"Auto fill" Button:** Automatically generate the system instruction.
- **Character and Token Count:** A display shows the character count and tokens count of the text area content. The character count is on the left and the tokens count is on the right.
- **Override system instructions**
- Function: Allows users to replace app default system instruction with the System Instruction defined.
- Input Type: Toggle switch.
- By default, the AI agent's instruction will be appended to the app's default system instruction (set in the model settings popup). Check this box if you want to skip the previous system instruction for this AI agent.
### Base Model Section
- **Model & parameters:**
- **Functionality:** Allow user to define the base model of this AI Agent.
- **Assign a specific model to this AI agent**
- Function: Allows users to assign a specified model to the AI Agent.
- Input Type: Toggle switch.
- Functionality: When enabled, the AI Agent will always use the selected model and users cannot change it.
- Requirement: Optional. If disabled, the model to use will be decided by the user.
- **Model dropdown**: User can select a model from the dropdown.
- **Assign custom model parameters for this AI agent**
- Function: Allows users to assign custom model parameters for the AI Agent.
- Input Type: Toggle switch.
- Functionality: When enabled, the AI Agent will use the custom model parameters.
- Requirement: Optional. If disabled, the model parameters will be decided by the user or global settings.
- All Model Parameters settings will be displayed as described above.
### Skills Section
- **Plugins:**
- Functionality: Allow user to define the plugins of this AI Agent.
- **Assign plugins for this AI agent**
- Function: Allows users to assign specified plugins to the AI Agent.
- Input Type: Toggle switch.
- Functionality: When enabled, the AI Agent will always use the selected plugins and users cannot change it.
- Requirement: Optional. If disabled, the plugins to use will be decided by the user.
- Plugin Settings: All Plugin settings will be displayed as described above.
### Text-to-speech Section
- **Assign text-to-speech settings for this AI agent**
- Function: Allows users to assign specified text-to-speech settings to the AI Agent.
- Input Type: Toggle switch.
- Functionality: When enabled, the AI Agent will always use the selected text-to-speech settings and users cannot change it.
- Requirement: Optional. If disabled, the text-to-speech settings will be decided by the user.
- Speech API: The API provider used to generate the speech. Options: `ElevenLabs (Beta)`
- Voice: The selected voice.
- Advanced Options: Includes `Model` with options `eleven_monolingual_v1` and `eleven_multilingual_v1`, and `Stability`, `Similarity Enhance`.
- Test Audio: A textbox that includes the `Play` button, and the test audio script: `Hello, this is the test audio for the AI assistant`.
- Auto play assistant messages: When enabled, the AI agent will automatically play assistant messages.
### Knowledge Section
- **Training files:**
- Functionality: Allow user to upload training files.
- Upload documents to help the AI agent understand your domain knowledge better. The documents will be included directly to the model's system instruction.
- User can click on "Select files" to select training files.
- A list of uploaded files is displayed.
- User can see the characters count and tokens count of the selected files.
- **Dynamic context:**
- Refer to the Model Parameters Settings described above.
### Chat Experience Section
- **Few-shot prompting**
- Description: Few-shot prompting is a technique to help the AI agent learn how to respond to users in a specific way by providing demonstrations in the prompt to steer the model toward better performance. The prompts will be automatically inserted at the beginning of every conversation, right after the system instructions (but not included in the system instruction). This is useful when you want the AI to always respond in a very specific format.
- Add New Prompt button: Click this button to add a new prompt with User Message and Assistant Response text area. User message is the sample user's message to the AI agent, while Assistant Response is the agent's correct response to the user.
- User Message
- Assistant Response
- Remove button: Remove the current user message and assistant response.
- **Welcome message:**
- Functionality: Allow user to define welcome message.
- The first message to send to the user when start a new chat.
- **Conversation starters:**
- Functionality: Allow user to define conversation starters, so the user can quickly select the prompts.
- Suggest some first messages for the user to select from in the beginning of the conversation.
- Add Conversation Starters: Click this button to add a conversation starter
- A text input field for new conversation starter.
### Saving or Canceling the New AI Agent
1. **Click the "Save" Button:** After configuring all desired settings, click the "Save" button (typically located in the top-right corner of the form) to save the new AI Agent.
- The form is validated to ensure that all required fields are filled in correctly.
- If there are errors, error messages are displayed to guide the user.
- Upon successful saving, the "New AI Agent" form closes and the new AI Agent appears in the AI Agents interface.
2. **Click the "Cancel" Button:** To discard the changes and close the "New AI Agent" form without saving, click the "Cancel" button.
- A confirmation prompt may appear to prevent accidental data loss.
### View AI Agent Edit History
To review past changes made to your AI Agent, click the Version History icon (the circular arrow) located in the top right corner of the Agent editor.
This will open a detailed log showing what edits were made and when. You can easily roll back to any previous version at any time, giving you full control and flexibility over your agent's development.
### Managing Existing AI Agents
The AI Agents interface provides a range of actions for managing existing agents:
- **Editing an AI Agent:**
1. **Locate the AI Agent:** In the AI Agents interface, find the AI Agent you want to edit.
2. **Click the "Edit" Icon:** Click the "Edit" icon (pencil icon) associated with the AI Agent. This will open the AI Agent's configuration settings in edit mode.
3. **Modify the Settings:** Make the desired changes to the agent's configuration settings.
4. **Click the "Save" Button:** Click the "Save" button to save the changes.
5. **Click the "Cancel" Button:** Click the "Cancel" button to discard the changes.
- **Sharing an AI Agent:**
1. **Locate the AI Agent:** In the AI Agents interface, find the AI Agent you want to share.
2. **Click the "Share" Icon:** Click the "Share" icon associated with the AI Agent.
3. **Sharing Options:** Show the sharing model with two options: `Share to Secret Link` and `Share to TypingMind`.
- `Share to Secret Link`: Generate the secret link to share with other people.
- `Share to TypingMind`: Not implemented yet.
- **Copying an AI Agent's System Instruction:**
1. **Locate the AI Agent:** In the AI Agents interface, find the AI Agent you want to copy the system instruction.
2. **Click the "Copy" Icon:** Click the "Copy" icon associated with the AI Agent.
3. **List of options will show to copy the content.**
- **Deleting an AI Agent:**
1. **Locate the AI Agent:** In the AI Agents interface, find the AI Agent you want to delete.
2. **Click the "Delete" Icon:** Click the "Delete" icon (trash can icon) associated with the AI Agent.
3. **Confirmation Prompt:** A confirmation prompt ("Click again to confirm") appears to prevent accidental deletion.
4. **Confirm Deletion:** Click the "Delete" icon again to permanently remove the AI Agent.
### Starting a Chat with an AI Agent
1. **Locate the AI Agent:** In the AI Agents interface, find the AI Agent you want to chat with.
2. **Click the "Chat now" Button:** Click the "Chat now" button associated with the AI Agent. This will open a new chat session with the selected agent.
- The AI Agent's icon and name are displayed in the chat interface.
- The AI Agent's welcome message (if defined) is automatically sent to the user.
- The conversation starters (if defined) are displayed as buttons or links, allowing the user to quickly initiate the conversation.
## Prompt Library Features
The Prompt Library in TypingMind serves as a centralized repository for pre-written message templates, designed to streamline user interaction with AI models and AI Agents. It allows users to quickly insert commonly used prompts, apply prompt chaining techniques, and build efficient AI-powered workflows.
### Accessing the Prompt Library Interface
1. **Locate the "Prompts" Icon:** In the left sidebar, find the icon that represents the Prompt Library. The icon typically depicts a document or book with text on it.
2. **Click the "Prompts" Icon:** Clicking this icon navigates you to the main Prompt Library interface.
### Prompt Library Interface Overview
The Prompt Library interface is designed for easy browsing, searching, and management of prompts. It consists of the following key elements:
- **Page Title:** Displays the title "Prompt Library" in a prominent font, clearly indicating the page's purpose.
- **Page Description:** A concise description of the Prompt Library's functionality is displayed below the title.
- Example: "Prompts are message templates that you can quickly fill in chat, work with AI agents, or build your workflow."
- **Tab Navigation:** The prompt library has two tabs: "Your Prompts" and "Community Prompts".
- "Your Prompts": A number is displayed next to the tab name, indicating the number of prompts you have created.
- "Community Prompts": A number is displayed next to the tab name, indicating the number of community prompts you have added to your library.
- **Search Bar:** A text input field labeled "Search your prompts" allows users to quickly find specific prompts by name or keyword.
- The search bar includes a magnifying glass icon.
- As the user types, the list of displayed prompts is dynamically filtered to match the search query.
- The search considers prompt titles, descriptions, and tags.
- **"Add Prompt" Button:** A prominent button that initiates the process of creating a new prompt.
- The button is typically green or blue to visually distinguish it as a primary action.
- The button's label clearly indicates its function: "Add Prompt."
- Clicking this button opens the "New Prompt" creation form.
- **"Browse Prompts" Button:** A blue button will be displayed. It will open another popup page to show off the prompts in TypingMind's marketplace
- The button's label clearly indicates its function: "Browse Prompts."
- User can select prompts from the prompts marketplace, then they will be added to your prompts library.
- **Filter by Tags:** A dropdown menu labeled "Filter by Tags" allows users to filter the prompts based on assigned tags.
- Clicking the dropdown opens a list of available tags.
- Selecting a tag filters the list of displayed prompts to show only those with the selected tag.
- Multiple tags can be selected for more refined filtering.
- **Sort Order Dropdown:** A dropdown menu labeled with a sorting criterion (e.g., "Title") allows users to sort the prompts based on different criteria.
- Common sorting options include "Title," "Last Used," and "Last Created."
- Title: Sorts the prompts alphabetically by title.
- Last Used: Sorts the prompts by the date they were last used, with the most recently used prompts appearing first.
- Last Created: Sorts the prompts by the date they were created, with the most recently created prompts appearing first.
- The currently selected sorting option is displayed in the dropdown label. An arrow indicates the sort direction (ascending or descending).
- **View Layout Toggle:** Two icons allow the user to switch between grid and list views for displaying prompts.
- The selected layout is visually indicated (e.g., highlighted icon).
- The "Grid" icon displays prompts in a card-based grid layout, showing more prompts at once.
- The "List" icon displays prompts in a vertical list layout, providing more detailed information about each prompt.
- **Prompt Display Area (Main Content Area):** The main content area displays a grid or list of available prompts.
- Each prompt is represented by a card or tile containing:
- **Title:** The name of the prompt.
- **Description:** A brief description of the prompt's purpose or function.
- **Tags:** A list of tags associated with the prompt.
- **Action Buttons/Icons:** A set of buttons or icons providing quick access to common actions:
- **"Use now" Button:** Inserts the prompt into the current chat input field or executes the prompt, depending on the context.
- **"Favorite" Icon (Star):** Adds the prompt to the user's list of favorite prompts for easy access. When the prompt is favorited, the star icon will change to be yellow.
- **"Edit" Icon (Pencil):** Opens the prompt's configuration settings for modification.
- **"Copy" Icon:** Show the options to copy the prompt content
- `Copy content`: Copy the prompt's contents
- `Copy as queue`: Copy the prompt's contents, converted into queue style
- **"Delete" Icon (Trash Can):** Deletes the prompt (with confirmation).
### Using a Prompt in a Chat
There are two primary methods for using prompts in a chat: directly from the Prompt Library interface, and via the in-chat Prompt Library access button.
#### 1. From the Prompt Library Interface:
1. **Access the Prompt Library:** Navigate to the Prompt Library interface as described above.
2. **Browse or Search for a Prompt:** Use the search bar, filters, or category navigation to find the desired prompt.
3. **Click the "Use now" Button:** Locate the "Use now" button on the prompt's card or tile and click it.
- **Action:** The prompt's text content is inserted directly into the active chat's input field. The user can then modify or send the prompt as needed.
#### 2. Via In-Chat Prompt Library Access Button:
1. **Open a Chat Session:** Start or open an existing chat session.
2. **Locate the "Prompt Library" Button:** In the message input area (where you type your messages), find the icon or button that represents the Prompt Library. This may be a book icon or a button labeled "Prompt Library." The button is located between `@` button and the `Format` button.
3. **Click the "Prompt Library" Button:** Clicking this button opens a popup window displaying the Prompt Library interface within the chat session.
- **Functionality:** The popup window contains the same elements as the main Prompt Library interface: search bar, filters, prompt list, action buttons.
4. **Browse or Search for a Prompt:** Use the search bar, filters, or category navigation to find the desired prompt within the popup window.
5. **Click the "Use now" Button:** Locate the "Use now" button on the prompt's card or tile within the popup window and click it.
- **Action:** The prompt's text content is inserted directly into the chat's input field. The user can then modify or send the prompt.
6. **Close the Popup Window:** Once the prompt has been inserted, close the Prompt Library popup window to return to the chat session.
### Creating a New Prompt
1. **Click the "Add Prompt" Button:** In the main Prompt Library interface, click the "Add Prompt" button. This will open the "New Prompt" creation form.
### New Prompt Form Overview
The "New Prompt" form is structured to guide users through the creation and configuration of a new prompt. It includes the following key sections:
### 1. Prompt Details Section
- **Title:**
- **Purpose:** Assign a descriptive title to the prompt. This title will be used to identify the prompt in the Prompt Library interface.
- **Input Type:** Text field.
- **Placeholder Text:** "Prompt Title (e.g., 'Domain Names Inspirations')"
- **Requirement:** Mandatory. The prompt cannot be saved without a title.
- **Description:**
- **Purpose:** Provide a brief description of the prompt's purpose or function. This description is for the user's information and is displayed in the Prompt Library interface.
- **Input Type:** Text area (multi-line text field).
- **Example Text:** "E.g., A list of domain names based on topics"
- **Requirement:** Optional, but highly recommended.
- **Prompt:**
- **Purpose:** Enter the actual text of the prompt. This is the message template that will be inserted into the chat input field when the prompt is used.
- **Input Type:** Text area (multi-line text field).
- **Special Formatting:** Use `{{field 1}} {{field 2}} {{for anything}}` to indicate the fill in the blank part.
- **Requirement:** Mandatory. The prompt cannot be saved without prompt text.
- **Visual Cue:** A visual representation of where the current prompt text falls on the scale between "Concise" and "Descriptive."
### 2. Settings & Tips Section
- **Tags:**
- **Purpose:** Assign tags to the prompt to help organize and filter prompts in the Prompt Library interface.
- **Input Type:** Text field with auto-suggest.
- **Functionality:**
- The user can type in the field to create a new tag. Pressing "Enter" creates the new tag. The new tag will show up in the dropdown immediately.
- The text input field is a single-line field with rounded corners.
- The text color in the input field is black.
- The background color is white.
- Existing tags can be added by typing, with the suggestion of available tags.
- The user can assign the prompt to multiple tags. The tags are displayed with a small "x" icon for removal.
- The selected tags are displayed as small, rounded boxes with white text on a grey background.
- To delete a tags, user can click on the `x` button to the left of the tags.
- **Requirement:** Optional.
- **Tips:**
- **Purpose:** Provide helpful information and guidance on using the Prompt Library effectively.
- **Functionality:** This section contains expandable sections with various tips and instructions:
- **How to Use Queue for Prompt Chaining:**
- A description of how to use queues to separate different sections of a prompt.
- Instruction: Use `----` (four dashes) to separate different sections of a queue
- Example:
- Task 1: Complete the report
- `----`
- Task 2: Schedule a meeting
- Clicking the plus icon (+) expands the section to reveal more details.
- Clicking the minus icon (-) collapses the section to hide the details.
- **How to Mention AI Agents:**
- Explanation of how to mention AI Agents in prompts to direct the AI's behavior.
- Instruction: Use `@[Agent Name]` to add a specific AI agent into the conversation
- Example: Hey @[Marketing Expert], can you help create a business plan for this quarter?
- You can mention multiple agents using queue syntax:
- @[Research Analyst], what is the recent data on smartphone sales?
- `----`
- @[Marketing Expert], based on the data, propose a marketing strategy.
- Clicking the plus icon (+) expands the section to reveal more details.
- Clicking the minus icon (-) collapses the section to hide the details.
- **Template Variables:**
- Explanation of how to use template variables to create dynamic prompts.
- Your custom variables: Use `{{variable name}}` for dynamic content in templates
- Example: I want you to act as an English pronunciation assistant. My first sentence is: `{{your content}}`.
- System variables: Use the exact variable `{local_date}` to allow the AI to retrieve the current date.
- Example: Get all my meetings this week from Google Calendar. Today's date is: `{local_date}`
- Clicking the plus icon (+) expands the section to reveal more details.
- Clicking the minus icon (-) collapses the section to hide the details.
### Adding or Canceling the New Prompt
1. **Click the "Add Prompt" Button:** After configuring all desired settings, click the "Add Prompt" button (typically located in the top-right corner of the form) to add the new Prompt to the list.
- The form is validated to ensure that all required fields are filled in correctly.
- If there are errors, error messages are displayed to guide the user.
- Upon successful saving, the "New Prompt" form closes and the new Prompt appears in the Prompt Library interface. A confirmation message "Added to your prompt library" shows up at the top.
2. **Click the "Cancel" Button:** To discard the changes and close the "New Prompt" form without saving, click the "Cancel" button.
- A confirmation prompt may appear to prevent accidental data loss.
### Managing Existing Prompts
The Prompt Library interface provides a range of actions for managing existing prompts:
- **Editing a Prompt:**
1. **Locate the Prompt:** In the Prompt Library interface, find the Prompt you want to edit.
2. **Click the "Edit" Icon:** Click the "Edit" icon (pencil icon) associated with the Prompt. This will open the Prompt's configuration settings in edit mode.
3. **Modify the Settings:** Make the desired changes to the Prompt's configuration settings.
4. **Click the "Add Prompt" Button:** Click the "Add Prompt" button to save the changes.
5. **Click the "Cancel" Button:** Click the "Cancel" button to discard the changes.
- **Deleting a Prompt:**
1. **Locate the Prompt:** In the Prompt Library interface, find the Prompt you want to delete.
2. **Click the "Delete" Icon:** Click the "Delete" icon (trash can icon) associated with the Prompt.
3. **Confirmation Prompt:** A confirmation prompt ("Click again to confirm") appears to prevent accidental deletion.
4. **Confirm Deletion:** Click the "Delete" icon again to permanently remove the Prompt.
## Using Plugins
TypingMind's plugin system greatly extends the capabilities of AI models by allowing them to access external data sources, perform specialized tasks, and interact with other applications.
### 1. Enabling Plugins for a Chat Session
Before you can use a plugin in a specific chat, it needs to be enabled for that session.
### a. Accessing the Plugin Selection Popup
1. **Open a Chat:** Start or open an existing chat session.
2. **Locate the Plugin Selector:** Find the Plugin Selector button (tool/wrench icon with a count like "+4") located in the **Model and Plugin Selection Bar** *above the message input field*.
3. **Click the Plugin Selector:** Clicking this button opens the Plugin Selection Popup for the current chat.
### b. Enabling/Disabling Individual Plugins in the Popup
1. **Plugin List Display:** The popup displays a searchable list of all installed plugins.
2. **Toggle Switch:** To the right of each plugin's name is a toggle switch.
- **Enabled State:** Toggle switched right (blue/filled). The plugin is active for *this chat session*.
- **Disabled State:** Toggle switched left (gray/outlined). The plugin is inactive for *this chat session*.
3. **Click to Toggle:** Click the toggle switch to enable or disable a specific plugin for the current chat. The change is immediate.
4. **Master Toggle:** Use the "Enable plugins" toggle at the bottom of the popup to quickly enable or disable *all* plugins for the session.
5. **Close Popup:** Close the popup when finished. The Plugin Selector button (above the input field) will update its count indicator (e.g., "+3", "+5") to reflect the number of currently enabled plugins for the session.
### 2. Using Enabled Plugins in a Chat
Once one or more plugins are enabled for the chat session, you can invoke them:
### a. Prompting for Plugin Use
1. **Compose a Prompt:** Type a prompt instructing the AI to use the plugin or perform a task that requires the plugin's capability.
- **Explicit:** "Use Web Search to find the current gold price."
- **Implicit:** "What is the current gold price today?" (The AI may decide to use the Web Search plugin if it recognizes the need for real-time data).
2. **Send the Prompt:** Submit your message.
3. **Plugin Execution:**
- The AI recognizes the need for the plugin.
- It might indicate it's using the plugin (e.g., "Using Web Search...").
- The plugin runs in the background. A "Plugin is running" message might appear.
4. **Displaying Results:** The plugin's output (search results, generated images, calculated values, etc.) is integrated into the AI's response and displayed in the chat.
### b. Plugin Specific Interfaces (e.g., Interactive Canvas)
- Some plugins, like "Interactive Canvas," render their output directly as interactive elements within the chat or in the Artifact Panel. Users might need to click "Show content" initially.
### 3. Advanced Plugin Management (Main Settings)
For installing, uninstalling, and configuring plugin-wide settings (like API keys).
### a. Accessing the Main Plugin Management Interface
1. **Navigate to the "Plugins" Section:** In the main left sidebar of the application, click on the "Plugins" icon.
### b. Plugin Interface Overview (Main Settings)
- **Page Title:** "Plugins"
- **Description:** "Extends the capabilities of the AI..."
- **Action Buttons:** "Plugin Store", "Select multiple plugins", "Create Plugin", "Import".
- **Search Bar:** Search installed and available plugins.
- **Plugin Lists:** Displays "Installed" and "Available" plugins.
- **Layout Toggle:** Grid/List view switch.
### c. Individual Plugin Configuration (Main Settings)
- Clicking a plugin in the list opens its detailed configuration page.
- **Tabs:**
- **Overview:** Description, usage examples.
- **Settings:** Configure plugin-specific settings (API keys, default parameters). *This is where you enter keys needed globally for the plugin*.
- **Spec:** Technical specification (JSON).
- **Source:** Plugin source code (if available).
- **Actions:** Edit, Uninstall, Enable/Disable (globally).
### 4. Web Search Plugin Example (Revisited with UI Change Context)
1. **Installation & Global Setup:**
- Go to main "Plugins" settings (via left sidebar).
- Find/Install "Web Search".
- Click on "Web Search" in the list.
- Go to the "Settings" tab.
- Enter your Google Custom Search Engine ID and API Key.
- Click "Save". *This configures the plugin globally.*
2. **Enabling for a Chat Session:**
- Open a chat.
- Click the Plugin Selector button (tool icon `+N`) *above the input field*.
- Find "Web Search" in the popup list.
- Ensure its toggle switch is ON (blue).
- Close the popup.
3. **Using in Chat:**
- Type prompt: "What's the weather in London?"
- Send.
- The AI, seeing the prompt and that Web Search is enabled *for this session*, will use the globally configured API keys to perform the search and provide the results.
### 5. Interactive Canvas Example
1. **Installation & Global Setup:**
- Go to main "Plugins" settings.
- Find/Install "Interactive Canvas". (No API keys needed).
2. **Enabling for a Chat Session:**
- Open a chat.
- Click the Plugin Selector button *above the input field*.
- Ensure the "Interactive Canvas" toggle is ON.
- Close the popup.
3. **Using in Chat:**
- Type prompt: "Render a simple tic-tac-toe game".
- Send.
- The AI uses the plugin. The interactive canvas output appears in the chat (potentially requiring a "Show content" click) and/or in the Artifact Panel.
## Important Considerations
- **Plugin Compatibility:** Ensure that the plugins you enable are compatible with the selected AI model. Some plugins may only work with specific models or API types.
- **API Keys:** Many plugins require API keys to access external services. Make sure you have the necessary API keys and that they are correctly configured in the plugin settings.
- **Prompt Clarity:** The more explicit you are in your prompts about which plugins to use and what tasks to perform, the better the AI will be at utilizing the plugins effectively.
- **Data Privacy:** Be aware of the data privacy implications of using plugins that access external data sources. Make sure you understand how the plugin handles your data and that you are comfortable with its privacy policies.
- **Context Window:** Complex interactions with multiple plugins or large amounts of data may exceed the AI model's context window. This can lead to truncated responses or errors.
- **Error Handling:** If a plugin fails to execute, TypingMind will typically display an error message. Refer to the plugin's documentation or settings for troubleshooting tips.
## Develop Custom Plugins
TypingMind provides a powerful platform for users to create their own plugins, extending the capabilities of the AI models and integrating them with various services and workflows. This section provides a deep dive into the process of creating custom plugins within TypingMind.
TypingMind features an advanced Plugin Editor that allows users to create, customize, and test plugins with multiple functions. This editor provides a comprehensive suite of tools, including a live test and preview environment, to streamline the plugin development process.
### Accessing the Plugin Editor
1. **Navigate to the "Plugins" Section:** In the left sidebar, click on the "Plugins" icon.
2. **Create or Edit a Plugin:**
- **Create New:** Click the "Create plugin" button in the top-right corner.
- **Edit Existing:** Find the plugin you wish to edit in the list and click on it. If it is a built-in plugin, you must first click "Duplicate" to create an editable copy, then click "Edit" on the copy.
### Plugin Editor Interface Overview
The Plugin Editor is divided into two main panels: the **Configuration Panel** on the left and the **Test & Preview Pane** on the right.
### 1. Configuration Panel (Left Side)
This panel contains all the fields and settings required to define the plugin's identity, behavior, and functions.
- **Top Action Buttons:**
- **Create/Save (Green):** Saves the current plugin configuration.
- **Import plugin (Black):** Allows importing a plugin from a Github URL.
- **Duplicate (Blue):** Creates an editable copy of the current plugin. This is required before editing built-in plugins.
- **Cancel (White/Gray):** Discards any unsaved changes and closes the editor.
- **Built-in Plugin Notice:**
- A message displayed for built-in plugins: "This is a built-in plugin, you can read the details but cannot edit it. If you want to customize it, you can duplicate and then edit the duplicated version."
- **Interactive Editor / JSON Editor:** Radio buttons to select the method for defining the plugin.
- **Need help creating plugins?** A link to the developer documentation. When click, it navigates the user to the documentation.
- **Interactive Editor:** Presents a user-friendly form with various input fields and settings for configuring the plugin.
- **JSON Editor:** Allows users to directly edit the plugin's configuration as a JSON string.
- When selected, a text area appears with pre-filled JSON code representing the plugin's structure.
- A `Load from Github` button is displayed.
- When click, a popup shows for user to enter the Github URL, the format is `owner/repo/path/to/file.json`.
- The JSON code can be manually edited to customize the plugin's behavior.
- A warning message is displayed "For quick development and testing of a new plugin. You can also import a plugin from GitHub and modify it before saving it to use. For additional information on the plugin data format and instructions for sharing via GitHub, please refer to this guide."
#### Plugin Configuration Block
- **Plugin Name*:**
- **Purpose:** The display name of the plugin.
- **Input Type:** Text field.
- **Recommendation:** "4 words or less."
- **Icon URL:**
- **Purpose:** A URL pointing to an image to be used as the plugin's icon.
- **Input Type:** Text field with "https://" placeholder.
- **Recommendation:** "128x128"
- **Overview (Markdown Supported):**
- **Purpose:** A detailed description of what the plugin does, how to use it, and examples. This information is shown to the user.
- **Input Type:** Multi-line text area with Markdown support.
- **User Settings (JSON, Optional):**
- **Purpose:** Defines user-specific settings that will be passed to the plugin when it is called (e.g., personal API keys for a service).
- **Input Type:** Multi-line text area for valid JSON.
- **Link:** "See Example JSON and instruction here."
- **Plugin Context:**
- **Purpose:** Provides additional context and instructions directly to the AI's system prompt *before* the plugin is run. This can be used to add real-time data or more detailed prompts.
- **+ Add context Button:** Opens the dynamic context configuration interface (See ).
- **Authentication:**
- **Purpose:** Define what authentication this plugin use.
- **Input Type:** Dropdown.
- **Options:**
- `None`: No authentication required.
- `API Key`: Required the user to fill in the API Key before using.
- `OAuth 2.0`: Required the user to configure the OAuth 2.0 settings.
- **Plugin Functions:**
- **Purpose:** This section allows a single plugin to contain multiple functions.
- **Description:** "Define the functions of this plugin. This can be a JavaScript code, HTTP request, or an MCP server. You can create multiple functions for a single plugin."
- **Function List:** Displays existing functions for the plugin. Each function is a collapsible item showing its name.
- **+ Add new function Link:** Adds a new, blank function configuration block to the list.
#### Function Configuration Block
When adding or editing a function within the "Plugin Functions" section, a detailed configuration block appears.
- **Action Links (Top Right of Block):**
- **Collapse:** Minimizes the function block.
- **Remove (Red):** Deletes the function block from the plugin.
- **Function name*:**
- **Purpose:** A human-readable name for the specific function.
- **Input Type:** Text field.
- **Implementation*:**
- **Purpose:** Defines *how* the function will be executed.
- **Input Type:** Dropdown menu.
- **Options:**
- **JavaScript Code:** The function is implemented as a client-side JavaScript snippet.
- **HTTP Action:** The function makes an HTTP request to a specified endpoint.
- **Model Context Protocol:** The function interacts with an MCP server.
- **Implementation:**
Depending on the implementation option:
- If `Javascript Code` is selected:
- **Javascript Code Implementation:** A text editor to input javascript.
- **Purpose:** The actual JavaScript code that will be executed when the function is called.
- When `Test` button is clicked, if the Javascript code is invalid, an error will show.
- If `HTTP Action` is selected: This section will be displayed.
- **Available variables:** A small box display variables such as `param1`, `variableName1`, `variableName2`.
- **HTTP Method:** A select box to choose HTTP method, such as GET, POST, PUT, DELETE, PATCH.
- **Endpoint URL:** An input box to enter the URL.
- **Add Request Headers**: Click to add more request headers. A JSON code will be shown below.
- **Add Request Body**: Click to add more request body. A JSON code will be shown below.
- **Request Body Format**: If Formdata is selected, the request body JSON will be converted to Formdata. Has two options:
- `JSON`.
- `URL Encoded`.
- **Post-Processing**: Note: Post-Processing only works with JSON responses.
- Processing Engine: Support Jmespath Transform and Handlebars.js Template.
- With `Jmespath Transform`, an Expression text area is displayed.
- With `Handlebars.js Template`, a Template text area is displayed.
- **Add Test Variables**:
- Click to add more test variables. A JSON code will be shown below.
- **Test Request**: A button to run the test.
- If `MCP` is selected: The MCP server config section will be displayed. (View more at )
- **OpenAI Function Spec*:**
- **Purpose:** A JSON string that describes the function to the AI, following the OpenAI function-calling specification. This tells the AI what the function does and what parameters it accepts.
- **Input Type:** Multi-line text area with JSON syntax highlighting.
- **Links:** Includes links for "Instructions & Examples here" and "Fill example OpenAI Spec".
- **Output Options:**
- **Purpose:** Controls how the output from the function is handled and presented to the user.
- **Input Type:** Dropdown menu.
- **Options:**
- **Give output to the AI (Default):** The raw output is sent back to the AI, which then decides how to formulate a response to the user.
- **Render output as markdown:** The output is rendered directly in the chat as Markdown.
- **Render output as interactive HTML:** The output is rendered as an interactive HTML block (e.g., a form, a game).
- **Render as TypingMind Cards:** The output is formatted and displayed using a special card format.
### 2. Test & Preview Pane (Right Side)
This interactive pane allows for real-time testing of the plugin without leaving the editor.
- **Initial State:** The pane is empty except for a single blue button labeled "Show Plugin Preview".
- **Active State (After clicking the button):** The pane transforms into a mini chat interface.
- **Plugin settings / Debug info:** Collapsible sections for advanced test configuration.
- **Enabled Plugins Bar:**
- Displays the name of the plugin being tested (e.g., "Interactive Canvas") with a toggle switch.
- Displays the AI model being used for the test (e.g., "GPT-4o") in a dropdown selector.
- **Clear context icon:** Resets the AI's memory for the test chat.
- **Trash icon:** Deletes the test chat history.
- **Message Display Area:** Shows the conversation between the user (test prompt) and the AI, including any plugin outputs.
- **Message Input Field:** A text box with the placeholder "Enter message..." to type test prompts.
- **Send / Regenerate Buttons:** A blue "Send" button to submit the prompt and a "Regenerate" button to get a new response.
### Example Test Workflow:
1. In the **Test & Preview** pane, click "Show Plugin Preview".
2. In the **Message Input Field**, type a prompt that should trigger a function in your plugin (e.g., "render a simple chart").
3. Click **Send**.
4. The **Message Display Area** will show:
- Your initial prompt.
- The AI's response, which may include the plugin's direct output (like a rendered chart) and a final text summary from the AI (e.g., "I've rendered a simple bar chart for you...").
5. You can inspect the rendered output, check for errors, and refine your plugin configuration in the left panel based on the results.
### Create a Plugin: A Deep Dive for Pro Users
This section delves into the technical aspects of creating the plugin, providing insights for advanced users who want to understand the plugin's configurations.
* When user select `Share` button:
* Share Plugin:
* How do you want to share this plugin?
* Secret Link: This plugin can be installed by anyone who has the link.
* When user select it, a loading is displayed.
* It's done! is displayed.
* Please make a copy of the links below, you can also manage all previous shared links in `Manage Shared Links`.
* Your Public Link: (tap below to copy).
* The Public Link is displayed for user to copy.
* To delete the link above, go here:
* A link to delete, same as `Manage Shared Links`.
* Close: A button to close the popup window.
* JSON: Share & download as a JSON file
* When user select it, a text area is displayed, inside is a JSON string.
* Here is your plugin in JSON:
* Copy Content: A button to copy the content.
* Download .json: A button to download the JSON.
* Close: A button to close the popup window.
### Managing Shared Links
* Refer to the Cloud Sync & Backup Feature.
### Running a Plugin
* Prompt the AI engine to run the plugin.
* The AI engine will prompt to fill in any variables, following the configuration in User Settings.
* The AI engine will run the plugin.
The Knowledge Base (KB) feature in TypingMind allows users to upload and connect their own data sources, enabling the AI to answer questions and generate responses based on the provided information. It leverages a retrieval-augmented generation (RAG) approach, retrieving relevant pieces of information from the knowledge base based on the user's query.
### Accessing the Knowledge Base
1. **Locate the "KB" Tab:** In the left workspace bar, find the KB tab.
2. **Click the "KB" Tab:** Clicking this icon navigates you to the main Knowledge Base interface.
### Knowledge Base Interface Overview
The Knowledge Base interface is designed to be user-friendly and provides a clear overview of connected data sources. The interface consists of the following:
- **Page Title:** "Knowledge Base"
- **Page Description:** "Connect data sources to create a knowledge base for your AI agents"
- **"+ Add Data Source" Button:** A prominent button (likely blue or green) labeled "+ Add Data Source."
- **Function:** Initiates the process of connecting a new data source to the knowledge base. Clicking this button opens the "Add Data Source" dialog.
- **Connected Sources Area:**
- **Purpose:** Displays a list of currently connected data sources.
- **Layout:** Each data source is represented, potentially with:
- **Source Type Icon:** An icon representing the type of data source (e.g., a file icon for uploaded files, a GitHub icon for a GitHub repository).
- **Source Name:** The name assigned to the data source (e.g., "Product Documentation," "Company Policies").
- **Status Indicator:** A visual indicator (e.g., a green checkmark or a loading spinner) showing the status of the data source (e.g., "Connected," "Syncing," "Error").
- **Action Buttons:** Buttons or icons for managing the data source (e.g., "Sync Now," "Disconnect," "Settings").
- **Action Area:** An area on the right includes your connected data details in each connection folder. It includes the following components:
- A top zone to configure your current sources where you can configure your connected sources, your file uploads.
- The Search document bar to quickly navigate specific documents and a filter system next to it so you can filter the data via training tags.
- Below the search documents, there will be a list of data you connected with the Name, Last Sync, Data Size, Tags and Status (Pending, Ready)
- There’s a check box next to each data so you can easily delete your data.
### Adding a New Data Source
1. **Click the "+ Add Data Source" Button:** This opens the "Add Data Source" dialog, presenting the available data source options.
2. **"Add Data Source" Dialog:** This dialog displays a list of supported data source types.
3. **Data Source Options:** as of now, only File Upload is available for data connection. Other sources will be added soon.
- **File Uploads:**
1. Select Add Data Source and select file upload
2. You will need to create a folder for file upload first. Enter the folder name and click Create
3. Click Upload File button and find the files and document on your local.
4. Upload your files.
- **Supported File Types:**
- Text files (.txt)
- PDF (.pdf)
- CSV (.csv)
- Excel (.xlsx, .xls)
- Word (.docx, .doc)
- **File Size Limit:** 50MB per file request.
- **GitHub:**
1. Click on **GitHub** in the ""Add Data Source"" dialog
2. Enter your **GitHub Username** and press the setting for setting PAT(Personal Authentication Token)
3. Create a New Access Token:
4. To create a new token and select repos for syncing user can click on a link to navigate to `Settings`. Then provide a description, set expiration, and repository access.
5. Make sure to copy this token, because this token will never show again for security reason. There is a message: Make sure to copy your personal access token now as you will not be able to see this again.
6. Back to TypingMind setting form, and paste the personal access token into the ""Personal Access Token"" text field.
7. Click the ""Next >"" button (typically located in the bottom-right corner of the form) to save and proceed.
8. At the ""Connect to Github"" page, you can select a list of available repositories for synching with the account.
9. Select the list of repositories, then click ""Update Repository Selection"" if you want to update the current repo connection,
- **Notion:**
1. Click on **Notion** in the ""Add Data Source"" dialog.
2. Authenticate to use this plugin. (Click Authenticate Now to get permission) a popup shows up for authentication.
It will redirect the user to Notion's website to authenticate and authorize the integration.
3. The popup ""Allow TypingMind to access these pages"".
- Select the pages by clicking the checkbox. You can also search in the input field.
- There are the content to connect from the personal account of Notion, including:
- A search box that says ""Search for pages in name's Notion""
- Notion Pages with title will appear where user may select.
- After selecting pages, press the ""Allow access"" button. This will close the Notion popup and re-direct to TypingMind settings.
- If it is all setup perfectly, refresh the app to see the latest data connection.
- **Google Drive**
Connect to your Google Drive account to sync files and documents.
1. Select Add Data Source then select Google Drive
2. After select, the page is redirected to an authentication page where you can log into your Google account or select from your current logged-in account.
3. Confirm all Google Account Requirements"", the system will need the user to confirm the knowledge base system requires access to your Google Account.
4. After authenticating, you will be directed to a window to select a file you want to connect.
The selected files need to tick on the check box and click “Select”.
- **Web Scraper**
1. Click Add data source and Select ""Web Scraping"
2. You will need to create a folder for web scrape. Enter the folder name and create.
3. Click on Configure button to enter the URL to scrape manually, for example, with "[docs.typingmind.com](http://docs.typingmind.com/)"", the system will indicate if its valid if the font’s color change.
4. Select how many Pages that system will scrape.
5. After the link has been set, the system will start crawling into the website.
*A successful check should be like this “The source is processing please wait to the bot to grab it correctly
### **Add training tags to your files**
- After the document is uploaded to KB for each source document, you can assign Tags to categorize the document, so the agent can get more focus for training data based on user request.
- A popup will prompt to manage tags with the current object listed in top with count number, also shows available or newly created tags that are available to be selected. All applied changes are recorded under tags column after select
- Use click the current option to select/ unselect the available tags or type to create new tag on the top right corner of the popup. Click “+” icon to add the newly created tags.
- The training tags will be added to each data so you can easily assign those tags to the AI Agents.
### Configuring AI Agent Knowledge Base Access
1. **Navigate to the AI Agents Interface:** Go to the "Agents" section in the sidebar.
2. **Edit or Create an AI Agent:** Either edit an existing AI Agent or create a new one.
3. **Locate the "Knowledge Base Access" Section:** In the AI Agent configuration form, find the "Knowledge" section.
4. **Configure Access Options:**
- **Access all data in the knowledge base:** Allows the AI Agent to access all connected data sources.
- **Access only documents with specific tags:** Restricts access to documents with specific tags. This allows for fine-grained control over which information the AI Agent can utilize.
- Use case: if you want the agent to only see information from your own Notion or only access to internal files that is marked with a specific tag.
- User can click on “Only allow access to some knowledge based on training tags” to assign training data tags, which allow agents to access to data with those training tags.
5. **Save Changes:** Save the AI Agent configuration to apply the Knowledge Base access settings.
### Using the Knowledge Base in Chats (Native Integration)
- **Automatic Retrieval:** For all AI models, when you enable Search KB, TypingMind automatically queries the Knowledge Base when the conversation suggests information might be present in the uploaded data. You *do not* need to explicitly enable a plugin or mention the KB.
- **Triggering:** When the AI determines it needs information from the KB, it will:
- Display an intermediate message like "Using Search Knowledge Base" with the inferred search query
- Indicate the specific source document(s) being accessed (only available for AI models with plugins supported).
- Then, provide the final response incorporating the retrieved information.
- **Compatibility:** This native integration works directly in standard chats with all models.
- **"Toggle Knowledge Base" Button to enable search KB:**
- **Location:** Appears below the message input field as toggle button
- **Tooltip:** Hovering over the button displays "Toggle Knowledge Base".
- **Function:** Allows the user to enable/disable the automatic KB retrieval for the current chat session. Clicking it toggles the KB access on/off for turning on/off KB
### Using the Knowledge Base in Chats or AI Agents
1. Enable the "Search Knowledge Base" button within message area
2. **Start a Chat with a Configured AI Agent:** Initiate a chat session with an AI Agent that has been granted access to the Knowledge Base.
3. **Ask Questions:** Ask questions related to the content of the connected data sources. The AI Agent will automatically utilize the Knowledge Base to provide informed responses.
### How Knowledge Base works
The Knowledge Base (KB) via Personal License works at
### Best Practices
- **Markdown Formatting:** Use raw text in Markdown format whenever possible. LLMs understand Markdown well, leading to better content extraction and analysis.
- **Combine with System Prompts:** Combine Knowledge Base data with well-crafted System Prompts for optimal results.
### Limitations
- **Supported Data Sources:** File Uploads, Google Drive, Notion, GitHub, Web Scraping and more to come.
- **Supported File Types:** For file upload, we initially support text files, PDF, CSV, Excel, and Word documents.
- **Knowledge Base Limits:** Knowledge Base access is tied to your active TypingMind Cloud plans - which means KB usage is counted as part of your total cloud storage.
- **Knowledge Base Access:** Knowledge Base can be accessed through:
1. Standard chats: to activate Knowledge Base, please navigate the "Toggle Knowledge Base" button within the message area to enable Knowledge Base lookup in your conversation.
2. Configured AI Agents: assign specific knowledge base to Agent based on training tags - the Agent will be able to access to the knowledge base during the conversation.
- **Document Count Limit:** The number of documents that can be added to the Knowledge Base is limited by the available space of your cloud storage, not the document count.
Note: The limitations for KB feature on License version will be different with the limitations for Knowledge Base for Team version. To be specific, the KB feature on license version is tied to your cloud plan, you can upgrade your cloud plan to upgrade KB storage. The Knowledge Base via Admin Panel from Team version is limited to 1M training characters by default, to upgrade, you will purchase a new subscription at $10 per 1M training characters/month
### Frequently Asked Questions (FAQs)
- **Q: What are the underlying embedding models and techniques?**
- **A:** TypingMind uses a combination of embedding models and chunking techniques, continuously optimized for best retrieval quality. Specific details are not published to allow for ongoing improvements.
- **Q: How much data can I upload or connect?**
- **A:** Limits are based on your TypingMind Cloud plan, measured in file size.
- **Q: Are more connections to external sources (Dropbox, Intercom, etc.) planned?**
- **A:** Yes, integrations with these services are planned for future releases.
- **Q: Is this system the same as the one used in the TypingMind Team (Custom) version?**
- **A:** It's largely the same, but the Team version may have additional processing logic and optimizations for team-specific contexts.
- **Q: Do I need to link KB data to an AI Agent to use it?**
- **A:** No, you can use the KB directly in chats with any AI models as long as you enable the Search KB button within the message area. Linking to AI Agents is optional, primarily used to restrict an agent's access to specific tagged documents.
## App Settings
The "Settings" section in TypingMind provides access to a wide range of configuration options, allowing users to customize the application's behavior and appearance to suit their preferences. Here's a detailed breakdown of each setting category:
### Accessing the Settings Interface
1. **Locate the "Settings" Icon:** In the left sidebar, find the icon that represents the Settings. The icon typically depicts a gear or cogwheel.
2. **Click the "Settings" Icon:** Clicking this icon navigates you to the main Settings interface.
### Settings Interface Overview
The Settings interface is organized into several categories, each containing related settings. The categories are displayed in a vertical list on the left side of the interface.
#### Settings Categories:
1. **Account & Data:**
* **App Data & Storage:** Manages local data storage and import/export settings.
* **Cloud Sync & Backup:** Configures cloud synchronization and backup options.
2. **Preferences:**
* **General:** Adjusts general application settings.
* **Appearance:** Customizes the application's visual appearance.
* **Keyboard Shortcuts:** Customize the keyboard shortcuts.
* **Text-to-speech**: Configure the settings for text-to-speech.
* **Voice Input**: Configure the settings for voice input.
3. **Advanced Settings:**
* **Extensions**: Install the Javascript extensions to the apps.
* **Proxy & Org ID**: Set up the proxy & Org ID
### 1. Account & Data Settings
#### a. App Data & Storage
This section provides tools for managing the application's data, including exporting, importing, and deleting data.
* **You have \[number] saved prompts, \[number] plugins, \[number] custom models, \[number] characters, \[number] folders, \[number] chats with \[number] messages on this device.**: This line of text is a summary of the user's data.
* **Export Button:**
* **Function:** Exports all TypingMind data (chats, prompts, models, settings, etc.) to a single file.
* **Workflow:**
1. Clicking the "Export" button opens a modal window.
2. **Export Selections:** The modal window presents a list of checkboxes, allowing the user to select which data types to include in the export:
* Chats: Chat conversations
* Folders: Chat folders
* Prompts: Custom prompts
* Characters: User-defined characters
* Plugins: Installed plugins
* Profiles: User profiles
* Preferences: Application preferences
* Model Settings: Model configurations
* Keyboard Shortcuts: Customized keyboard shortcuts
* Custom Models: User-defined custom models
3. Click the "Download File" button. The download file name should follow this format: `20250223_175030_typingmind_exp`, with the first part showing the current date and time.
* Clicking "Download File" triggers a standard "Save As" dialog, allowing the user to choose the file name and location.
* The exported data is saved as a single file (typically in JSON format) containing all selected data types.
* **Import Button:**
* **Function:** Imports TypingMind data from a previously exported file.
* **Workflow:**
1. Clicking the "Import" button opens a file selection dialog.
2. The user selects the TypingMind export file (typically in JSON format).
3. TypingMind reads the data from the file and imports it into the application.
4. The imported data is merged with the existing data in the application.
5. A success or error message is displayed to indicate the status of the import process.
* **Delete All Local Data Button:**
* **Function:** Deletes all TypingMind data from the local device.
* **Workflow:**
1. Clicking the "Delete All Local Data" button displays a confirmation prompt ("Are you sure you want to delete everything?") to prevent accidental data loss.
2. The user must confirm the deletion by clicking "Delete".
3. TypingMind deletes all locally stored data, including chats, prompts, models, settings, and other user-defined content.
4. The application is reset to its default state, as if it were a fresh installation.
5. All local data is removed.
* **Import From OpenAI Link:**
* **Function:** Imports the chat history from OpenAI
* **Instruction:** The data imported only contains the chat history.
* **Workflow:**
1. Clicking the "Import From OpenAI" button opens a file selection dialog.
2. The user selects the OpenAI export file (typically in JSON format).
3. TypingMind reads the data from the file and imports it into the application.
* **How to export data from OpenAI? Link** A link will navigates to the instruction to show the steps.
* **Shared Data Section:**
* **Manage Shared Links Button:** This will shows the model to manage the shared link. This is mentioned above.
* **Storage Stats Section:**
* "All of your data is stored locally in your browser. Each browser has a different limit of how much data you can store. If you are running out of space, you can delete some of your old chats.": This is instruction for user
* **Metadata & User Data:**
* The storage bar is displayed to show off the capacity of data and percentage. For example, `0.07 MB (1.48%)`
* The storage limit of Metadata & User Data is `5.00 MB`.
* **Local Chat Data:**
* The storage bar is displayed to show off the capacity of data. For example, `42.66 MB`
* The storage limit of Local Chat Data is `555.81 GB`.
* "Please export and backup your chats regularly to avoid data lost! Learn how to protect your data.": A suggestion to let the user understand the importance of backup.
* **Archived Chats Section:**
* The Archived Chats sections displays the user's archived chats
* You have \[number] archived chats.
* **Manage Archived Chats**: Shows all archived chats and user can chose one to restore.
#### b. Cloud Sync & Backup
This section provides access to cloud sync and backup configurations. This is covered in the "CLOUD\_SYNC\_AND\_BACKUP\_FEATURES"
### 2. Preferences Settings
#### a. General
This section provides access to general application settings.
* **Stream AI responses word by word (typing animation):**
* **Function:** Toggles the streaming of AI responses.
* **Input Type:** Toggle switch.
* **Enabled State:** AI responses are displayed word by word, creating a "typing animation" effect.
* **Disabled State:** AI responses are displayed all at once after the AI has finished generating the entire response.
* "Cost estimation be less accurate when stream response is enabled.": A note to describe the accuracy.
* **Auto generate title for new chats:**
* **Function:** Enables or disables the automatic generation of chat titles.
* **Input Type:** Toggle switch.
* **Enabled State:** TypingMind automatically generates a title for new chats based on the first message.
* "Ask the AI assistant to generate a title based on the first message when starting a new chat. This will consume more tokens used in the first message. (All subsequent message tokens will not be affected.)"
* **Disabled State:** Chat titles must be manually entered by the user.
* **Advanced Settings:** An expandable section is displayed
* **Model For Title Generation:** Has options such as `Auto`, `Ollama / LLava`, `DeepSeek R1`, etc.
* **Instruction**: Provide instructions of the title's role.
* **Auto suggest relevant keywords after each message:**
* **Function:** Enables or disables the automatic suggestion of relevant keywords.
* **Input Type:** Toggle switch.
* **Enabled State:** TypingMind automatically suggests keywords based on the chat
* "Ask the AI assistant to suggest relevant keywords if the answer is more than 500 characters long. This will consume more of your token.": Text here
* **Advanced Settings:** An expandable section is displayed
* **Search Suggestions Link:** Select the suggestions engines: Google, DuckDuckGo, Bing, Brave, Kagi.
* **Sound notifications:**
* **Function:** Toggles sound notifications for new AI responses when the user is inactive.
* **Input Type:** Toggle switch.
* **Enabled State:** A sound notification is played when a new AI response is received while the user is not actively using the application.
* **Disabled State:** No sound notifications are played.
* **Reopen previous chat when app open:**
* **Function:** Toggles the automatic reopening of the most recent chat when the application is launched.
* **Input Type:** Toggle switch.
* **Enabled State:** TypingMind automatically reopens the most recent chat session when the application is launched.
* **Disabled State:** TypingMind opens to the main chat list when the application is launched.
* **Auto archive old chats:**
* **Function:** Automatically archives chats that are older than a specific period. Exceptions: Favorited chats, chats in folders, or chats with tags will not be archived automatically.
* **Input Type:** Toggle switch.
* **Archive chats older than**: Dropdown menu to select time, has options: `24 hours`, `48 hours`, `3 days`, `1 week`, `2 weeks`, `3 weeks`, `1 month`, `2 months`, `3 months`.
* **Auto delete archived chats:**
* **Function:** Automatically delete archived chats after they have been archived for a specific period.
* **Input Type:** Toggle switch.
* **Duration Before Deleting Archived Chats**: Dropdown menu to select time, has options: `24 hours`, `48 hours`, `3 days`, `1 week`, `2 weeks`, `3 weeks`, `1 month`, `2 months`, `3 months`.
#### b. Appearance
This section allows users to customize the application's visual appearance.
* **Theme:**
* **Function:** Sets the overall theme of the application.
* **Input Type:** Dropdown menu.
* **Options:**
* Light: Applies a light color scheme.
* Dark: Applies a dark color scheme.
* System: Uses the system's default theme (light or dark) based on the user's operating system settings.
* **Sidebar Color:**
* **Function:** Sets the color theme for the sidebar.
* **Visual Presentation:** Shows a color theme in the sidebar.
* **Reset to default:** The "Reset to default" button will be showed
* Click on color will bring up a popup, let the user choose the color of the sidebar.
* **Sidebar Style:**
* **Function:** Sets the overall style for the sidebar.
* **Input Type:** Dropdown menu.
* **Options:**
* Default: Applies a standard styling to the sidebar.
* Compact: Applies a compact styling to the sidebar.
* **Font Size:**
* **Function:** Sets the font size of the text in the application.
* **Input Type:** Dropdown menu.
* **Options:**
* Small: Applies a small font size.
* Medium: Applies a medium font size.
* Large: Applies a large font size.
* Extra Large: Applies an extra large font size.
* Extra Extra Large: Applies an extra extra large font size.
#### c. Keyboard Shortcuts
This section allows users to customize keyboard shortcuts for common actions within TypingMind.
* **Function:** Change the keyboard shortcuts.
* **Open Search:** Has options for user to change from `⌘ + K`, or `⌘ + [A-Z]`.
* **Toggle Sidebar**: Has options for user to change from `⌘ + G`, or `⌘ + [A-Z]`.
* **New Chat**: Has options for user to change from `⌘ + N`, or `⌘ + [A-Z]`.
* **Reset Chat**: Has options for user to change from `⌘ + R`, or `⌘ + [A-Z]`.
* **Regenerate**: Has options for user to change from `⌘ + E`, or `⌘ + [A-Z]`.
* **Clear Context**: Has options for user to change from `⌘ + J`, or `⌘ + [A-Z]`.
* **Toggle Plugins**: Has options for user to change from `⌘ + P`, or `⌘ + [A-Z]`.
* **Copy Last Message**: Has options for user to change from `⌘ + C`, or `⌘ + [A-Z]`.
#### d. Text-to-speech
This section allows users to configure the text-to-speech settings.
* **Speech API:**
* **Function:** Sets the text-to-speech engines
* **Input Type:** Dropdown menu.
* **Options:**
* Disabled: Disable text-to-speech
* ElevenLabs (Beta): Use text-to-speech with ElevenLabs
* OpenAI Text-to-speech: Use text-to-speech with OpenAI
* Browser (Web Speech API): Use text-to-speech with Browsers.
* **Voice Settings:**
* Displays only if text-to-speech has been enabled.
* **ElevenLabs**:
* A text box to enter the ElevenLabs API key.
* A "Register Here" link to navigate to ElevenLabs.
* After enter the API Key, a "Check Key" button is enabled to validate API Key.
* A dropdown menu to select the Voices, such as `Adam`, `Antoni`, etc.
* **Advanced Options**:
* Model: Eleven Flash v2
* Stability: Increasing stability will make the voice more consistent between re-generations, but it can also make it sounds a bit monotone. On longer text fragments we recommend lowering this value.
* Clarity + Similarity Enhancement: High enhancement boosts overall voice clarity and target speaker similarity. Very high values can cause artifacts, so adjusting this setting to find the optimal value is encouraged.
* Custom Voices. Can add name, voice ID. Can remove by double confirm.
* **OpenAI Text-to-speech**:
* A dropdown menu to select the Voices, such as `Alloy`, `Echo`, etc.
* **Advanced Options**:
* Model: TTS
* Speed: Can configure the speed of the AI reading.
* **Browser (Web Speech API)**:
* A dropdown menu to select the Voices, such as `Samantha`, `Bubbles`, etc.
* Rate: Slower and Faster slider
* Pitch: Lower and Higher slider
* **Test audio**: To input the text for testing
* "Hello, this is the test audio for the AI assistant."
* Can click on `Play` button to run the text-to-speech.
* **Show Play button after assistant messages:** Toggles the visibility of Play button.
* **Auto play assistant messages:** Enable to auto play the message.
#### e. Voice Input
This section allows users to configure the voice input settings.
* Speech API can chose:
* Web API (Free)
* OpenAI Whisper
* Groq Whisper
* Azure Whisper
* **Auto start recording when open**: User enable this so when the voice input function is trigger, it will automatically start the recording
* **Auto send the message after speaking**: User enable this, after the audio is completely recorded, and automatically transfer into message and send to AI assistant.
### 3. Advanced Settings
#### a. Extensions
The extensions allow users to inject Javascript extension to the apps.
* The guide text "Extensions allow you to load custom JavaScript into the application. This can be useful for adding custom functionality or integrating with other services."
* A "Learn More" link for more guide.
* A prompt "Note: Extensions have full access to the application and can read and modify any data. Only install extensions from sources you trust.":
* Enter extension URL, click `install`.
#### b. Proxy & Org ID
This section allows users to configure advanced network and proxy settings.
* OpenAI Chat Completions Endpoint (V1): Set up proxy. Can click on `Reset Default` to reset default value.
* Anthropic Chat Completions Endpoint: Set up proxy. Can click on `Reset Default` to reset default value.
* OpenAI Whisper Endpoint (V1): Set up proxy. Can click on `Reset Default` to reset default value.
* OpenAI API Org ID: Can click on `Reset Default` to reset default value.
* "Note: You may need to update your API key after changing the endpoint.": A guide to let the user know what to do after changing endpoint.
## Built-in Plugins
TypingMind comes with a range of built-in plugins, each designed to extend the capabilities of the platform. Here is a detailed list:
### 1. Web Search
- **Description:** Searches for information from the internet in real-time using Google Search.
- **Functionality:** Allows the AI to access up-to-date information from the web to answer user queries, provide context, or perform research.
- **Configuration:**
- Requires a Google Custom Search Engine ID and API Key.
- The overview tab provides two example query: `What's the gold price?`, and `How's the weather at HCMC at the moment?`.
- **Settings Tab:**
- **Search Engine ID (*):** This is the unique identifier for your Google Custom Search Engine. User can follow this pattern `03b41cca8970b5458c`.
- **Search Engine API Key (*):** This is your Google Custom Search API key. A long string of alphanumeric characters. For instance, `AIzaSyDIaJqTfPYwGsGCwUvdQkQ-08o9z24`.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"get_web_search_results"`.
- `description`: `"Search for information from the internet using Google Search."`.
- The `parameters` consists of properties such as `keyword`, `source` with `type`, and `description`.
Beside Web Search, there are plugins that are using for searching purpose:
- Web search using Serp API (provide more accurate data with structured data like snippets, ads, etc)
- Perplexity search using Perplexity API
### 2. DALL-E 3
- **Description:** Generates images using DALL-E 3 based on image descriptions. Adheres to guidelines such as English and avoiding specific content.
- **Functionality:** Allows users to create unique images directly from text prompts.
- **Configuration:**
- Requires an OpenAI API key.
- The overview tab provides one example query: `Generate a picture of a cat`.
- **Settings Tab:**
- No settings.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"image_generation_via_dalle_3"`.
- `description`: `"Generate images using DALL-E 3 based on image descriptions. Adhere to guidelines such as English and avoiding specific content."`.
- The `parameters` consists of properties such as `prompt`, `quality`, `resolution`, `n`, `size` with `type`, and `description`.
Other plugins to generate images:
- GPT Image Editor to generate image using OpenAI API
- Generate Image Grok to generate image using Grok API
- Stable Diffusion v2/v3 to generate image using Stable Diffusion API
For native image generation (without using plugins), please consider using Gemini 2.5 Flash model.
### 3. Simple Calculator
- **Description:** Helps the AI assistant do math calculations more accurately.
- **Functionality:** Provides the AI with the ability to perform calculations, ensuring more precise and reliable answers to mathematical queries.
- **Configuration:** No API Keys needed
- **Settings Tab:** No settings.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"get_calculation_result"`.
- `description`: `"Calculate a math expression. For example, "2 + 2" or "2 * 2". The expression must be a valid JavaScript math expression for the calculation."`.
- The `parameters` consists of properties such as `expression` with `type`, and `description`.
- The overview tab provides two example query: `What is the total of 2 pi?`, and `What is 2*10?`.
### 4. Interactive Canvas
- **Description:** Renders an interactive canvas with HTML source to the user interface. The HTML source can include forms, games, visualizations, or any other interactive content.
- **Functionality:** Allows the AI to create dynamic and interactive experiences within the chat interface.
- **Configuration:** No API Keys needed
- **Settings Tab:** No settings.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"render_interactive_canvas"`.
- `description`: `"Render an interactive canvas with HTML source to the user interface. The HTML source can include forms, games, visualizations, or any other interactive content."`.
- The `parameters` consists of properties such as `htmlSource`, `canvasWidth`, and `canvasHeight` with `type`, and `description`.
- The overview tab provides three example query: `create a form with a text Input and a submit button`, `render a simple tictactoe game`, and `render a smiley face in SVG in the interactive canvas`.
### 5. Render Chart
- **Description:** Generate a Chart.js chart.
- **Functionality:** Enables the AI to create and display various types of charts based on data provided in the prompt.
- **Configuration:** No API Keys needed
- **Settings Tab:** No settings.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"render_chart"`.
- `description`: `"Generate a Chart.js chart."`.
- The `parameters` consists of properties such as `chartType`, `title`, `data`, and `options` with `type`, and `description`.
- The overview tab provides two example query: `create a bar chart with the following data: labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"], data: [12, 19, 3, 5, 2, 3]`, and `render a pie chart with these categories: ["Electronics", "Fashion", "Home & Garden", "Toys", "Sports"], values: [25, 15, 20, 10, 30]`.
### 6. Perplexity Search
- **Description:** Search for information from the internet using Perplexity.
- **Functionality:** Allows the AI to search for up-to-date information, providing different models.
- **Configuration:**
- Requires a Perplexity API key.
- **Settings Tab:**
- **Perplexity API Key (*):** A text input field to enter the Perplexity API Key, with link to Perplexity API key page.
- **Model:** A dropdown menu to select the model, with options such as `llama-3.1-sonar-small-128k-online`.
- **System Message:** A text input field to set the system message. A recommendation here is `Be precise and concise`.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"search_via_perplexity"`.
- `description`: `"Search for information from the internet using Perplexity."`.
- The `parameters` consists of properties such as `keyword` with `type`, and `description`.
- The overview tab provides two example query: `What's the gold price?`, and `How's the weather at HCMC at the moment?`.
### 7. Stable Diffusion v2 Image
- **Description:** Generate images using Stable Diffusion based on a text description. Adhere to guidelines such as avoiding specific content.
- **Functionality:** Allows users to create images with clear instruction.
- **Configuration:**
- Requires a StabilityAI API Key.
- **Settings Tab:**
- **StabilityAI API Key (*):** A text input field to enter the StabilityAI API Key, with link to StabilityAI keys page.
- **Width of the image (min: 320, max: 1536):** Dropdown menu to select the number from `512` to `1024`.
- **Height of the image (min: 320, max: 1536):** Dropdown menu to select the number from `512` to `1024`.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"image_generation_via_stable_diffusion"`.
- `description`: `"Generate images using Stable Diffusion based on a text description. Adhere to guidelines such as avoiding specific content."`.
- The `parameters` consists of properties such as `prompt`, `width`, and `height` with `type`, and `description`.
- The overview tab provides three example query: `Create an image of a majestic lion standing proudly on a cliff overlooking a vast savanna at sunset.`, `Generate a vibrant cyberpunk cityscape illuminated by neon signs and bustling with activity.`, and `Draw a photorealistic portrait of a woman with fiery red hair and emerald green eyes.`.
### 8. Stable Diffusion v3 Image
- **Description:** Generate images using Stable Diffusion v3 based on a text description. Adhere to guidelines such as avoiding specific content.
- **Functionality:** Allows users to create images with clear instruction.
- **Configuration:**
- Requires a StabilityAI API Key.
- **Settings Tab:**
- **StabilityAI API Key (*):** A text input field to enter the StabilityAI API Key, with link to StabilityAI keys page.
- **Format of the generated image:** A dropdown menu to select image format, such as png, jpeg, and webp.
- **Aspect ratio of the generated image:** A dropdown menu to select ratio, such as `1:1`, `4:3`, and `16:9`.
- **Model to use for generation:** A dropdown menu to select model, such as `sd3-large`.
- **Negative prompt:** A text input field to enter negative prompts, such as `shadow` and `complex`.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"image_generation_via_stable_diffusion_3"`.
- `description`: `"Generate images using Stable Diffusion v3 based on a text description. Adhere to guidelines such as avoiding specific content."`.
- The `parameters` consists of properties such as `prompt` with `type`, and `description`.
- The overview tab provides three example query: `Create an image of a majestic lion standing proudly on a cliff overlooking a vast savanna at sunset.`, `Generate a vibrant cyberpunk cityscape illuminated by neon signs and bustling with activity.`, and `Draw a photorealistic portrait of a woman with fiery red hair and emerald green eyes.`.
### 9. Image Search
- **Description:** Search for images from the internet in real-time using Google Search.
- **Functionality:** Allows the AI to access image data from the web with user queries, provide more details about the image.
- **Configuration:**
- Requires a Google Custom Search Engine ID and API Key.
- **Settings Tab:**
- **Search Engine ID (*):** This is the unique identifier for your Google Custom Search Engine. User can follow this pattern `03b41cca8970b5458c`.
- **Search Engine API Key (*):** This is your Google Custom Search API key. A long string of alphanumeric characters. For instance, `AIzaSyDIaJqTfPYwGsGCwUvdQkQ-08o9z24`.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"search_images_via_google"`.
- `description`: `"Search for images from the internet in real-time using Google Search."`.
- The `parameters` consists of properties such as `keyword` with `type`, and `description`.
- The overview tab provides one example query: `Show me a cute cat picture`.
### 10. Web Page Reader
- **Description:** Read the text content from a web URL.
- **Functionality:** Read the text in the URL.
- **Configuration:**
- Requires Plugin Server.
-Important notes is displayed: `This plugin requires a plugin server to be set up. Learn how to set up a plugin server here (open-source)`. `Long web pages may results in long response and consume more tokens or exceed the maximum context length. This plugin is best used for short articles or blog posts.
- **Settings Tab:**
- **Plugin Server (*):** A text input field to enter Plugin Server.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"read_web_page_content"`.
- `description`: `"Read the content of a web page via its URL."`.
- The `parameters` consists of properties such as `url` with `type`, and `description`.
- The overview tab provides one example query: `summarise this article https://www.cnbc.com/2024/03/15/ceo-of-top-ocean-freight-carrier-hapag-lloyd-on-global-economy-demand.html`.
### 11. Market News
- **Description:** Fetches market news articles from Alpha Vantage. This plugin automatically displays the fetched news.
- **Functionality:** Provides up-to-date financial information.
- **Configuration:**
- Requires an Alpha Vantage API key.
- **Settings Tab:**
- **Alpha Vantage API Key (*):** A text input field to enter the Alpha Vantage API Key, with link to Alpha Vantage API keys page.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"fetch_market_news_sentiment"`.
- `description`: `"Fetches market news articles from Alpha Vantage. This plugin automatically displays the fetched news."`.
- The `parameters` consists of properties such as `searchMode`, `searchTerms`, `time_from`, `time_to`, `tickers`, and `topics` with `type`, and `description`.
- The overview tab provides three example query: `Give me market news about Apple stock`, `Show me the latest news about Bitcoin`, and `Give me news about the IPO and earnings in the finance sector from last week`.
### 12. Javascript Interpreter
- **Description:** Execute a Javascript code snippet that evaluates to a readable value or a Promise. Use this function with caution.
- **Functionality:** Provides Javascript interpreter and run the code in the environment.
- **Configuration:** No API Keys needed
- **Settings Tab:** No settings.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"execute_javascript"`.
- `description`: `"Execute a Javascript code snippet that evaluates to a readable value or a Promise. Use this function with caution."`.
- The `parameters` consists of properties such as `code` with `type`, and `description`.
- The overview tab provides two example query: `Send a request to the GitHub public API`, and `What is the current time?`.
### 13. Mermaid Diagram
- **Description:** Generate and render diagrams using the Mermaid.js library (version 10.x). This can be used to render various types of diagrams, including Flowchart, Sequence Diagram, Class Diagram, etc..
- **Functionality:** Generate diagrams.
- **Configuration:** No API Keys needed
- **Settings Tab:** No settings.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"render_mermaid_diagram"`.
- `description`: `"Generate a diagram using Mermaid.js (version 10.x). This can be used to render various types of diagrams, including Flowchart, Sequence Diagram, Class Diagram, etc."`.
- The `parameters` consists of properties such as `title`, and `source` with `type`, and `description`.
- The overview tab provides two example query: `render a state diagram of a simple traffic light system`, and `render a sequence diagram of a simple message exchange`.
### 14. Azure AI Search (Cognitive Search)
- **Description:** This plugin connects TypingMind to your training data in Azure AI Search (Cognitive Search).
- **Functionality:** Azure AI Search the internal training data for relevant information
- **How to Use:** When the user asks the AI a question but the AI does not have the answer, the AI will query the training data in Azure AI Search to find the answer. Sometimes, you need to ask the AI to specifically search from the training data if the AI does not do it automatically.
- **Configuration:**
- Needs to have an Azure AI Search service and an index with training data.
- **Settings Tab:**
- **Search Service Name (*):** Find this in the "Azure AI Services" section in the Azure portal.
- **Index Name (*):** Find this in "Search managements" -> "Indexes" page in the Azure portal.
- **Query Key (*):** Find this in "Settings" -> "Keys" page in the Azure portal.
- **API Version:** The field contains the URL for version of API, with a link for Microsoft website.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"query_training_data"`.
- `description`: `"Search the internal training data for relevant information. When the user asks you something."`.
- The `parameters` consists of properties such as `query` with `type`, and `description`.
- The overview tab provides two example query: `search from training data for the latest refund policy`, and `who is the founder of the company (search from training data)`.
- **HTTP Action Tab:** The tab shows the POST method.
Related plugins: use OpenAI File Search if you want to connect your training data in OpenAI to TypingMind
### 15. Slack Webhook Message Notifier (OAuth)
- **Description:** This function sends an authorized user's message to a specific Slack channel via an HTTP action.
- **Functionality:** It sends user's message to a Slack channel.
- **How to Use:** Has two options: Send a summary of this document to my Slack channel, and Send a summary of my document to my Slack channel with <>.
- **Configuration:**
- Requires a webhook URL from Slack.
- **Important notes:** You need to enable Slack Webhook URL from Slack.
- **Settings Tab:**
- A text input field to enter the Slack Webhook URL (*).
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"send_message_to_slack_channel_with_webhook"`.
- `description`: `"This function sends a message to a Slack channel via an incoming webhook"`.
- The `parameters` consists of properties such as `message` with `type`, and `description`.
### 16. Google Calendar (OAuth)
- **Description:** Return the next 10 events in the current user Google's calendar starting from a specific time.
- **Functionality:** Return the events from Google Calendar
- **Important notes:** Give AI read-only access to your Google Calendar.
- **OauthNotes:** TypingMind is a static web app intended for single user uses, which means you will need to provide your own OAuth client and the authorization/authentication flows are all performed in the client side. We recommend using [Server Plugins](/) for more convenience way to use OAuth 2.0 authentication in your plugin.
- Set up OAuth Credentials.
- Settings Tab
- Number of events to return from the Google Calendar API (default: 10)
- **Max Results:** Number input here.
- Auth Tab
- Set up OAuth Credentials for the Plugin
-OAuth Callback URL for this plugin: This URL is only valid for the current plugin. (This will show the `https://www.typingmind.com` URL)
-OAuth Client ID : Get the client ID from your OAuth provider. ( A text box here)
-OAuth Client Secret : Get the client secret from your OAuth provider. (A text box here)
-Click "Save Credentials"
-Authenticae to use this plugin. (Click Authenticate Now to get permission)
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"get_google_calendar_events"`.
- `description`: `"Return the next 10 events in the current user Google's calendar starting from a specific time"`.
- The `parameters` consists of properties such as `timeMin` and `timeMax` with `type`, and `description`.
- **HTTP Action Tab:** The tab shows the GET method.
### 17. Read Web Page (Firecrawl)
- **Description:** Retrieves the content of a web page by scraping it using the Firecrawl API.
- **Functionality:** Firecrawl Web Page.
- **Configuration:**
- Requires Firecrawl API Key. Set up your Firecrawl API Key and Authenticate:
-Firecrawl API requires an API key for access.
-Update the plugin's user settings.
- **Settings Tab**
- **Firecrawl API Key (*):** A text input field to enter Firecrawl API Key
- Select either "only Main Content" or "Full Webpage Content" from the dropdown.
- **Important Notes:** There are rate limits for API requests depending on different pricing plans.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"get_web_page_content_scraped_by_firecrawl"`.
- `description`: `"Retrieves the content of a web page by scraping it using the Firecrawl API."`.
- The `parameters` consists of properties such as `pageUrl` with `type`, and `description`.
- **HTTP Action Tab:** The tab shows the POST method.
### 18. Send email with Zapier
- **Description:** This plugin allows the AI assistant send email to specific email addresses with custom subject and content using Webhook by Zapier.
- **Functionality:** Send email.
- **Important Notes:** This plugin requires a webhook URL from Zapier.
- **Settings Tab**
- A text input field to enter Zapier webhooks, name :Webhooks URL (*)
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"send_email_with_zapier"`.
- `description`: `"Send an email to a specific email address with title and text content using Zapier webhook."`.
- The `parameters` consists of properties such as `email`, `subject`, and `content` with `type`, and `description`.
- **HTTP Action Tab:** The tab shows the POST method.
### 19. PowerPoint Generator
- **Description:** Generate a PowerPoint file and return the URL for downloading it.
- **Functionality:** Generate a PowerPoint file.
- **Configuration:** No API Keys needed, Requires a plugin server.
- Settings Tab
- **Plugin Server (*)** A text input field to enter the URL of the plugin server
- **Slide Layout** (Dropdown. Default: LAYOUT\_WIDE).
- **Title Font Size** ( A textbox here)
- **Header Font Size** ( A textbox here)
- **Body Font Size** ( A textbox here)
- **Font Family** (Dropdown. Default: Calibri)
- **Background Color** ( A textbox here)
- **How to Deploy Plugins Server on Render**.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"generate_powerpoint_file"`.
- `description`: `"Generate a PowerPoint file and return the URL for downloading it. If the download url is not present, it means something is wrong with the plugin server's API key"`.
- The `parameters` consists of properties such as `sections` with `type`, and `description`.
- **HTTP Action Tab:** The tab shows the POST method.
### 20. Word Generator
- **Description:** Generate a Word document based on the given sections, title, header, and footer, and return the URL for downloading it. If the download url is not present, it means something is wrong with the plugin server's API key.
- **Functionality:** Generate a Word document
- **Configuration:** No API Keys needed, Requires a plugin server.
- Settings Tab
- **Plugin Server (*)** A text input field to enter the URL of the plugin server
It Supports:
-Multiple sections with hierarchical numbering format.
-Adding header, footer, and page number.
-Adding table.
-Adding list with bullet points.
-Adding table of content.
-Adding page break.
- **Functions** tab: display the number of functions using for the plugin, click to Edit the plugin to view the full source code in Javascript:
- `name`: `"generate_word_file"`.
- `description`: `"Generate a Word document based on the given sections, title, header, and footer, and return the URL for downloading it. If the download url is not present, it means something is wrong with the plugin server's API key."`.
- The `parameters` consists of properties such as `sections` with `type`, and `description`.
- **HTTP Action Tab:** The tab shows the POST method.
### 19. Extract Web Page (Firecrawl)
- **Description:**A plugin to extract information from a web page using Firecrawl Extract API.
This plugin returns much more concise results compared to reading the whole web page, saving context limit and help reduce cost.
- **Functionality:** Extract Web Page
- **Configuration:**
- Requires Firecrawl API Key. Set up your Firecrawl API Key and Authenticate:
-Firecrawl API requires an API key for access.
-Update the plugin's user settings.
- **Settings Tab**
- **Firecrawl API Key (*):** A text input field to enter Firecrawl API Key
- **Important Notes:** There are rate limits for API requests depending on different pricing plans.
- **Functions** tab: display the function using for the plugin, click to Edit the plugin to view the full source code in Javascript.
### 20. Deep Research
- **Description:** The Deep Research plugin is designed to perform comprehensive research on a specific topic, compile a detailed final report, and can optionally draft a research plan, search the web, and read web pages. This plugin is particularly useful for users needing in-depth information synthesis from multiple online sources.
- **Functionality:**
- Conducts web searches using Serp API.
- Reads the full content of web pages using Firecrawl API.
- Synthesizes information to generate a comprehensive research report.
- **Configuration:**
- Requires API keys from two external services to function:
- **Serp API Key:** This key is used for the Web Search tool, enabling the plugin to perform internet searches. Users must sign up at serpapi.com to obtain this key.
- **Firecrawl API Key:** This key is used for the Read Web Page tool, allowing the plugin to extract and read content from specified URLs. Users can get their API key from firecrawl.dev/api-keys.
- **Settings Tab:**
- **Serp API Key (*):** A text input field where the user enters their Serp API key. The field is masked for security (e.g., ".*.*.*.*").
- **Firecrawl API Key (*):** A text input field where the user enters their Firecrawl API key. This field is also masked for security.
- **Research Mode:** A dropdown menu that allows users to select the depth and cost-efficiency of the research process.
- **Lightweight Mode (Default):** In this mode, the plugin attempts to extract data from online sources using Firecrawl's extract tool. This saves tokens by reducing the amount of data processed, but may result in reduced data accuracy.
- **Comprehensive Mode:** This mode instructs Deep Research to read the full content of relevant web pages. While it offers more accurate results, it can consume a significant number of tokens, especially for long web pages, and may exceed the AI model's context length limit.
- **Dynamic Mode:** This mode starts in "Lightweight Mode" by default but can dynamically switch to "Comprehensive Mode" if the AI determines that a more in-depth read of a web page is necessary for a complete answer.
- **Activation and Usage in Chat:**
1. **Enable Plugin:** Ensure the "Deep Research" plugin is enabled in the Plugin settings.
2. **Compose Prompt:** The user inputs a detailed research query into the chat interface (e.g., "Investigate how surfacing advanced features gradually (vs. exposing them all upfront) impacts both power users and new users. Example: Salesforce, Notion, or Figma — what happens when "power features" overwhelm new users?").
3. **Plugin Execution:** Upon sending the prompt, the plugin is invoked and displays its progressive steps within the chat:
- **Research Plan Generation:** The plugin first creates a "Deep Research Research Plan," outlining its strategy to address the query.
- **Web Search:** It then performs "Deep Research Search Web" operations, displaying keywords used for searching (e.g., "progressive disclosure software user experience").
- **Web Page Reading:** The plugin proceeds to "Deep Research Read Full Web Page" for identified relevant URLs (e.g., articles from nngroup.com, interaction-design.org, ffrankspillers.com). Each URL read is displayed as a separate step.
4. **Progress Update:** After completing its research tasks, the plugin provides a "Progress Update" message summarizing its findings and the sources reviewed.
5. **Final Report:** The AI then generates a "Research Report" based on the synthesized information.
- **Example Query:** "Investigate how surfacing advanced features gradually (vs. exposing them all upfront) impacts both power users and new users. Example: Salesforce, Notion, or Figma — what happens when "power features" overwhelm new users?"
- **Customization:**
- This plugin is customizable. Users can **duplicate this plugin** and integrate their own tools to improve the quality and scope of the final report.
- The plugin's system instructions and prompts are accessible within its source code, allowing for direct modification.
- **Default Tools:** By default, the Deep Research plugin is equipped with three core tools: "Research Plan," "Search Web," and "Read Web Page."
- **Adding Custom Tools:** Depending on specific requirements, users can add more specialized tools. Examples include:
- Reading content from social media (e.g., a tweet).
- Searching internal or private databases.
- Controlling a web browser for complex interactions.
- The TypingMind plugin system supports various implementation methods for custom tools, including JavaScript code, HTTP requests, or Model Context Protocol (MCP).
- **Learn More:** Detailed instructions on developing TypingMind plugins are available at DEVELOP_CUSTOM_PLUGINS.
- **Token Usage Considerations:**
- This plugin is designed to use multiple tools across multiple turns of interaction, which can lead to significant token consumption.
- A typical deep research task can run for up to 2 minutes, involving numerous API calls and data processing steps.
- Users are advised to **monitor token usage closely** to manage costs.
- To enhance token efficiency, users can modify the plugin by adding their own optimized tools for web searches and reading web pages, potentially integrating more selective data extraction methods.
### 21. OpenAI File Search
- **Description:** This plugin enables your system to search internal training data using the OpenAI File Search tool. It retrieves relevant information from a knowledge base of files you've uploaded.
- **How to Use:** When the user asks the AI a question but the AI does not have the answer, the AI will query the training data in your OpenAI vector store to find the answer. Sometimes, you need to ask the AI to specifically search from the training data if the AI does not do it automatically.
- **Example Usage:**
- `"Search the training data for details on company leadership."`
- `"Find information on our latest product update (search training data)"`
- **Configuration:** To get started with OpenAI File Search, follow the guidelines to set up OpenAI File Search.
- **Settings Tab:**
- **API Key (*):** A text input field to enter your OpenAI API key, with a link to `https://platform.openai.com/account/api-keys` for obtaining it.
- **Vector Store ID (*):** A text input field for the Vector Store ID. This ID can be found in `Dashboard` > `Storage` > `Vector stores`. It's explicitly noted that "This vector store must be associated with the API Key you're using." An example ID `vs_67d14b43b02c8191d7f7a15ba8a63d1` is shown.
- **Model:** A text input field to specify the AI model to use. The default is `gpt-4o`.
- **Max Results:** A numeric input field to set "The maximum number of search results to return." The default is `3`.
- **Functions tab:** Display `openai_file_search`.
- `name`: `"openai_file_search"`.
- `description`: `"Search the internal training data for relevant information. Use this function when the user's question falls outside of the assistant's immediate knowledge. Provide specific keywords or topics (not complete questions) to retrieve the best search results."`.
- **HTTP Method:** `POST`.
### 22. Web Search (Serp)
- **Description:** This plugin allows the AI assistant to search for information from the internet in real-time using Google Search (via SerpApi).
- **Usage Instructions:** A yellow warning box indicates "Serp API Key needed. Click the Settings tab and enter your Serp API Key. To get your API Key, create a Serp account."
- **Example Usage:**
- `"What's the gold price today?"`
- `"How's the weather in SF at the moment?"`
- **Settings Tab:**
- **Serp API Key (*):** A text input field to enter the Serp API Key, with a link to `serpapi.com` for signing up.
- **Functions tab:** Display `search_via_serpapi`.
- `name`: `"search_via_serpapi"`.
- `description`: `"Search for information from the internet in real-time using Google Search via SerpApi."`.
### 23. Todo List
- **Description:** A tool to help AI plan and keep track of long-running tasks more efficiently. This tool is most useful when combined with other tools for deep research and reasoning.
- **Settings Tab:** No settings.
- **Functions tab:** Display `todo_write`.
- `name`: `"todo_write"`.
- `description`: `"A tool to help AI plan and keep track of long-running tasks more efficiently."`.
### 24. Generate Image Grok
- **Description:** A TypingMind plugin that generates high-quality images using xAI's Grok image generation model.
- **Overview:** This plugin integrates xAI's powerful Grok image generation capabilities directly into TypingMind, allowing you to create stunning images from text descriptions with simple natural language commands.
- **Get your xAI API Key:** Instructions provided to obtain an API key:
- Visit `https://console.x.ai`.
- Sign up or log in to your xAI account.
- Generate an API key.
- **Example Usages:**
- `"Create an image of a cozy coffee shop"`
- `"Generate a picture of a golden retriever"`
- **Settings Tab:**
- **xAI API Key (Required) (*):** A text input field to enter the xAI API Key. The text underneath states: "The images will be generated using this xAI API. Get your API key from `https://console.x.ai`".
- **Default Image Count:** A numeric input field (with up/down arrows) for the "Number of images to generate by default (1-4)." The placeholder is `Default Image Count`.
- **Functions tab:** Display `generate_image_grok`.
- `name`: `"generate_image_grok"`.
- `description`: `"Generate images using xAI's Grok image generation model based on text descriptions."`.
## Chat with Documents Feature
The "Chat with Documents" feature in TypingMind allows users to upload documents and engage in conversations with the AI about their content. The AI can extract information, summarize, analyze, and answer questions based on the uploaded documents.
### Uploading Documents
1. **Open a Chat Session:** Start or open an existing chat session in TypingMind.
2. **Locate the "Attachment" Button:** In the message input area (where you type your messages), find the paperclip icon.
3. **Click the "Attachment" Button:** Clicking this button opens a standard file dialog.
4. **Select Files:** Browse your computer and select the document(s) you want to upload. TypingMind typically supports a variety of file types, including:
- PDF (.pdf)
- DOCX (.docx)
- TXT (.txt)
5. **Click "Open":** After selecting the file(s), click the "Open" button in the file dialog.
6. **File Upload and Display:** TypingMind will upload the selected document(s) and display them in the chat interface as attachments.
- Each uploaded document is displayed as a separate attachment.
- The attachment displays the file name and icon.
- The attachment displays the character count of the document.
- The attachment displays the token count of the document, prefixed with "~" character.
- The attachment displays the estimated cost of processing the document, enclosed in parentheses and prefixed with a currency symbol (e.g., ($0.008)).
### Chatting with the AI About the Documents
1. **Compose Your Message:** In the message input field, type your question or prompt related to the uploaded document(s).
- Be as specific as possible in your question to guide the AI's analysis.
- You can ask the AI to:
- Summarize the document.
- Extract specific information.
- Answer questions based on the content.
- Analyze the document for patterns or insights.
2. **Send Your Message:** Click the "Send" button to send your message to the AI.
3. **AI Processing and Response:** The AI will analyze the uploaded document(s) and generate a response based on your question.
- The AI's response will be displayed in the chat interface, just like a normal conversation.
- The AI may cite specific passages from the document to support its answer.
4. **Example Interaction:**
- **User:** "what's the refund policy?"
- **AI:** "Based on the Terms of Service document, here is the refund policy for TypingMind: All purchases are refundable within 14 days of purchase, no questions asked. This applies to: Regular TypingMind purchases, Custom Deployment subscriptions..."
### Additional Details
- **Token Usage:** Uploading and processing documents consumes tokens. The token count for each document is displayed in the chat interface.
- **Cost Estimation:** TypingMind estimates the cost of processing the document based on the token count and your AI model's pricing.
- **Document Limits:** There may be limits on the number of documents you can upload per chat session, the size of individual documents, or the total number of tokens that can be processed.
- **AI Model Compatibility:** Some AI models may be better suited for processing documents than others. Experiment with different models to find the best performance.
- **Data Security:** TypingMind processes documents securely. Ensure you are familiar with TypingMind's data privacy policies.
## Artifact Panel Features
The Artifact Panel in TypingMind is a dedicated, interactive sidebar designed to display and manage the output of plugins, particularly rich content like Interactive Canvas results (HTML/CSS/JS code). It provides users with tools to preview, interact with, copy, and switch between different versions of plugin-generated content.
### Artifacts Panel Interface Overview
The Artifacts panel typically appears as a slide-out sidebar on the right side of the chat interface. It is visually distinct from the main chat area, often using a different background color or a subtle border to separate it.
The Artifacts panel generally consists of the following elements:
- **Panel Header:**
- **Panel Title:** Displays the title of the panel, which is typically a label indicating the type of content displayed. Example: “Interactive Canvas”. When multipe object was created, it will show "Artifacts".
- **Dropdown Menu:** A dropdown menu might display here. When the type is the same, for example, multiple Interactive Canvas was created, it can be used to select the right object to show.
- **Pin Icon:** An icon that pins the artifact. Hovering on the icon will show "Unpin". Pin the artifact will keep it on top.
- **Close Icon:** An icon that remove the artifact from the panel. Hovering on the icon will show "Remove from panel". The object in the chat history will not be removed.
- **Artifact Content Area:**
- **Preview Mode:**
- Displays a visual representation of the artifact's content.
- For interactive canvases: The HTML code is rendered as a live, interactive preview.
- The preview area respects the specified dimensions (width and height) of the canvas, providing an accurate representation of the content.
- Functionality:
- Users can interact directly with the rendered content (e.g., click buttons, fill out forms, play games).
- **Code Mode:**
- Displays the underlying code that generates the artifact.
- For interactive canvases: The HTML, CSS, and JavaScript code that define the canvas is shown in a text editor.
- Syntax Highlighting: The code is formatted with syntax highlighting to improve readability.
- Copy to Clipboard: A "Copy Code" button (typically a clipboard icon) allows users to quickly copy the code to the clipboard. When clicked, a tooltip "Copied!" shows.
- Function: Copies all the code in the code mode and stores for user.
- **View Tabs**: Toggle between `Preview` mode or `Code` mode, which can be used for all kind of objects
- **Version Selection**: If there are multiple version of this Artifacts, the select box is enabled for user to select.
- **Artifact-Specific Actions Toolbar:** A toolbar located above or below the preview area provides access to common actions. The action icons will only take up the content space, and the rest will be hidden.
- **""View in artifacts panel"" Text:** Once an object is created, a line of text "interactive Canvas - View in Artifacts" will show up. Clicking on it will bring the object to focus in the Artifacts panel.
- **Copy the content**: Clicking the "Copy" icon will copy the Javascript HTML code. After the copy, there will be a popup text `Copied!`.
- This button only shows at `Code` mode.
- Use copy the code to other place
- **Open in a new window**: Clicking the new window button to view in a popup window.
- This button is to open a new popup to show the entire object.
- **Show in artifacts panel**
- **Artifact-specific Actions:** The three dots "More options"
- Remove
- Fork chat from here
### Using Artifacts
The Artifacts panel provides several ways to utilize the generated content:
1. **Previewing Artifacts:**
- Click the "Preview" tab to show the content.
- The content in the Artifacts Panel is based on its type.
2. **Accessing and Copying Code:**
- Click the "Code" tab to display the code of the object.
- By click the `Copy` button, you can copy the code.
- Use the content anywhere you want.
3. **Opening Artifacts in a Separate Window:**
- An "Open in separate window" icon (typically a new window icon) is available on the artifact's card.
- Clicking this icon opens the artifact's content in a new browser window or tab.
- This is particularly useful for interactive canvases, as it allows the user to view and interact with the content in a full-screen environment.
4. **Navigating artifact versions:**
- If multiple versions of the artifact is created, the user can click through `<` and `>` to move from the list, or select from the dropdown version list.
- After the selection, the content in the panel will shows off, according to the version selected.
## Canvas Editor Features
The Canvas Editor in TypingMind provides a rich, in-line editing experience for modifying AI-generated content. This feature allows users to refine and customize text directly within the chat interface, offering formatting options, rewriting suggestions, and raw Markdown editing capabilities.
### Accessing the Canvas Editor
There are two primary methods for accessing the Canvas Editor:
1. **Via message actions**: When the AI generates a message, the user can hover on it to trigger the quick actions, and then click the `Edit in Canvas` button to trigger the Canvas Editor.
2. **Directly after initial rendering**
### Canvas Editor Interface Overview
The Canvas Editor occupies the main content area (right side), replacing the standard chat display with a dedicated editing environment.
The Canvas Editor interface typically consists of the following elements:
- **Editing Toolbar (Top):** A horizontal toolbar located at the top of the Canvas Editor, providing access to common editing actions and settings.
- **Model Selection:** Displays the currently selected AI model (e.g., "GPT-4o").
- **Temperature Selection:** Select the temperature of the model.
- **Format Selection:** Displayed on the left side of the toolbar, with `Normal Text` as the placeholder, allowing the user to change the current text type. The options including:
- `Normal text`
- `Heading 1`
- `Heading 2`
- `Heading 3`
- `Bullet List`
- `Numbered List`
- `Quote`
- `Code`
- **Rewrite**:
- When user click on a text and select `Rewrite`, this will trigger the `Rewrite` action of the text.
- The drop down option includes: `Make it shorter`, `Make it longer`, `Make it friendlier`, `Make it more professional`.
- It is displayed as a blue button
- **Edit Raw**:
- Toggles to the raw markdown content editor, where user can directly edit the content.
- It is displayed as a grey button
- Refer to the Edit Raw Mode section.
- **Close button**: On the top right corner, user can press X to close Canvas Editor.
- **Text Input Area (Main Content Area):** The main content area displays the text of the selected message in an editable format.
- **Visual Formatting:** The text is displayed with visual formatting (e.g., headings, bold, italics) to reflect the underlying Markdown or HTML structure.
- **Direct Editing:** Users can directly edit the text by clicking on it and typing.
- **Cursor and Selection:** The text input area supports standard cursor movement, text selection, and copy/paste operations.
- **Scrollbar**: If the content is too big, a scrollbar will show up to let the user scroll.
- **"Edit message" Bottom Toolbar**: A bar located at the bottom, it includes quick tools such as:
- Formatting actions: Users can use `@`, attachment actions, etc.
- `Edit in canvas` button: User can click on this to re-open the Canvas mode.
- `x` button: user can click on this to close canvas editor
- **Code actions**:
### Interacting with the Canvas Editor
1. **Formatting Text:**
- Users can apply formatting to selected text by using dropdown of the text format.
- A short list will show for user to select.
- After the selection, the selected text will show as the format.
2. **Rewriting Text:**
- Users can select part of the text, then click on "Rewrite" button and select an option:
- Make it shorter
- Make it longer
- Make it friendlier
- Make it more professional
- Or they can select `Enter your prompt`, a popup is shown to get the rewrite content. After enter the content, press enter to submit.
- After the action, it will change the selected text with new content, then show off.
- After the text content has been replaced, a green flash animation is displayed.
3. **Edit Raw Mode:**
- Clicking the "Edit Raw" button toggles the Canvas Editor into a raw Markdown editing mode.
- The formatted content will be displayed in the editing box
- After edit the code, user can click "Update" button to apply the changes
- After the raw content has been changed, a green flash animation is displayed.
- Actions after the `...` button:
- **Toggle Bold**: Toggle selected code text become bold.
- **Toggle Italic**: Toggle selected code text become italic.
- **Undo changes**: Undo the code action.
- **Redo changes**: Redo the code action.
- **Edit Raw**: Directly edit the code.
- **Copy Markdown**: Copy the code.
- **Copy Formatted Text**: Copy with current format.
- **Download Markdown**: Open a save dialog for user to save.
- **Applying Changes:**
- After edit the message, user can click the `Update` or `Cancel` button to apply or discard the changes.
- Click `x` to close the canvas editor.
## Multi-Profile Feature
The Multi-Profile feature in TypingMind allows users to create and manage multiple distinct profiles, each with its own set of personal information, custom instructions, and API keys. These profiles can then be quickly switched to tailor the AI's behavior and responses to different contexts or scenarios (e.g., personal, work, specific clients).
### Key Benefits
- **Contextual AI:** Ensures the AI understands the user's role and situation.
- **Personalization:** Tailors the AI's behavior to specific user preferences.
- **Security:** Allows the secure management of multiple API keys.
### Accessing and Managing Profiles
1. **Locate the User Profile Icon:** Click the user profile icon located in the bottom left-hand corner of the sidebar, or top left corner when inside the conversation. This action opens the user menu.
2. **Selecting a Profile:** The profile popup lists all existing profiles. Each profile displays:
* **Profile Name:** The name assigned to the profile.
* **Profile Picture:** The user's profile picture.
* **Selection Indicator:** A green check mark in a green circle indicates the currently active profile.
* **Edit Profile Icon:** A pencil icon, used to edit the setting of the profile.
* **Delete Profile Icon:** A trashcan icon, used to remove the profile.
3. **Switching Profiles:** Click on a profile to select it. A green confirmation banner will appear at the top of the screen to confirm the selection.
* The banner text is "You are now using profile \"[Profile Name]\"".
### Creating a New Profile
1. **Open the Profile popup:** (As described above).
2. **Click the "Add Profile" Tile:** Click the tile labeled "Add Profile", which contains a "+" icon.
3. **"Add Profile" Form Overview:** The "Add Profile" form is structured to guide users through the configuration of a new profile. It includes the following key sections:
* **Back to profiles:** Click to navigate back to profile selection.
* **Form header:** "Add Profile".
* **Form description:** "The AI assistant will remember your information on all future chats."
* **Your Name:**
* Purpose: Assign a name to the user.
* Input Type: Text field.
* Placeholder Text: "e.g., John".
* Requirement: Optional.
* **Profile Image URL:**
* Purpose: Provide a URL to an image that will be used as the icon for the profile.
* Input Type: Text field.
* Placeholder Text: "https://...".
* Requirement: Optional.
* **Your Information:**
* Purpose: Enter any information you want the AI assistant to remember about you here.
* Input Type: Text area (multi-line text field).
* Example Text: "e.g., I am a sales manager, I live in New York, I love playing guitar...".
* Requirement: Optional.
* **Custom Instruction:**
* Purpose: Let the AI know how to respond when this profile is used.
* Input Type: Text area (multi-line text field).
* Example Text: "e.g., Respond casually. Use professional tone. Use short responses...".
* Requirement: Optional.
* **Assign API keys for this profile:**
* Function: Allows users to define a API Key for each type of engines, including OpenAI, Anthropic and Gemini. This is recommended if there is a shared account for different functions.
* Input Type: Toggle switch.
* Functionality: When enabled, the following parameters can be modified specifically for the selected model.
* Requirement: Optional. If disabled, the model will use the global keys defined in the Cloud Sync Settings.
* Click to the link `Get API key here` will navigate to corresponding page for API keys.
* `Save` will only save the current input API Key.
* **Done:** Clicking this button will close the "New Profile" configuration and save the changes.
### Editing an Existing Profile
1. **Open the Profile popup:** (As described above).
2. **Click the "Edit" Icon:** Locate the profile you want to edit and click the pencil (edit) icon.
3. **Modify the Settings:** Make the desired changes to the profile's settings. The form is the same as described above.
4. **Click the "Done" Button:** Click the "Done" button to save the changes.
### Deleting a Profile
1. **Open the Profile popup:** (As described above).
2. **Click the "Delete" Icon:** Locate the profile you want to delete and click the trash can (delete) icon.
3. **Confirmation Prompt:** A confirmation prompt is displayed to prevent accidental deletion.
4. **Confirm Deletion:** Confirm the deletion.
## Prompt Caching Feature
The Prompt Caching feature in TypingMind is designed to optimize token usage and reduce API costs by storing and reusing the results of frequently used prompts. When enabled, TypingMind caches the AI's responses to specific prompts, allowing subsequent requests for the same prompts to be served from the cache instead of being reprocessed by the AI model.
### Key Benefits
* **Reduced Token Usage:** By serving responses from the cache, TypingMind can significantly reduce the number of tokens consumed, resulting in lower API costs.
* **Faster Response Times:** Cached responses are served instantly, eliminating the need to wait for the AI model to generate a new response.
* **Improved Performance:** By reducing the load on the AI model, prompt caching can improve overall application performance and responsiveness.
### Enabling Prompt Caching
Prompt caching is enabled on a per-model basis:
1. **Access the Model Settings:**
* There are two ways to access the model parameters settings:
* Refer to the instructions described on "Accessing Model Parameter Settings" section on ``.
2. **Override Global Model Parameters:** Ensure that the "Override Global Model Parameters" toggle switch is enabled.
3. **Locate the "Prompt Caching" Toggle Switch:** Scroll down to the "Prompt Caching" section.
4. **Enable Prompt Caching:** Click the toggle switch to enable prompt caching for the selected model.
* **Enabled State:** When the toggle is switched to the right, it is typically displayed with a blue color.
* **Disabled State:** When the toggle is switched to the left, it is typically displayed in gray.
5. **Considerations**:
* A message show up: `Prompt caching helps save token costs for long conversations. Enabling this will incur additional tokens when initiating the cache for the first time, but it can save many more tokens later, especially for long conversations. Not all models support caching, and some models require a minimum number of tokens for caching to be initiated. Please check with your AI model provider for more information.`
### Prompt Caching behavior
* When enabled, it store all AI response content to cache. The new user prompt will look for similar content to the new prompt, if there is any, the older content will show up.
### Chat Info: Prompt Caching Status
The "Chat Info" dialog provides information about the prompt caching status in the current chat.
1. **Accessing the Chat Info Dialog:** In the chat interface, locate the cost display at the top right corner, or in the 3-dots `More Options` button then click on "Chat Info". This will open the Chat Info popup window.
2. **Locate the "Total Tokens Cached" Field:**
*It's in the 4th section of the dialog
3. **Status Indicator:** The "Total Tokens Cached" field displays the following information:
* **Cached information:** It will show the tokens cached for the chat.
* If it is caching for the first time, it show (Inactive), and a note show, saying `Caching is supported but not yet activated for this chat. Some models requires a minimum number of tokens to be used before caching is activated.`
### Additional Details
* The total tokens cached is also displayed in the chat info dialog
* Not all models support caching.
* Some models require a minimum number of tokens for caching to be initiated.
* If you're in a chat session, and you switch to a different model, then the data won't get cached, even though `prompt caching` is turned on in the settings. Caching will apply only when the AI assistant starts from scratch.
[
{
question: `Is this app free?`,
answer: `TypingMind.com is free to use with some basic features. You will need to have a working OpenAI API Key in order to use the app. When you use the OpenAI API Key, you pay directly to OpenAI for the amount of credits/tokens you use. TypingMind.com has premium features that can be unlocked with a one-time purchase.`,
},
{
question: `Is the License Key one-time purchase? Do I need to renew it?`,
answer: `Yes, license key is one-time purchase and valid forever. It is not a subscription and you don't need to renew it. You will also be provided with an offline static web app (self-host) after you purchase so you can self-host and use the app anytime anywhere you want. Enjoy!`,
},
{
question: `Where can I get an OpenAI API Key?`,
answer: `You can signup directly with OpenAI at https://platform.openai.com/signup`,
},
{
question: `Do I need to pay for ChatGPT Plus ($20/month) to use TypingMind.com?`,
answer: `No! A ChatGPT Plus subscription is not needed. You just need to have an OpenAI's API Key. You can see more info on how to get one here: https://openai.com/blog/openai-api`,
},
{
question: `Do I need to pay for OpenAI for a ChatGPT API Key?`,
answer: `Yes. You need to have an OpenAI account and a valid API key to use ChatGPT. We don't sell API keys.`,
},
{
question: `How does this app work?`,
answer: `This is a static web app, it doesn't have any backend server. When you enter your API key, it will be stored locally and securely on your browser. All API requests are sent directly from your browser to OpenAI server to interact with ChatGPT. Think of this as a HTTP client for your ChatGPT API with a lot of convenience features.`,
},
{
question: `How is the API key handled?`,
answer: `Your API is safe and stored locally on your device. This is a static app, which means that it doesn't have a backend. All the data is stored in your browser's local storage. Requests to Open AI's API is sent directly from your current browser (check the Network tab in your console if you want to see it).`,
},
{
question: `Is it ok to give my OpenAI API Key to TypingMind? Does OpenAI allow this use case?`,
answer: `Yes. TypingMind only stores your API Key locally and never sends your API Key anywhere. OpenAI allows use cases where the API key is stored locally in the user's device. You can see this official response from OpenAI's staff here: https://community.openai.com/t/openais-bring-your-own-key-policy/14538/4`,
},
{
question: `Is my API Key encrypted in local storage?`,
answer: `TypingMind offers additional encryption for your API Key. You can enable encryption with a password by clicking the "OpenAI API Key" button in the sidebar and selecting "Encrypt API key...". Your API Key will be encrypted using the AES algorithm provided by the open-source CryptoJS library (https://github.com/brix/crypto-js). TypingMind only provides an encryption feature for your API key. Chat messages, prompts, AI agents, and other elements are stored using the standard local storage of your browser, which may or may not include encryption, depending on your browser. The encryption process are done entirely locally on your device, there is no backend server. If you use TypingMind on multiple devices, you will need to encrypt your API key on all of them, you can also set different passwords on different devices.`,
},
{
question: `What's the difference between ChatGPT Plus and ChatGPT API via TypingMind?`,
answer: `Under the hood, ChatGPT Plus and ChatGPT API offer the same model and the same quality. You can view this on their official announcement here: https://platform.openai.com/docs/guides/chat. The initial system instruction can be a little bit different, which can be configured to make the AI output different messages from time to time.`,
},
{
question: `Can I use GPT-4 in TypingMind?`,
answer: `Yes, you can use GPT-4 in TypingMind via the API access. Check out this article for more info: https://blog.typingmind.com/access-gpt-4-on-typingmind`,
},
{
question: `I have ChatGPT Plus, will it cost me more to use ChatGPT API via TypingMind?`,
answer: `The ChatGPT API costs soooooo little you won't even notice it. Typical chat conversation is about 1000 characters, which costs ~$0.001. That's less than a cent. You can have thousands of chats and it will only costs you like $1. See official pricing here: https://openai.com/pricing#language-models`,
},
{
question: `How many chats can I have?`,
answer: `You can have as many chats as you want. The only limit is your OpenAI API key's limit and your browser storage limit (technical term: Local Storage and IndexedDB). Web browser gives you some limited data storage, the actual limit is different for each browser. Typically, you can save thousands of chat conversations without problems, but that's not guaranteed. When the browser storage runs out, you will need to delete old chats to save the new ones. We will provide a separate service to sync and backup your chats soon. Adding the website to your home screen may increase the storage capacity.`,
},
{
question: `How can I sync my chat conversations across devices?`,
answer: `You can export the chats and import it on another device. You can also enable TypingMind Cloud for seamless syncing across devices. TypingMind Cloud is a free service provided to all paying TypingMind users. You can enable it by clicking the cloud icon at the bottom of the sidebar.`,
},
{
question: `Why does sometimes TypingMind responds differently than the default OpenAI's ChatGPT event with the same prompt?`,
answer: `TypingMind uses the same underlying model as OpenAI's default chat app. For the same prompt, it can produce different responses each time. The default chat app by OpenAI may also have some initial prompt settings that are different from TypingMind. If you don't get the response you expects, try "Re-generate Response" or tweaking the prompt.`,
},
{
question: `Can I self-host the app?`,
answer: `Yes. After you purchase a license, please go to https://www.typingmind.com/self-host-guide to download the static web app and the instruction how to deploy it on your own server. Note that you will only receive the compiled code of the app, the full source code is not available because the app is not open-source. You can deploy the app anywhere without having to update any code or settings.`,
},
{
question: `Do I have access to the full source code if I want to self-host?`,
answer: `No. The license key only grants you the permission to use and deploy the app on your own server. You do not have permissions to modify or redistribute the code. The full source code is not available for sale as the app is not open-source. You will only receive the compiled code of the app, you can deploy the app anywhere without having to update any code or settings.`,
},
{
question: `What can I customize in the self-host version?`,
answer: `The static self-host version does not offer any customizations. Check out https://custom.typingmind.com for a custom version of TypingMind that will allow you to customize almost everything.`,
},
{
question: `Is there a MacOS/Windows/Linux app?`,
answer: `TypingMind is a PWA compatible web app, so you can install it to your device and it will work like a native app. Click the menu of your browser → Install on Home screen.`,
},
{
question: `Is there an Android/iOS/iPad app?`,
answer: `No, but you can add typingmind.com to your home screen. It works exaclty like an app!`,
},
{
question: `License Key vs. API Key`,
answer: `License Key is used to activate the premium features of TypingMind.com. API Key refers to OpenAI ChatGPT API Key, and is used to connect to OpenAI's API to interact with ChatGPT. You need an API Key to use the app. The License Key is only needed if you want to use the premium features.`,
},
{
question: `What are the premium features?`,
answer: `The premium features include: Chat Search History, Access Prompt Library, Integrations, etc. Check the pricing page for the latest details of all the premium features.`,
},
{
question: `Is there an expiration date for the License Key?`,
answer: `The license key is valid forever.`,
},
{
question: `Can I receive new updates after I buy a license key?`,
answer: `Depends on the license key you buy. The Premium License Key is valid forever and includes all updates forever.`,
},
{
question: `What are the limitations of the free plans.`,
answer: `In the free plan, chat history will not be saved. You will be present with a popup every few minutes. Some other features may also be limited.`,
},
{
question: `How many devices/users can I use the License Key on?`,
answer: `Each license key can be used on 5 devices which is typically enough for 1 user. If you need to use it on for more devices, you can buy a new license keys or add more devices to your existing license key. "Device" is counted based on the number of places where the license key is entered and the chat history is saved for continuous use. For example, if you use the app on Chrome browser on your laptop and also on your phone, that will be 2 devices. Note that the license key and chat history is saved locally per browser, so if you use the app on Chrome and also on Firefox, you will need to enter the license key 2 times, have 2 separate chat histories, and that counts as 2 devices. If you need to use the license key on a new device but have reached the device limit, you can unlink the previous devices first using the License Manager (this is done online, access to the previous devices not needed). This device limit is put in place to avoid license key abuse and pirate.`,
},
{
question: `How do I remove a device from my license? How to access the License Manager?`,
answer: `At the moment, inactive devices will be revoked automatically after a short time, you don't need anything. In the future versions, you can access the License Manager from the app and manage your devices there.`,
},
{
question: `I have purchased but forget my license key, how can I get it back?`,
answer: `You can go to https://app.lemonsqueezy.com/my-orders/ to access your license key.`,
},
{
question: `How to use the Team License (Bulk License) Key? How to add new users?`,
answer: `The Bulk License gives you a License Key that can be shared and used among your team members. Simply share your license key with your team members and they can use it on their devices.`,
},
{
question: `How do I manage the devices that linked to my license key?`,
answer: `There is no need to manage your devices manually. Our license system works automatically. Inactive devices will be revoked automatically after a short time. We detect unauthorized uses and ask to verify with your purchase email when necessary.`,
},
{
question: `Can I get a refund?`,
answer: `Yes. We offer a 14-day money-back guarantee. If you're not satisfied, let us know within 14 days and we'll give you a full refund. Request a refund at support@typingmind.com`,
},
]
## Getting Started with TypingMind for Teams
This section outlines the initial steps for setting up and launching a customized AI chat portal using TypingMind for Teams.
Note, the TypingMind for Teams version can sometimes be referenced as different names: TypingMind Custom, TypingMind for Business, TypingMind Team. These are all referring to the same enterprise offering that allows organizations to build their own internal AI chat portals with custom branding, user management, and advanced team collaboration features. This is different than the Personal version of TypingMind, which is designed for individual use and comes with a one-time lifetime license. While the Personal version focuses on individual productivity with features like AI agents and plugins, the Teams version adds organizational capabilities such as user management, custom branding, centralized data control, and advanced security features. The Teams version also typically follows a subscription-based pricing model rather than the one-time payment structure of the Personal version.
### 1. Sign Up for TypingMind Custom
1. **Navigate to TypingMind for Teams:** From the TypingMind application, click on the "Teams" icon located in the left sidebar.
2. **Explore the Landing Page:** Review the TypingMind for Teams landing page, which highlights key features and benefits.
3. **Initiate the Setup Process:** Click on either the "Learn More" button on the main page, or the "Create your AI workspace" button in the bottom navigation.
4. **Begin the Sign-Up Process:** On the TypingMind Custom page, fill in the "Create a new AI workspace" form.
- **Form Fields:**
- **First name:** A single-line text field for the user's first name.
- **Last name:** A single-line text field for the user's last name.
- **Work email:** A single-line text field for the user's work email address. A tooltip "Please enter a valid email." shows when invalid values are enter.
- **Terms of Service:** A checkbox labeled "I have read and agreed with the Terms of Service and Privacy Policy of TypingMind Custom."
- The words "Terms of Service" and "Privacy Policy" are hyperlinked.
- **Continue Button:** A blue button labeled "Continue ->".
5. **Provide Company Information:** On the next page, provide information about the company.
- **Form Fields:**
- **Your company name:** A single-line text field for the user's company name.
- **Your company size:** Size options include 1-10, 11-50, 51-100, 101-200, 201-1,000, 1,000+.
- The text input field and selection box with the color white
- **Next Button:** A blue button labeled "Next ->".
6. **Customize Chat Portal:** On the next page, customize chat portal settings
- **Form Fields:**
- **What should your chat portal name be?:** The label for portal name setting, similar to the company name.
- **Your brand tagline:** Customize your slogan to make the brand more recognizeable
- **Your logo URL (Optional):** Customize the Logo so the audience can easily recongize, and it can improve trust and user engagement. (Must be HTTPS, recommended: 256x256). A light grey text with small characters at the bottom.
- **Next Button:** A blue button labeled "Next ->".
7. **Select a Subdomain:** Set up the domain of the chat app
- **Options**:
- Select the data center, where business are located, plus any compliance regulations (GDPR, etc). User cannot easily change this. United States (US West) or Europe (Frankfurt).
- Choose a subdomain for users to access the chat portal, which would be [subdomain].typingmind.cloud. User can set up a custom domain later in the Admin panel.
- A link is provided underneath `You can set up a custom domain later in the Admin panel.`
- **Create chat portal:** A blue button labeled "Create chat portal ->".
8. **Email Verification:** After creating the chat portal, the user is redirected to a page indicating that an email has been sent to the provided email address for verification.
- **Message Displayed:** "We've sent an email to [email address] Verify your email to start using TypingMind Custom."
- **Email Provider Options:** Buttons to open Gmail, Apple Mail, Outlook, or Yahoo Mail.
- **Additional Actions:** Buttons to "Back to home" or "Resend verification email."
9. **Verify Email:** In the email, click the provided link to verify the email address.
- The link navigates to the message saying "Verifying..."
- If the verification is successful, it navigates to `Onboarding`, with title `Let's get your chat instance ready`, where can start configuring the chat portal
### 2. Configure the Chat Portal
After verifying the email address, you can configure the settings. Here is how to launch a custom AI chat portal with pre-defined settings for your team.
1. **Setting up the onboarding:** Click the "Get Started" button to initiate the setup.
2. **Select the AI Providers:**
*The page's title `Let's get your chat instance ready`. The navigation includes the step list `1/7` to indicate the current steps
-Enable the `Select AI providers` option.
-Set the `OpenAI ChatGPT` switch to `On`. User need to add API keys to use OpenAI. The API key should follow this format `sk-*************************************`, where "*" is alphanumeric characters. There is a `save` button to confirm, and also a `Get your API key here` for user to get the API Key in case.
-To get to the next step, user need to set up either one of the AI providers first.
3. **Activate your chat instance:**
* Enable the `Activate chat instance` option
- The step's name is `2/7`
- There is the Rocket image on the page, and a blue button that shows `Activate Now`
4. **Send first messages:**
* Enable the `Send first messages` option
- The step's name is `3/7`
- There is the paper plane image on the page, and a blue button that shows `Send first message`
- If you have set up all the 3 steps, the right column would display `Ready to Launch`.
5. **Set up branding & theme:** The step's name is `4/7`
- **Brand name**: The brand name is defined in the previous step when sign up
- **Tagline**: Tagline has been defined in the previous step when sign up
- **Brand logo**: This was entered during sign up, The recommended size is 256x256 and must be an HTTPs.
- **Sidebar color**: Has a select box for user to customize
- User can select Custom, then the colors popup will shows up.
- User can select from `Teal`, `Fuchsia`, etc.
- **Set dark theme by default**: The current setting for the whole team, it could improve focus and reduce eye strain. The screen will switch to dark theme on enable.
6. **Configure privacy:** The step's name is `5/7`
- **Show login wall**: Turn on if want to hide the main screen from guests and anonymous users. Only logged-in users will be able to access the chat interface.
- **Allow user to create private AI agents**: If turned on, users can create their own AI agents for private use. These AI agents will only be available to the user who created them by default.
- **Record chat conversations**: If turned on, all chat messages will be recorded and can be viewed by admin users in Chat Logs. It says `We do not analyze your team's chat data for LLM training purposes.`
7. **Set default content:** The step's name is `6/7`
- Set the default content in the chat including AI Agents, Plugins, Prompt Library, Knowledge Base. Click on the related text to set up.
- AI Agents : Customize and create specialized AI agents to solve real business tasks and answer questions better.
- Plugins : Boost the AI and connect with existing tools and infrastructure.
- Prompt Library : Prompts are message templates that users can quickly use in chat, or work with AI agents, or building their workflow.
- Knowledge Base : Boost the AI's knowledge with the organization's data and documents.
8. **Invite Users:** The step's name is `7/7`
- Invite team members to start using TypingMind Custom! Add the user emails in the textbox to invite.
- Can check the checkbox to notify users via email
- The list includes current users and number of seats remaining
### 3. Invite Team Members
1. To invite user to the team workspace, go to set up your AI workspace -> Users, or find it by searching at Dashboard for Users.
2. Enter team members' email addresses here. One email per line.
3. User can chose the email.
4. After creating a new user, it displays that new user and the text `invitied`.
5. There are Admin roles for each user as well.
### 4. Start Using the Custom Portal
After completing the setup and inviting team members, the custom AI chat portal is ready to be used.
### 5. Manage from Dashboard
Besides the set up progress, can also manage from Dashboard tab, such as
- Analytics
- Chat Logs
- Set the system prompt
and more.
The following features are only available via Admin Panel from TypingMind Team version.
The Admin Panel Dashboard in TypingMind provides a centralized interface for managing and monitoring your team's AI chat portal. It offers an overview of key metrics, quick access to configuration settings, and tools for managing users, resources, and security.
### Accessing the Admin Panel Dashboard
After logging into your TypingMind for Teams Admin account, you will be automatically redirected to the Admin Panel.
### Admin Panel Dashboard Interface Overview
The Admin Panel Dashboard is organized to provide a comprehensive overview of your chat portal's status and activity.
The interface generally consists of the following elements:
- **Left Sidebar:**
- **Internal AI Workspace:**
- **Workspace:** The name of the workspace with user current plan indicated below.
- **Search settings:** A text input field allows users to quickly find specific settings with search.
- **Navigation Menu:** A list of the navigation items, the list is in order such as:
- `Dashboard` is the current selected and displayed in the main area
- `API Keys`
- `AI Agents`
- `Plugins`
- `Models`
- `Shortcuts`
- `Portal Settings`
- `Data Management`
- `Integrations`
- `User Management`
- `Access & Limits`
- `Reporting`
- `Billing`
- `Support`
- **Top Bar:**
- **View Live:** A button to view the current chat instance URL.
- **Profile settings**: Displays the current profile, user can chose to click on `Profile` to manage account, or click `Sign out` to sign out.
- **"Your Chat URL(s)" Section:**
- Displays the URL for accessing the team chat portal.
- **Copy Button:** An icon (typically a clipboard icon) allows users to copy the chat portal URL to the clipboard. The color of the copy button is blue.
- **Embed Widget Button:** A blue button to generate the embed code. When click, a popup will be displayed with the code, with a `Copy Code` button and a `Close` button.
- **"Overview" Section:**
- Provides a high-level overview of key metrics for the chat portal:
- **Members:** Displays the number of active members in the chat portal, with the format "\[Number of Active Members] / \[Total Number of Seats]". A small user icon is displayed on the left of the text.
- Clicking "View All Users" navigates to the user management section, where admins can view and manage all users in the chat portal.
- **Estimated Tokens (Last 30 days):** Displays the total number of tokens consumed by the team over the past 30 days.
- The cost estimator values are organized by model, such as `GPT-4 Turbo`, `GPT-3.5 Turbo`, etc. The values are shown in numbers such as `2K`, `4K`, `118.2K`.
- Clicking "View Analytics" navigates to the analytics section, where Admins can view detailed usage statistics and trends.
- **Top Used AI Agents (Last 30 days):** Displays a list of the most frequently used AI Agents in the chat portal over the past 30 days. A user icon is displayed on the left of the text.
- The list includes the names of the AI Agents and the number of times they have been used (e.g., "Legal Advisor: 2 times", "Privacy Policy Searcher: 1 time").
- Clicking "View AI Agents" navigates to the AI Agents management section, where admins can view, create, and manage AI Agents.
- **Messages Sent (Last 30 days):** Displays the total number of messages sent in the chat portal over the past 30 days. A message bubble icon is displayed on the left of the text.
- The number of messages is displayed prominently (e.g., "32").
- Clicking "View Chat Logs" navigates to the chat logs section, where admins can view and search through chat history.
- **"Manage Your Instance" Section:**
- Provides quick access to key configuration settings for the chat portal:
- **Branding:** Navigates to the branding settings, where admins can customize the logo, colors, and other visual elements of the chat portal. The description for this option is "Customize branding, logo, banner, etc.".
- **Custom Domain:** Navigates to the custom domain settings, where admins can configure the chat portal to be accessed via their own domain or subdomain. The description for this option is "Access via your own domain or subdomain".
- **Emails:** Navigates to the email settings, where admins can customize the emails sent to users (e.g., welcome emails, notifications). The description for this option is "Customize emails sent to your users".
- **Welcome Message:** Navigates to the welcome message settings, where admins can set a message or announcement for users when they first access the chat portal. The description for this option is "Set a message or an announcement for your users".
- **Chat Features:** Navigates to the chat features settings, where admins can show or hide features on the chat interface. The description for this option is "Show/hide features on the chat interface".
- **Chat Theme:** Navigates to the chat theme settings, where admins can customize UI appearance and colors. The description for this option is "Customize UI appearance & colors".
- **Custom Code:** Navigates to the custom code settings, where admins can add custom HTML, CSS, or JavaScript to their chat portal. The description for this option is "Add your HTML/CSS/Javascript to your chat instance".
- **Prompt Library:** Navigates to the prompt library management section, where admins can create and manage a library of pre-written prompts for users to use. The description for this option is "Create a prompt library for your users".
- **Knowledge Base:** Navigates to the knowledge base management section, where admins can upload and manage documents to build the knowledge base. The description for this option is "Upload and manage documents in your knowledge base".
- **System Prompts:** Navigates to the system prompts settings, where admins can set global system instructions and related prompts. The description for this option is "Set global system instructions and related prompts".
- **Chat Widget:** Navigates to the chat widget settings, where admins can embed chat widget instance to website. The description for this option is "Embed your chat instance to website/blog/CMS".
- **API Integration:** Navigates to the API Integration page, where admins can generate the API keys for TypingMind to integrate the app with external parties. The description for this option is "Generate your API Keys to integrate with TypingMind API".
- **Users:** Navigates to the user management section, where admins can manage list of users and the user details. The description for this option is "List of users who can use your chat instance".
- **Groups:** Navigates to the group management section, where admins can create groups of users, assign roles, and manage group membership. The description for this option is "Create groups of users, assign roles, and manage group membership".
- **Roles & Permissions:** Navigates to the roles & permission settings, where administrators can customize the roles. The description for this option is "Manage user roles and permissions".
- **Authentication:** Navigates to Authentication settings, setup Single Sign-On (SSO) and other authentication methods. The description for this option is "Setup Single Sign-On (SSO) and other authentication methods".
- **Usage Limits:** Navigates to the model settings, where administrators can view set limits for models. The description for this option is "View set limits for models".
- **Access Mode:** Navigates to the access mode settings, control who can use or sign-up your chat instance. The description for this option is "Control who can use or sign-up your chat instance".
- **Analytics:** Navigates to the analytics dashboards, view usage statistics and analytics. The description for this option is "View usage statistics and analytics".
- **Chat Logs:** Navigates to the Chat Logs dashboards, search and view chat logs from your team. The description for this option is "View and search chat logs from your team".
- **Email Reports:** Navigates to the Email Reports, a quick overview for users, including daily summary report via email. The description for this option is "Receive daily summary report via email".
- **Billing:** Navigates to the billing page for admin to manage payment info and subscriptions. The description for this option is "Manage your payment info and subscriptions".
- **Support:** Link for admins to Get help, support and resources. The description for this option is "Get help, support and resources".
- **Onboarding:** A quick start guide to setup your chat instance. The description for this option is "Quick start guide to setup your chat instance".
### API Keys Section
The "API Keys" section in the Admin Dashboard allows admins to configure the necessary API keys for connecting TypingMind to various AI models and services. This section provides a centralized location for managing API keys and ensuring that the chat portal can access the required resources. It supports a variety of model providers, each requiring its own distinct API key.
### Accessing the API Keys Section
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account. The application auto redirects to Dashboard, the admin can scroll to find the `API Keys` option, or use search at the search bar located on the left of the page.
2. **Locate the "API Keys" Icon:** In the left sidebar, click on the "API Keys" icon. This will open the API Keys management interface.
### API Keys Interface Overview
The API Keys interface is organized to provide an overview of the configured API keys and facilitate easy management:
- **Page Title:** API Keys
- **Page Description:** Displays the description "Activate OpenAI, Claude, PaLM models".
- **"Set up your API keys to get started." Section:**
- A red warning box is prominently displayed at the top, indicating a setup is required: "Set up your API keys to get started."
- **Description Text:** "We support models from OpenAI, Claude, Gemini, and more."
- **"Set up API Keys" Button:** A blue button labeled "Set up API Keys +". This likely takes the user to the main area where the individual API keys can be entered (although in this context, it seems the button and the main content display the same information).
- **API Key List:** A list of the available API Keys and their input boxes:
- **OpenAI API Key:**
- **Label:** "OpenAI API Key: ([Get API key here](https://platform.openai.com/account/api-keys))"
- **Input Field:** A text input field is provided for the user to enter their OpenAI API key.
- **Placeholder Text:** "sk-xxxxxxxxxxxxxxxxxxxxxxxx" (provides a visual cue for the expected format).
- **Icon:** Displays the OpenAI Icon on the left.
- **Input Validation:** The field visually indicates whether the entered key is valid. A purple border around the input field indicates that the key is being edited. A red border indicates that the input is currently invalid (either incorrect format or a non-working key).
- **"Save" Button:** Saves the entered API key. The button has a loading state (a spinning circle) while saving.
- **"Check API Key" Link:**
- **Function:** Initiates a check to verify if the entered API key is working correctly. This likely sends a test request to the OpenAI API.
- **Feedback:**
- **Loading:** A loading indicator ("Checking...") appears while the check is in progress.
- **Success:** If the API key is valid, a green checkmark icon is displayed, and the message "Your API Key is working normally." appears.
- **Failure:** If the API key is invalid or there's a connection issue, a red exclamation mark icon is displayed, along with an error message (e.g., "Invalid API Key. Please make sure your API key is still working properly.").
- **"Change Key" Button**: The `Save` button will change to `Change Key` after saved, for further editing.
- **Anthropic API Key:**
- **Label:** "Anthropic API Key: ([Get API key here](https://console.anthropic.com/settings/keys))"
- **Input Field:** A text input field to enter your Anthropic API Key.
- **Placeholder Text:** "sk-ant-xxxxxxxxxxxxxxxxxxxx"
- **Icon:** Displays the Anthropic Icon on the left.
- **"Save" Button:** Saves the entered API key.
- **"Check API Key" Link:**
- **Function:** Initiates a check to verify if the entered API key is working correctly. This likely sends a test request to the Anthropic API.
- **Feedback:**
- **Loading:** A loading indicator ("Checking...") appears while the check is in progress.
- **Success:** If the API key is valid, a green checkmark icon is displayed.
- **Failure:** If the API key is invalid or there's a connection issue, a red exclamation mark icon is displayed, along with an error message (e.g., "Could not connect to Anthropic API. Please try again later. Error details: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.").
- **Google Gemini API Key:**
- **Label:** "Google Gemini API Key: ([Get API key here](https://aistudio.google.com/app/apikey))"
- **Input Field:** A text input field to enter your Google Gemini API key.
- **Placeholder Text:** "AIxxxxxxxxxxxxxxxxxxxxxxxx"
- **Icon:** Displays the Google Gemini Icon on the left.
- **"Save" Button:** Saves the entered API key.
- **"Check API Key" Link:** Checks the API key.
- **Feedback:**
- **Loading:** A loading indicator ("Checking...") appears while the check is in progress.
- **Success:** If the API key is valid, a green checkmark icon is displayed.
- **Failure:** If the API key is invalid or there's a connection issue, a red exclamation mark icon is displayed, along with an error message (e.g., "Could not connect to Anthropic API. Please try again later. Error details: Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits.").
- **ElevenLabs API Key:**
- **Label:** "ElevenLabs API Key: ([Get API key here](https://elevenlabs.io/docs/overview))"
- **Input Field:** A text input field to enter your ElevenLabs API Key.
- **Placeholder Text:** "llxxxxxxxxxxxxxxxxxxxxxxxx"
- **Icon:** Displays the ElevenLabs Icon on the left.
- **"Save" Button:** Saves the entered API key.
- **"Check API Key" Link:** Checks the API key.
- **Groq API Key for Whisper:**
- **Label:** "Groq API Key for Whisper: ([Get API key here](https://console.groq.com/keys))"
- **Input Field:** A text input field to enter your Groq API key.
- **Placeholder Text:** "gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
- **Icon:** Displays the Groq Icon on the left.
- **"Save" Button:** Saves the entered API key.
- **"Check API Key" Link:** Checks the API key.
- **Azure API Key for Whisper:**
- **Label:** "Azure API Key for Whisper: ([How to get one?](https://docs.typingmind.com/voice-input-(speech-to-text)#0af46adca59748d5928a9f0de6729a82))"
- **Input Field:** A text input field to enter your Azure API Key.
- **Placeholder Text:** "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
- **Icon:** Displays the Azure Icon on the left.
- **Label:** "Azure API Endpoint for Whisper"
- **Input Field:** A text input field to enter your Azure API Endpoint.
- **Placeholder Text:** `https://`
- **"Save" Button:** Saves the entered API key and endpoint.
- **"Check API Key" Link:** Checks the API key.
- **Additional Tips:**
- "Your users cannot see your API keys.": a prompt that show the users cannot see their API keys.
- "Looking to add Azure OpenAI, open-source LLMs, or your private LLMs? Set up here!": Click on the `Set up here` to configure your custom model in the Model Settings section.
### Workflow: Adding an API Key (OpenAI Example)
1. **Navigate to the "API Keys" Section:** As described above.
2. **Locate the "OpenAI API Key" Input Field:** Find the input field labeled "OpenAI API Key:".
3. **Obtain Your API Key:** If you don't have one, click the "[Get API key here]" link. This will open the OpenAI API key creation page in a new tab.
- **On the OpenAI Platform:**
- Click "+ Create new secret key".
- (Optional) Give your key a name (e.g., "TypingMind Custom").
- Click "Create secret key".
- **Important:** Copy the generated key immediately. You will *not* be able to see it again.
4. **Enter the API Key:** Paste the copied API key into the "OpenAI API Key" input field in TypingMind.
5. **(Optional, but Recommended) Check the API Key:** Click the "Check API Key" link. Wait for the check to complete. Verify that a green checkmark and a success message appear.
6. **Save the API Key:** Click the "Save" button. The key will be stored securely.
The workflow for obtaining API Keys for other platforms (Anthropic, Google Gemini, ElevenLabs, Groq) is similar, but the external websites are, of course, different.
**Anthropic API Key:**
1. Clicking the link leads to: https://console.anthropic.com/settings/keys
2. On the Anthropic Console:
- User need to login with their email address/Google account.
- After sign in, click `API Keys` on the left navigation bar
- Click `+ Create Key`
- Set up a name for the key.
- Click `Create Key`
- Copy the key, and it's ready to be used.
**Google Gemini API Key:**
1. Clicking the link leads to: https://aistudio.google.com/app/apikey
2. On the Google AI Studio page:
- Click `Get API Key` button on the left navigation
- Click `Create API Key`
- Select a project or create a new project
- The new API key will be generated.
- Copy the key, and it's ready to be used.
**ElevenLabs API Key:**
1. Clicking the link leads to: https://elevenlabs.io/docs/overview
2. On the ElevenLabs page, user can click on `Sign up` to register.
3. After sign in, click on the profile on the bottom of the left navigation.
4. Click `API Keys` to navigate to the API Keys setting page.
5. Click `Create API Key` to create a new key, add name, and submit
6. Copy the API key.
**Groq API Key**
1. Clicking the link leads to: https://console.groq.com/keys
2. Login with an existing account or create a new account by using Email, Github, Google.
3. Click `API Keys` on the left navigation.
4. Click `Create API Key`
5. Enter the name for the new API Key
6. Click Submit
7. Copy the API Key.
**Azure API Key for Whisper:**
You will need an API Key and API Endpoint for Whisper.
Clicking the link leads to a TypingMind documentation: [https://docs.typingmind.com/voice-input-(speech-to-text)#0af46adca59748d5928a9f0de6729a82](https://docs.typingmind.com/voice-input-(speech-to-text)#0af46adca59748d5928a9f0de6729a82), which provides instruction to setup Azure API Key and Endpoint.
**Important Notes:**
- The "Get API key here" links are crucial, as they direct users to the correct pages on each provider's website to obtain their API keys.
- The workflow is very similar for all API key types. The main difference is the specific provider's website where the key is obtained.
- The placeholder text in each input field gives a hint about the expected format of the key.
- Always check the API key after entering it to ensure it's working correctly.
- Admins do not need to fill in all of the API keys, but need to fill in at least one API Key for models (OpenAI/Anthropic/Google Gemini) to make the chat portal work.
### Models Section
The "Models" section in the Admin Dashboard allows Admins to manage which AI models are available for use within the chat portal. Admins can enable or disable specific models. This section ensures control over the AI capabilities offered to the team.
### Accessing the Models Section
**Click the "Models" Icon:** In the left sidebar, click on the "Models" icon. This will open the Models management interface.
### Models Interface Overview
The Models interface is designed for easy management of available AI models:
- **Page Title:** Models
- **Page Description:** Displays the description "Manage your models and add custom models".
- **Model List** tab:
- **Search Bar:** A text input field allows users to quickly find specific models by name or keyword, labeled with `Search models...`.
- **Three dots icon next to search bar**: action buttons that allow users to:
- Re-order: drag and drop to re-order the model list
- Bulk action: select multiple models for bulk delete.
- **Tabs Filters**: Select the category of models to display, including `All`, `OpenAI`, `Google`, `Anthropic`, `Custom`.
- **Model List:** A list of available AI models is displayed.
- Each model entry includes:
- **Model Name:** The name of the AI model (e.g., "GPT-4o Search Preview").
- **Description:** The description, such as "new", "128K".
- **Enable/Disable Toggle:** A toggle switch allows administrators to enable or disable the model for use in the chat portal.
- **Enabled State:** When the toggle is switched to the right (typically displayed with a blue color), the model is enabled and available for use by users in the chat portal.
- **Disabled State:** When the toggle is switched to the left (typically displayed in gray), the model is disabled and will not be available for use.
- **"Add Custom Model" Button:** A button labeled "+ Add Custom Model" is located in the top-right corner of the interface. Clicking this button opens the "Add Custom Model" dialog, where administrators can add their own custom-built or fine-tuned AI models if they prefer.
### **Individual Model Configuration**
- **Accessing Model Details:** Click on a model's name or icon in the Model List. This will show off the model overview and settings.
- **Overview Tab:** Provides a summary of the model's capabilities, including:
- **Model ID:** The unique identifier for the model.
- **Provider:** The company or organization that provides the model (e.g., OpenAI, Anthropic).
- **Context Length:** The maximum number of tokens the model can process in a single conversation turn.
- **API Type:** The API protocol used by the model (e.g., openai).
- **Plugins supported:** Indicates whether the model supports plugins ("Yes" or "No").
- **Vision supported:** Indicates whether the model supports image input ("Yes" or "No").
- **Streaming output supported:** Indicates whether the model supports real-time streaming of responses ("Yes" or "No").
- **System role supported:** Indicates whether the model supports system role messages ("Yes" or "No").
- **Prompt caching supported:** Indicates whether the model supports prompt caching ("Yes" or "No").
- **Parameters Tab:** Allows detailed configuration of the model's behavior.
- **Toggle Override User Model Parameters:**
- **Purpose:** Determines whether the settings defined here will override any custom settings applied by individual users.
- **Input Type:** Toggle switch.
- **Enabled State:** The parameter settings below will be enforced for all users, regardless of their individual preferences.
- **Disabled State:** Users who have permission to customize model parameters (controlled by the "Allow users to customize model parameters" global setting) will be able to override these settings.
- **Current parameters that admins can override**: Context limit, Temperature, Presence Penalty, Frequency Penalty, Top P, Max Tokens, Reasoning Efforts.
- **Set Default button** on the top right corner that allows you to set the model you are viewing as default model.
- **Global Settings** tab
- **Show models list and settings:**
- **Purpose:** Controls whether users can see the list of available models and access model settings.
- **Input Type:** Toggle switch.
- **Enabled State:** Users can switch between models and configure model settings (if allowed by the "Allow users to customize model parameters" setting).
- **Disabled State:** Users can only use the default model and cannot see or change model settings.
- **Allow users to customize model parameters:**
- **Purpose:** Controls whether users can adjust model parameters such as temperature, max tokens, etc.
- **Input Type:** Toggle switch.
- **Enabled State:** Users can modify model parameters within their individual chat sessions.
- **Disabled State:** Users cannot modify model parameters and will use the default settings defined by the administrator.
- **Enforce Default Model:**
- **Purpose:** Forces all users to use the selected default model and prevents them from switching to other models.
- **Input Type:** Toggle switch.
- **Enabled State:** The "Default Model" dropdown menu is displayed, allowing the administrator to select a default model.
- **Disabled State:** Users can switch between available models.
- **Allow multi-model chats**
- **Purpose:** allow users to select multiple models at once and use them in the same chat.
- **Input Type:** Toggle switch.
- **Enabled State:** users can use multiple models in a conversation in parallel
- **Disabled State:** users can't use multiple models in a conversation in parallel
- **Default Model:**
- **Purpose:** Sets the default AI model that will be used when "Enforce Default Model" is enabled.
- **Input Type:** Dropdown menu.
- **Options:** Displays a list of all enabled AI models.
- **Functionality:** When "Enforce Default Model" is enabled, the selected model in this dropdown will be the only model available to users.
### Adding Custom Models
The "Add Custom Model" dialog is structured to guide users through the configuration process. It includes the following key sections:
- **Create Manually / Import Options:** Radio buttons to select the method for defining the custom model.
- **Create Manually:** Allows users to manually enter all the model's configuration details through a form. This option is selected by default (indicated by a filled blue circle within the radio button).
- **Import JSON:** Enables users to import model settings from a JSON file. The radio button is displayed, but not selected.
- **Import Open Router:** Allows users to import model configuration from Open Router. The radio button is displayed, but not selected.
- **Custom Model Guides:** A sidebar on the right provides links to guides and documentation for setting up various custom models, including:
- **Title:** "Custom Model Guides" in bold text.
- **Guide Links (Blue Buttons):** Each guide is represented by a blue, rounded button with white text. The buttons are vertically stacked. Each button has a right-pointing arrow icon (`→`) at the beginning.
- **Mistral AI:** Links to instructions for setting up Mistral AI models: https://docs.typingmind.com/chat-models-settings/use-with-mistral-ai
- **Open Router models:** Links to instructions for setting up Open Router models - https://docs.typingmind.com/chat-models-settings/use-openrouter-models
- **Perplexity AI:** Links to instructions for setting up Perplexity AI models - https://docs.typingmind.com/chat-models-settings/use-with-perplexity-ai
- **Azure OpenAI:** Links to instructions for setting up Azure OpenAI models - https://docs.typingmind.com/chat-models-settings/use-azure-openai
- **LocalAI (Vicuna, Alpaca, LLaMA, GPT4All, Dolly, etc.):** Links to instructions for setting up LocalAI models - [https://docs.typingmind.com/chat-models-settings/set-up-local-models-with-local-ai-(llama-gpt4all-vicuna-falcon-etc.)](https://docs.typingmind.com/chat-models-settings/set-up-local-models-with-local-ai-(llama-gpt4all-vicuna-falcon-etc.))
- **Olama (Local models: Llava, Llama2, Mistral, Orca, etc.):** Links to instructions for setting up Ollama models - [https://docs.typingmind.com/chat-models-settings/use-with-ollama-(local-models:-llava-llama2-mistral-orca-etc.)](https://docs.typingmind.com/chat-models-settings/use-with-ollama-(local-models:-llava-llama2-mistral-orca-etc.))
Please also refer to section for more information if needed.
### 1. Create Manually Option
When "Create Manually" is selected, the dialog displays the following input fields and settings:
- **Name:**
- **Purpose:** Assign a descriptive name to the custom model for easy identification within TypingMind.
- **Input Type:** Text field.
- **Placeholder Text:** "e.g., GPT4All"
- **Requirement:** Mandatory. The model cannot be added without a name.
- **API Type:**
- **Purpose:** Specify the API type that the custom model is compatible with.
- **Input Type:** Dropdown menu. The currently selected option is "OpenAI Compatible API".
- **Options:**
- "OpenAI Compatible API": For models that adhere to the OpenAI API standard.
- Claude via Bedrock: for Claude models that use via Amazon Bedrock
- **Requirement:** Mandatory.
- **Icon URL (Optional):**
- **Purpose:** Provide a URL to an image that will be used as the icon for the custom model within TypingMind.
- **Input Type:** Text field.
- **Example:** "https://typingmind.con/icon.png"
- **Requirement:** Optional. If left blank, a default icon will be used.
- **Description:**
- **Purpose:** Describe the model.
- **Input Type:** Text field.
- **Placeholder Text:** "e.g., Suitable for simple creative writing tasks"
- **Requirement:** Optional.
- **Endpoint:**
- **Purpose:** Enter the API endpoint URL for the custom model. This is the address where TypingMind will send requests to the model.
- **Input Type:** Text field.
- **Placeholder:** "http://localhost:8080/v1/completions", or [**https://api.mistral.ai/v1/chat/completions](https://api.mistral.ai/v1/chat/completions), etc.**
- **Requirement:** Mandatory. The model cannot be added without a valid endpoint URL.
- **Note:** The endpoint URL must be compatible with the selected API Type. A small text label "* Must be compatible with /v1/chat/completions" is displayed next to the "Endpoint" label, emphasizing this requirement.
- **Model ID:**
- **Purpose:** Specify the model identifier as recognized by the API. This might be the model's name or a unique ID.
- **Input Type:** Text field.
- **Placeholder Text:** "e.g., ggml-gpt4all-j-v1.3-groovy.bin"
- **Requirement:** Mandatory.
- **Context Length:**
- **Purpose:** Define the maximum context length (in tokens) that the custom model supports.
- **Input Type:** Number field. The current value is set to "2048".
- **Requirement:** Mandatory.
- **Price for Cost Estimation (Optional):**
- Enter the pricing for your custom model for cost estimation. Find pricing on model pricing page.
- **Support Plugins (via OpenAI Functions):**
- **Purpose:** Enables support for plugins.
- **Input Type:** Toggle switch (currently in the "off" position).
- **Label:** "Support Plugins (via OpenAI Functions)"
- **Description:** "Enable if the model supports the \"functions\" or \"tool_calls\" parameter."
- **Requirement:** Optional. Only enable if the custom model supports the OpenAI Functions API.
- **Support OpenAI Vision:**
- **Purpose:** Enables support for processing image inputs with the custom model.
- **Input Type:** Toggle switch (currently in the "off" position).
- **Label:** "Support OpenAI Vision"
- **Description:** "Enable if the model supports image input."
- **Requirement:** Optional. Only enable if the custom model supports image input.
- **Support System Role:**
- **Purpose:** Enables the use of system role messages.
- **Input Type:** Toggle switch (currently in the "on" position).
- **Label:** "Support System Role"
- **Description:** "Enable if the model supports the \"system\" role."
- **Requirement:** Enabled by default.
- **Support Streaming Output:**
- **Purpose:** Enables real-time streaming of the model's responses.
- **Input Type:** Toggle switch (currently in the "on" position).
- **Description:** "Enable if the model supports streaming output (\"stream\": true)."
- **Requirement:** Enabled by default.
- **Custom Headers:**
- **Purpose:** Allows users to add custom HTTP headers to the requests.
- **Functionality:**
- A pre-populated example is shown:
- **Header Key:** "x-header-key" (text field).
- **Header Value:** "Header Value" (text field).
- **"Remove" Button:** A red button labeled "Remove" allows the user to delete this example header.
- **"+ Add Custom Headers" Link:** Clicking this blue link adds a new row with two input fields: "Header Key" and "Header Value".
- **Custom Body Params:**
- **Purpose:** Allows users to add custom parameters to the body of the requests.
- **Functionality:**
- A pre-populated example is shown:
- **Type:** A dropdown to select the data type of the parameter, the default option is `string`. Other options include `number`, `boolean`, `object`.
- **Key:** Input the name of the parameter.
- **Value:** Input the value of the parameter.
- **"Remove" Button:** A red button labeled "Remove" allows the user to delete this example parameter.
- **"+ Add Custom Body Params" Link:** Clicking this blue link adds a new row with three input fields: "Type", "Key", and "Value".
- **Test Button:**
- **Purpose:** Sends a test request to the custom model's API endpoint to verify.
- **Appearance:** A blue button with a lightning bolt icon (⚡) and the text "Test".
- **Add Model Button:**
- **Purpose:** Saves the custom model configuration and adds it to the list.
- **Appearance:** A blue button with a plus icon (+) and the text "Add Model".
### Adding a Custom Model Manually (DeepSeek R1 Example)
Adding `DeepSeek R1` as a custom model:
1. **Select "Create Manually":** In the "Add Custom Model" dialog, ensure the "Create Manually" radio button is selected.
2. **Fill in Model Details:**
- **Name:** `DeepSeek R1` .
- **API Type:** `OpenAI Compatible API` (selected from the dropdown).
- **Icon URL (Optional):** enter a DeepSeek logo URL. *Note: Admins can leave this blank.*
- **Description:** `Reasoning model from DeepSeek` (optional).
- **Endpoint:** `https://api.deepseek.com/v1/chat/completions` (This is crucial; TypingMind expects compliance with the `/v1/chat/completions` OpenAI API structure).
- **Model ID:** `deepseek-reasoner`
- **Context Length:** `16000`
- **Support Plugins:** Left *unchecked* (disabled) in the demonstration.
- **Support OpenAI Vision:** Left *unchecked* (disabled) in the demonstration.
- **Support System Role:** *Checked* (enabled; this is the default).
- **Support Streaming Output:** *Checked* (enabled; this is the default).
3. **Custom Headers (Authentication):**
- Click "+ Add Custom Headers".
- **Header Key:** `Authorization` (This is standard for API key authentication).
- **Header Value:** `Bearer {{your API Key}}`(This is a *placeholder*; the actual API key would be a long, unique string).
4. **Add Custom Body Params:** Not needed for this particular API integration.
5. **Test the Connection:** Click the "Test" button.
- **Successful Test:** A green message "Nice, the endpoint is working! ✨" should appear.
- **Failed Test:** If there's an error (e.g., incorrect API key format), an error message will be displayed.
6. **Add Model:** Once the test is successful, click "+ Add Model" to save the configuration. The custom model will now appear in the "Custom" tab of the Models list.
### Importing Models from OpenRouter
Importing models from OpenRouter:
1. **Select "Import Open Router":** In the "Add Custom Model" dialog, select the "Import Open Router" radio button.
2. **Enter OpenRouter API Key:** A text field appears. Paste your OpenRouter API key.
3. **"Check API Key" Button:** Click this button.
4. **Model List:** If the API key is valid, a list of available OpenRouter models is displayed. Each model shows:
- **Checkbox:** To select the model for import.
- **Model Name:** (e.g., "Mistral: Mistral Small 3.1 24B").
- **Context Length:** (e.g., "128,000").
- **Price:** (e.g., "$0.1 / 1M input tokens", "$0.3 / 1M output tokens").
5. **Select Models:** Check the boxes next to the desired models.
6. **"Import [Number] Model(s)" Button:** Click this button to import the selected models. The models will be added to the "Custom" tab in the Models list.
### Importing Model from JSON:
Importing models from JSON:
- Click Add Custom model
- Select `Import JSON` and paste the following content to the JSON code and click `Import` button and paste the content format like this in the box:
```
{
"id": "78371e75-5b14-40a7-976d-58d8ee4723d6",
"title": "DeepSeek R1",
"apiType": "openai",
"iconUrl": "https://avatars.githubusercontent.com/u/148330874?s=200&v=4",
"modelID": "deepseek-reasoner",
"bodyRows": [],
"endpoint": "https://api.deepseek.com/v1/chat/completions",
"createdAt": "2025-03-18T08:29:27.595Z",
"headerRows": [
{
"id": "c5d44d0d-f91e-4718-ad1a-0531fb7d3668",
"key": "Authorization",
"value": "Bearer your-API-Key"
}
],
"skipAPIKey": true,
"description": "Reasoning model from DeepSeek",
"contextLength": 16000,
"pluginSupported": false,
"visionSupported": false,
"streamOutputSupported": true,
"systemMessageSupported": true,
"isOrgModel": true
}
```
This is used when you want to quickly duplicate models and share model configuration for your teams.
Within each custom model, when you click into it, there will be a JSON source with the “Show Source” button. You can copy that and paste into the box to import from JSON.
### Managing Custom Models
Once a custom model is added, it appears in the "Models" list within the "Custom" tab. From here, admins can:
- **Enable/Disable:** Use the toggle switch to control whether users can access the model.
- **Set Default:** Click "Set Default" to make this model the default choice for new chats.
- **Delete:** Click "Delete" to remove the custom model (with confirmation).
- **Duplicate:** Click "Duplicate" to create a copy of the model.
- **Edit:** Click "Edit" to modify the model's configuration.
- Click on model name, then switch between `Overview` or `Parameters` tab to change the settings
Guidelines to add other custom models: https://docs.typingmind.com/chat-models-settings
The Admin Panel in TypingMind for Teams provides admins with control over AI Agents within the team's workspace. This includes the ability to create, manage, distribute, and restrict AI Agents for use by team members.
### Accessing the AI Agents Management Interface
1. **Navigate to the Admin Panel:** Log in to your TypingMind Custom Admin Account.
2. **Locate the "AI Agents" Icon:** In the left sidebar of the Admin Panel, click on the "AI Agents" icon. This will open the AI Agents Management interface.
### Overal AI Agent settings
The setting area consists of four toggle buttons:
- **"Show built-in AI agents":** Toggles the visibility of pre-built AI agents included with user workspace.
- Enabled State: Pre-built AI agents are displayed alongside custom agents.
- Disabled State: Only custom AI agents are displayed.
- **"Only show AI agents for logged in users":** Toggles the visibility of AI agents for logged-in users only.
- Enabled State: If enabled, only logged in users will be able to see AI agents. (Built-in agents are still shown for everyone).
- Disabled State: Allow the user to chose whether the AI is shown for logging in users.
- **"Allow users to add their own AI agents":** Toggles the ability for individual users to create and add their own AI agents.
- Enabled State: Allow users to add their own AI agents
- Disabled State: Do not allow users to add their own AI agents
- **"Require user to select an AI agent before chatting":** Toggles the function to force user to select AI agent before the chat is enabled, chat will be disabled until the user selects an AI agent
- Enabled State: Enforce the rule to chose an AI agent.
- Disabled State: Do not enforce the rule to chose an AI agent.
- **"Force a default AI agent for all chats":** Requires you select and select only one AI agent to apply for all chats so that users will not be able to change or select a different AI agent.
-Enabled State: You select the assigned agent in your list.
### AI Agents Management Interface Overview
The AI Agents interface is organized to provide an intuitive overview of available agents and facilitate easy creation and management. The interface generally consists of the following elements:
- **Page Title:** AI Agents
- **Page Description:** A concise description of the AI Agents feature is provided below the title, such as "Build smart AI agents."
- **Search Bar:** A text input field labeled "Search your characters..." allowing users to quickly find specific agents by name or keyword.
- **"Create AI Agent" Button:** A prominent button that initiates the process of creating a new AI Agent.
- The button is green to visually distinguish it as a primary action.
- The button's label clearly indicates its function: "Create AI Agent."
- Clicking this button opens the "New AI Agent" creation form.
- **"Browse Agents" Button:** A blue button will be displayed. It will open another popup page to show off the AI agents in TypingMind's marketplace
- The button's label clearly indicates its function: "Browse Agents.”
- User can sort the AI agents with "Most Popular" and "Trending" algorithm
- Click “+” to install the AI Agents to your AI Agent list.
- **Category Navigation (Filters):** A horizontal list of categories filters are located above the agents list, allowing users to filter and browse agents by category.
- Common categories may include "All," or user-created categories.
- Clicking a category filters the list of displayed agents to show only those belonging to the selected category.
- **Agent Display Area (Main Content Area):** The main content area displays a grid or list of available AI Agents.
- Each agent is represented by a card or tile containing:
- **Icon/Avatar:** An icon or image representing the AI Agent.
- **Name:** The name of the AI Agent.
- **Description:** A brief description of the AI Agent's purpose or capabilities.
- **Action Buttons:** A set of buttons or icons providing quick access to common actions:
- **"Edit" Icon:** Opens the AI Agent's configuration settings for modification. If the AI Agent is added via “Browse Agent”, users need to duplicate it first before editing it.
- **"Duplicate" Icon:** Duplicates the AI agent, generating a copy of the agent.
- Prompts a confirmation with message `Are you sure you want to duplicate this AI agent?` with `Cancel` or `OK` button for you to confirm.
- **"Share" Icon:** Show the sharing agents with two options: `Share to Secret Link` and `Share to TypingMind`.
- Function: When the AI is shared to the team members with "Share to Secret Link" , they will be able to open the AI agent via the link and import into their workspace.
- **"Delete" Icon:** Deletes the AI Agent (with confirmation).
### Creating/Editing a New AI Agent
1. **Click the "Create AI Agent" Button:** In the main AI Agents interface, click the "Create AI Agent" button. This will open the "New AI Agent" creation form.
- If you want to edit the current AI Agent, find that AI Agent in the list and click Edit button.
2. **New AI Agent Form Overview:** The "New AI Agent" form is structured to guide users through the configuration of a new AI Agent.
**Important Note:** The AI Agent settings will be the same as , but with more control in Usage Limit section. The AI Agent settings via Admin Panel have:
- General Information (Name, Description, Categories, Profile picture)
- Custom instruction for AI Agent
- Select Base model and adjust parameter settings
- Select a custom voice for the AI Agent via text-to-speech
- Knowledge Base access (Training Files, Knowledge base access, Dynamic Context, Few-shot prompting)
- Chat experience with Welcome Messages and Conversation starters.
- Usage limit and Visibility (only available for Team version via Admin Panel)
### Usage Limit Section (Only Available via Admin Panel)
**Visibility** - Setting the visibility of the AI agent.
- By default, the AI agent is visible to all users. You can set up:
- Visible to all users
- Visible only to users in specific groups
- Visible to all users except users from specific groups
- If either option is selected, there is a dropdown: `Select groups`, there are a list of group, for admins to select.
- You should refer to for information to create user groups.
- **Usage Limits**
- Limit the number of messages or characters user within a specific period.
- Click on “Add Limit” to set up the usage limit.
- The Limit #1 will appear and you can choose from your pre-created limit group or scroll down to the new limit group:
- Message Limits: click on Add Limit and select the number of messages every X hours
- Character limits per message: click on Add Limit and set the X number of characters per message.
- Character Limits Per Time Period: click on Add Limit and set the X number of characters every X hours.
- Also Refer to for information on how to create Usage Limits.
### **Open chat with this AI agent**
To "Open chat with this AI agent", it will show content which allow to share chat agent directly.
- **URL to chat with this specific AI agent**:
- **Purpose:** To share with the public so they can chat with a single AI agent in TypingMind.
- Functionality: A URL will create for the selected AI agent in the chat instance such as `https://yourbrandname.typingcloud.com?agent=a-66276c67-d53d-4e4a-b624-9dc9e8faae74`. This allows your users to open directly the AI Agent and chat with that Agent.
- Embed this on your website / internal app to offer specific AI Agents to users.
- **Code to embed chat widget with this specific AI agent**
- **Function:** The user can copy the entire JS script
- Example code shows ``
- **Code Copy Button:** By click to copy the source code, it allows the code copy completely. The copy button text is `Copy Code`
Click **Save** on the top right corner of the app to save all AI Agent settings.
### Importing AI Agents from JSON (Admin Panel - Added)
1. **From the AI Agents Admin Panel:** In the AI Agents section of the Admin Panel, click the small downward-pointing arrow next to the "+ Create AI Agent" button. This reveals a dropdown menu.
2. **Select "Import from JSON":** Choose this option from the dropdown. This will open a standard file selection dialog.
3. **Select the JSON File:** Browse to and select the `.json` file containing the AI Agent configuration.
4. **Click "Open":** Click "Open" in the file dialog. The TypingMind admin panel will process the JSON data and import the AI agent. The newly imported agent will now be listed and manageable within the admin panel. A green success message will be displayed on top to confirm the import.
The Admin Panel in TypingMind for Teams provides comprehensive control over Plugins within the team's workspace. This includes managing plugin availability, configuring default settings (like API keys), and determining whether plugins use centrally managed admin settings or require users to provide their own settings. This ensures security, consistency, and optimal plugin usage across the organization.
### Accessing the Plugin Management Interface
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Plugins" :** In the left sidebar of the Admin Panel, click on the "Plugins" menu. This will open the Plugin Management interface.
### Plugin Management Interface Overview
The Plugin Management interface provides tools for installing, configuring, and managing plugins available to the team.
- **Page Title:** Plugins
- **Page Description:** Create and manage plugins access for your users.
- **"Show plugins manager UI and controls to users" Toggle:**
- **Purpose:** Controls whether end-users can see the plugin management interface and enable/disable plugins themselves.
- **Enabled State:** Users can view the plugin list and toggle plugins on/off for their chats.
- **Disabled State:** Hides all plugin-related UI and controls from the user. Plugins will still be available to the AI *if* they are configured by the admin to be "Turn on for all users by default" or if they are enabled specifically within an AI Agent's settings.
- **"Need help creating plugins?" Link:** Directs to the [Developer Documentation.](https://docs.typingmind.com/plugins/build-a-typingmind-plugin)
- **Action Buttons:**
- **"Browse Plugins" (Blue):** Navigates to the Plugin Store to discover and install new plugins.
- **"Create New Plugin" (Green):** Opens the interface to build custom plugins.
- **"Import" (Orange/Yellow):** Opens the interface to import plugins from a URL or file.
- **Plugin List:** Displays installed plugins. Each entry shows:
- **Plugin Icon & Name:** (e.g., Web Search, Perplexity Search, Market News).
- **Plugin Function Name:** (e.g., `get_web_search_results`, `search_via_perplexity`).
- **Execution Setting Label (Optional):** A yellow label "Use user-provided settings" appears if the plugin is configured to require users to provide their own settings.
- **Status Indicator:** A colored dot (typically green if active and configured, yellow/red if setup is needed or there's an issue).
- **Clicking a Plugin:** Selecting a plugin from the list opens its detailed configuration panel.
### Individual Plugin Configuration
Clicking on a plugin reveals its specific settings panel:
- **Top Action Buttons:**
- **"Duplicate" (Blue):** Creates a copy of the plugin configuration.
- **"Edit" (Blue):** Opens the plugin editor interface (similar to "Create New Plugin").
- **"Remove" (Red):** Deletes the plugin from the workspace (with confirmation).
- **Enable Toggle:**
- **Function:** Globally enables or disables the plugin for the *entire* workspace. If disabled here, the plugin cannot be used at all, even if turned on by default or enabled in an AI Agent.
- **Input Type:** Toggle switch.
- **Turn on for all users by default Toggle:**
- **Function:** If enabled, this plugin will be active by default in all user chats (unless the user manually disables it, *if* the "Show plugins manager UI..." toggle is enabled).
- **Input Type:** Toggle switch.
- **Hide plugin usage in user conversation Toggle:**
- **Function:** If enabled, the intermediate "Using plugin..." message will not be displayed in the chat when the AI utilizes this plugin. The results will still appear, but the explicit notification of plugin use is hidden.
- **Input Type:** Toggle switch.
- **Run this plugin with user's own settings Toggle:**
- **Purpose:** Determines whether the plugin uses the settings (like API keys) provided by the administrator in this panel, or if it requires each user to provide their own settings in their individual TypingMind interface.
- **Input Type:** Toggle switch.
- **Disabled State (Default - Uses Admin-Provided Settings):**
- The plugin relies on the API keys or other settings configured by the administrator in the "Plugin Settings Section" below.
- Execution typically happens server-side for security and consistency.
- User credentials (API keys, etc.) are *not* exposed to the end-user.
- This is generally the preferred mode for team environments, as admins manage credentials centrally.
- **Enabled State (Requires User-Provided Settings):**
- The plugin configuration fields (like API keys) in the *admin panel* are hidden or disabled for this plugin.
- A yellow label "Use user-provided settings" appears next to the plugin name in the main list.
- **End-users will be required** to go to their own plugin settings interface (if the plugin manager UI is shown to them) and enter their *personal* API keys or credentials for this specific plugin before they can use it.
- Plugin execution might happen in the user's browser (client-side) depending on the plugin's implementation, especially for plugins requiring user-specific authentication or interaction.
- **Use Case:** Useful when you want individual users to utilize their own personal API keys/accounts for certain services, potentially for tracking individual usage or costs on external platforms, or for plugins designed to run locally in the browser.
- **"Learn more" Link:** Provides additional documentation about this setting.
- **Plugin Settings Section (Conditional):**
- **Visibility:** This section (containing fields for API keys, IDs, etc.) is typically visible and editable only when the plugin is configured to use **Admin-Provided Settings** (i.e., "Run this plugin with user's own settings" is OFF).
- **Content:** Contains the specific configuration fields required by the plugin (e.g., "Search Engine ID," "Search Engine API Key" for Web Search; "Alpha Vantage API Key" for Market News). Admins enter the *centralized* credentials here.
- **"Save" Button:** Saves the entered settings for admin-provided configuration.
- **Plugin Description/Usage Section:** Provides information about the plugin's purpose, how it works, any API key requirements, and example usage prompts.
### Admin-Provided vs. User-Provided Settings Summary
- **Admin-Provided Settings (Default):**
- Admin configures API keys/settings centrally in the Admin Panel.
- the plugin sends HTTP requests to external servers, these requests are sent from the TypingMind server, keeping them hidden from the user.
- Credentials hidden from users.
- Simpler for users (no setup needed).
- Recommended for most team scenarios.
- **User-Provided Settings (Optional):**
- Enabled via "Run this plugin with user's own settings" toggle.
- Admin *does not* provide central API keys for this plugin in the Admin Panel.
- Users *must* provide their own API keys/settings in their own interface.
- Execution might occur in the user's browser depending on the plugin.
- Users will not see your plugin source on the chat interface
### Important Considerations
- All plugins are run on server side to ensure maximum security.
- You can allow your users to add their own settings for plugins, but they will not see your plugin source on the chat interface
### Plugin References
- Refer to to get more information about Plugins and Plugin setups.
- Refer to for get more information on how to build a custom plugins.
### Branding Settings
The "Branding" section in the Admin Dashboard allows administrators to customize the visual identity of the team chat portal, ensuring it aligns with the organization's brand and creates a cohesive user experience.
### Accessing the Branding Settings
1. **Navigate to the Admin Dashboard:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Portal Settings" Category:** In the left sidebar, click on the "Portal Settings" dropdown to expand the category.
3. **Click the "Branding" Link:** Click on the "Branding" link within the "Portal Settings" category. This will open the Branding settings interface.
### Branding Settings Interface Overview
The Branding settings interface is designed to provide a comprehensive set of options for customizing the visual appearance of the team chat portal. It includes the following key sections:
- **Page Title:** Branding
- **Page Description:** Customize branding, logo, banner, etc.
- **Branding Section:**
- **Name:**
- **Purpose:** Set the name of the chat portal, which will be displayed in the main screen and page title.
- **Input Type:** Single-line text field.
- **Tagline:**
- **Purpose:** Set the tagline for the chat portal, which will be displayed in the main screen and page title.
- **Input Type:** Single-line text field.
- **Description:**
- **Purpose:** Provide a brief description of the chat portal. This description is used in the link description on social media and in search engines.
- **Input Type:** Multi-line text field.
- **Logo URL:**
- **Purpose:** Set the URL for the logo that will be displayed in the main screen, app icon, and browser bar icon.
- **Input Type:** Single-line text field.
- **Example:** https://www.typingmind.com/logo.png
- **Guidance:** "(Recommend: 256x256)" is displayed to guide the image format.
- **Logo for dark theme (optional - leave it empty if it's the same as the light theme):**
- **Purpose:** Set the URL for a different logo to be used when the application is in dark theme. This field is optional. If left blank, the logo specified in the "Logo URL" field will be used for both light and dark themes.
- **Input Type:** Single-line text field.
- **Example:** https://www.typingmind.com/logo.png
- **Banner Image URL (Optional. Recommended Width: 1200px):**
- **Purpose:** Provide a URL to an image that will be used as a banner on the main screen. If provided, this banner will be shown instead of the logo and brand name.
- **Input Type:** Single-line text field.
- **Example:** https://www.typingmind.com/logo.png
- **Banner for dark theme (optional - leave it empty if it's the same as the light theme):**
- **Purpose:** Set the URL for a different banner to be used when the application is in dark theme. This field is optional. If left blank, the banner specified in the "Banner Image URL" field will be used for both light and dark themes.
- **Input Type:** Single-line text field.
- **Example:** https://www.typingmind.com/logo.png
- **Poster Image URL (Optional. Must be 2400x1256 if provided):**
- **Purpose:** Set the URL for an image that will be used as the link thumbnail/preview on social media.
- **Input Type:** Single-line text field.
- **Example:** https://www.typingmind.com/logo.png
### **Admin Info Section**
- **Name:**
- **Purpose:** Set the name that will be used as the "Sender" in the user's verification email when they sign up/login.
- **Input Type:** Single-line text field.
- **Email:**
- **Purpose:** Set the email address that will be used as the "reply-to" address in the user's verification email when they sign up/login.
- **Input Type:** Single-line text field.
- **Note:** The text "Note: This email address is only displayed as contact info and is not used for account login." is displayed to inform user on what is the purpose.
- **Change Email Button:** A button that allows the administrator to change the email address. When click, it will be displayed "To change your admin email, please contact our support team.".
- **Appearance Section:**
- **Default Display Language:**
- **Purpose:** Set the primary language used for the chat interface.
- **Input Type:** Dropdown menu.
- **Options:** A list of available languages (e.g., "English", "German", "Mandarin", "Spanish").
- **Assistant Title:**
- **Purpose:** Replace the "Assistant" word in "Assistant is typing" when assistant is thinking.
- **Input Type:** Single-line text field.
### **Footer Links Section**
Customize the documentation links within the app:
- **FAQs Link:**
- **Purpose:** Set the URL for the FAQs link that will be shown on the footer.
- **Input Type:** Single-line text field.
- **Terms & Conditions Link:**
- **Purpose:** Set the URL for the Terms & Conditions link that will be shown on the footer.
- **Input Type:** Single-line text field.
- **Privacy Policy Link:**
- **Purpose:** Set the URL for the Privacy Policy link that will be shown on the footer.
- **Input Type:** Single-line text field.
- **Feedback Link:**
- **Purpose:** Set the URL for the feedback link. Will be shown on feedback popup (clicking the "Feedback" button).
- **Input Type:** Single-line text field.
- **Note:** The content is related to the email.
- **Contact Link:**
- **Purpose:** Set the URL for the contact link that will be shown on the footer.
- **Input Type:** Single-line text field.
- **Support Iframe URL:**
- **Purpose:** Use a website URL to show in the support iframe. If set, this will override the feedback link.
- **Input Type:** Single-line text field.
- **Show Admin Link:**
- **Purpose:** Show the "Admin" link in the footer (Click on your Profile —> Admin in the footer)
- **Input Type:** Toggle switch.
- **Enabled State:** The "Admin" link is displayed in the footer, providing quick access to the Admin Dashboard.
- **Disabled State:** The "Admin" link is hidden from the footer.
**Documents Links:**
- **Link: Plugins Docs:** Set the URL for the plugins docs.
- **Link: Plugins Oauth Docs:** Set the URL for the plugins oauth docs.
- **Link: How to use Open Router models:** Set the URL for the How to use Open Router models.
- **Link: How to use Perplexity AI models:** Set the URL for the How to use Perplexity AI models.
- **Link: How to use Azure OpenAI API:** Set the URL for the How to use Azure OpenAI API.
- **Link: How to use local models (Vicuna, Alpaca, LLaMA, GPT4All, Dolly, etc.):** Set the URL for the How to use local models.
- **Link: How to get Search Engine ID and API Key:** Set the URL for the search engine.
- **Link: Dynamic Context via API Documents:** Set the URL for the dynamic context documents.
- **Link: Share Plugins via Github:** Set the URL for the share plugins github.
- **Link: Initial System Instruction Guide:** Set the URL for the Initial System Instruction Guide.
- **Link: Translation Contribution Guide:** Set the URL for the translation contribution Guide.
- **Link: How to get Azure Whisper API Key and Endpoint:** Set the URL for the Azure Whisper API Key and Endpoint.
### Applying Changes
After configuring the branding settings, click the "Save Changes" button (typically located at the bottom of the interface) to apply the changes to the chat portal.
### Custom Domain Section
The "Custom Domain" section in the Admin Dashboard allows administrators to configure a custom domain or subdomain for accessing their team chat portal, enhancing the organization's branding and creating a seamless user experience.
### Accessing the Custom Domain Section
1. **Navigate to the Admin Dashboard:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Portal Settings" Category:** In the left sidebar, click on the "Portal Settings" dropdown to expand the category.
3. **Click the "Custom Domain" Link:** Click on the "Custom Domain" link within the "Portal Settings" category. This will open the Custom Domain settings interface.
### Custom Domain Interface Overview
The Custom Domain interface is designed to guide administrators through the process of configuring a custom domain for their chat portal. It includes the following key elements:
- **Page Title:** Custom Domains
- **Page Description:** Access via your own domain or subdomain.
- **Default Sub-domain:**
- **Purpose:** Display the default subdomain for the chat portal, hosted on the `.typingcloud.com` domain.
- **Display:** The default subdomain is displayed in a non-editable text field (e.g., "[demo.typingcloud.com](http://demo.typingcloud.com/)").
- **Instruction:** Your default sub-domain is hosted on `.typingcloud.com`.
- **Custom Domain (Updating DNS records required):**
- **Purpose:** Allow administrators to enter the custom domain or subdomain they want to use for accessing the chat portal.
- **Input Type:** Single-line text field.
- **Example**: "[www.typingmind.com](http://www.typingmind.com/)"
- **Requirement:** This is a text input field which allows for custom domains.
-The field has a blinking cursor to indicate where the text will be inputted.
- Example instructions: `Custom domain must be a subdomain, example: chat.yourdomain.com. If you want to use the root level domain, use "www" as the subdomain, for example: "www.yourdomain.com".`
- **Save Button:**
- **Function:** Saves the entered custom domain and initiates the verification process.
- **Action:** Clicking the "Save" button saves the entered custom domain. If the entered custom domain is invalid, the error will show up.
- **Domain Verification Section:**
- **Purpose:** Provide instructions and information for verifying ownership of the custom domain.
- **Status Indicator:** Displays a message indicating the status of the domain verification process.
- **"Domain is pending verification"**: indicates that the domain verification process has not yet been completed. With a warning image.
- **Verification Instructions:** Displays instructions on how to verify domain ownership by setting a TXT or CNAME record on the domain's DNS settings.
- **"Verify Domain Ownership":**
- **Type:** TXT/CNAME
- **Name:** \_vercel
- **Value:** A unique verification code.
- **Re-check DNS Config:** A blue button to re-check the DNS config.
- Once setting up the Domain Ownership, after 24 hours, it should be verified to have green tick on top.
### Emails Section
The "Emails" section in the Admin Dashboard allows administrators to customize the email templates used for communicating with users of the team chat portal, ensuring consistent branding and messaging across all communications.
### Accessing the Emails Section
1. **Navigate to the Admin Dashboard:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Portal Settings" Category:** In the left sidebar, click on the "Portal Settings" dropdown to expand the category.
3. **Click the "Emails" Link:** Click on the "Emails" link within the "Portal Settings" category. This will open the Emails settings interface.
### Emails Interface Overview
The Emails interface is designed to provide a centralized location for customizing email templates. It includes the following key sections:
- **Page Title:** Emails
- **Page Description:** Customize emails sent to your users.
- **Email Sender Section:**
- **Description:** By default, emails sent to your users will be sent from `no-reply@typingmind.com` under your **Admin Name** (\[Admin Name]) and the **Brand Name** (\[Brand Name]), the reply-to header is set to your **Admin Email** (\[Admin Email]). You can change these values in the Branding page. Enable custom email sender to send emails from a different domain.
- **Enable custom email sender via SMTP:**
- **Purpose:** Allow administrators to use their own SMTP server to send emails, enabling greater control over email delivery and branding.
- **Input Type:** Toggle switch.
- **Configuration Options (Displayed when enabled):** When enabled, the "All fields are required" is displayed.
- **Setup Custom Email Sender via SMTP:** The text is a link that will direct user to the setup page.
- If click on `Setup Custom Email Sender via SMTP` link, the linked page will show the instruction to:
- Set up a custom email sender: Obtain SMTP credentials from an online service. The page also provides recommendations such as Gmail, Mailgun, SendGrid, and Amazon SES.
- Guideline: https://docs.typingmind.com/typingmind-custom/branding-and-customizations/setup-custom-email-sender-via-smtp
- SMTP Hostname:**A text input field, with the example such as `smtp.example.com`.
- **Port:** A number input field, with the number 465 as example.
- **Use secure protocol (TLS):** Enable if you are using port 465 or your SMTP server requires it.
- Toggles to on or off.
- **SMTP Username:** The text input field for user name.
- **SMTP Password:** The text input field for password.
- **Sender Email Address:** The text input field for Sender email address.
- **Sender Name:** The text input field for Sender name.
- **Reply-To Email Address:** Set this in the Branding page.
- Ensure you make to configure your email service provider properly to avoid your emails hitting the spam folder. Some email services will require you to verify your sender’s email address.
- **Send a test email:** Type the email for testing purpose to confirm.
- To confirm with the `Send Test` button.
- The content above is related to set up your own SMTP.
- **Save Button:**
- **Function:** Saves the custom settings of the email. The current setting for the Email Sender is disabled, a prompt shows: `Click "Send test" before saving.`.
- **Email Template Sections:**
- Provide customizable email templates for:
- **Login Email Template:** Customize the login email content users receive when logging in.
- "You can only change the email template when using your own Email Sender via SMTP": A note is displayed.
- Use `{{code}}` to indicate the OTP (One-Time Password) the system provided for users to login.
- **Subject (customizable):** Login to \[Workplace Name]
- **Body (customizable):** Includes email to provide the login code to the user, and say the code is validated for 5 minutes. It will end up with Thanks note from the account admin.
- **Invitation Email Template:** Change the invitation email content sent to new users.
- "You can only change the email template when using your own Email Sender via SMTP": A note is displayed.
- **Subject (customizable):** You have been invited to \[Workplace Name].
- **Body (customizable):** Includes email to navigate user to login the workplace via a link to login and provide the regards from the admins.
### Welcome Message Management
The "Welcome Message" section in the Admin Dashboard, located under "Portal Settings", allows administrators to customize the initial messages and content displayed to users when they access the team's AI chat portal. This feature enables tailoring the user experience and provides a way to communicate important information or highlight key features.
### Accessing Welcome Message Settings
1. **Navigate to the Admin Dashboard:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Portal Settings" Category:** In the left sidebar, click on the "Portal Settings" dropdown to expand the category.
3. **Click the "Welcome Message" Link:** Click on the "Welcome Message" link within the "Portal Settings" category. This will open the Welcome Message configuration interface.
### Welcome Message Interface Overview
The Welcome Message interface is designed to provide a clear and organized way to manage different types of welcome content. The interface is made up of the following:
- **Page Title:** "Welcome Message" (clearly indicates the page's function).
- **Page Description:** "Set a message or an announcement..." (explains the section's purpose).
- **"View Live" Link:** Displays the URL of the team's AI chat portal (e.g., "[ngocngoctest.typingcloud.com](http://ngocngoctest.typingcloud.com/)"). Clicking this link opens the chat portal in a new tab, allowing administrators to preview the welcome message in the actual user interface. The color of this link button is in blue.
- **Profile button:** Shows the current admin profile.
- **Welcome Message (Markdown supported):**
- **Purpose:** Defines a central welcome message that will be displayed to all users on the main page of the chat portal.
- **Input Type:** Text area (multi-line text field).
- **Markdown Support:** The content of the welcome message can be formatted using Markdown syntax, allowing for headings, bold text, lists, links, and other styling options.
- **Preview:** The changes in the text area will be updated in real-time.
- **Default Content:** Initially, this field may contain a placeholder message (e.g., "Hello").
- **Instructions** Will be shown in the center of the page for all users
- **"Hide welcome message for logged in users" Toggle Switch:**
- **Purpose:** Controls whether the central welcome message is displayed to logged-in users.
- **Input Type:** Toggle switch.
- **Enabled State:** The toggle is switched to the right (typically displayed with a blue color), and the central welcome message is *hidden* from users who are logged in. This is useful for providing different welcome experiences for guests/anonymous users and registered members.
- **Disabled State:** The toggle is switched to the left (typically displayed in gray), and the central welcome message is displayed to *all* users, regardless of their login status.
- The changes is automatically shown.
- **First assistant message:**
- **Purpose:** Defines the initial message that the AI assistant will send to the user when a new chat is started. This sets the tone for the conversation and can provide initial guidance or context.
- **Input Type:** Text area (multi-line text field).
- **Default Content:** Initially, this field may be empty.
- **Instructions**: Will be shown as the first message in the chat coming from the AI assistant.
- **Login Message (Markdown supported):**
- **Purpose:** Defines a custom message that will be displayed on the login page *only* when the "login wall" is enabled. This is useful for providing instructions, highlighting features, or offering support information to users who are logging in.
- **Input Type:** Text area (multi-line text field).
- **Markdown Support:** The content of the login message can be formatted using Markdown.
- **Visibility:** This message is only displayed when the "Enable Login Wall" setting is active (configured in the "Access Mode" section of the Admin Dashboard).
- **"Set up the login wall here" Link:** A hyperlink labeled "Set up the login wall here" is provided. Clicking this link navigates the administrator directly to the "Access & Limits" page, specifically to the Access Mode section.
- **Instruction:** Will be shown on the side of the login page for all users.
- **Preview:** The change in the text area is displayed immediately.
- **Example content:**
```
*Welcome to our AI-powered app! We're excited to have you on board. Explore the intelligent features designed to make your tasks easier and more efficient. If you have any questions, our support team is here to help!*
*Here's what you can do:*
- ***Intelligent Data Analysis**: Analyze large sets of data quickly to gain valuable insights.*
- ***Automated Workflows**: Set up automation for repetitive tasks to boost productivity.*
- ***Natural Language Processing**: Interact with the app using natural language queries.*
- ***Predictive Analytics**: Utilize predictive models to forecast trends and outcomes.*
- ***Customizable Models**: Tailor AI models to suit specific needs and requirements.*
- ***Integration with APIs**: Seamlessly connect with other apps and services via APIs.*
- ***Real-time Feedback**: Receive instant feedback and suggestions for improvement.*
- ***Visualization Tools**: Create visual representations of data for easier interpretation*
```
- **"Save" Button (Blue):**
- **Purpose:** Saves all changes made to the Welcome Message settings.
- **Action:** Clicking this button applies the configured welcome messages, first assistant message, and login message (if applicable) to the chat portal. The "Save" button's state is blue.
- **Feedback:** A brief visual confirmation (e.g., a "Saved!" message) appears at the top of the page to indicate successful saving.
### Chat Features Management
The "Chat Features" section in the Admin Dashboard allows administrators to control which features are visible and accessible to users within the team chat portal, tailoring the interface to specific needs and preferences. This enables admins to simplify the user experience, highlight key functionalities, or restrict access to certain features based on user roles or organizational policies.
### Accessing the Chat Features Section
1. **Navigate to the Admin Dashboard:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Portal Settings" Category:** In the left sidebar, click on the "Portal Settings" dropdown to expand the category.
3. **Click the "Chat Features" Link:** Click on the "Chat Features" link within the "Portal Settings" category. This will open the Chat Features management interface.
### Chat Features Interface Overview
The Chat Features interface is organized to provide a clear overview of available features and facilitate easy toggling of their visibility.
- **Page Title:** Chat Features
- **Page Description:** Show/hide features on the chat interface...
The interface is a scrollable list of toggles for each features.
- **Left Sidebar:**
- **Description**: Show the left sidebar to the users
- **Input Type:** Toggle switch
- **Enabled State:** the chat app interface includes the left sidebar
- **Disabled State:** the chat app interface does not include the left sidebar
- **Show Workspace Bar:**
- **Description**: Show the workspace bar on the left sidebar to users
- **Input Type:** Toggle switch
- **Enabled State:** the chat app interface includes the workspace bar at the top of the left sidebar.
- **Disabled State:** the chat app interface does not include the workspace bar.
- **Search Box:**
- **Description**: Allows users to use search box
- **Input Type:** Toggle switch
- **Enabled State:** users can find a search box at the top of the left sidebar to search for previous conversations
- **Disabled State:** the chat app interface does not include the search box. If disabled, the "create folder", "sort chats", and "filter chats" will also be hidden
- **Web Search:**
- **Description**: Allows users to use web search
- **Input Type:** Toggle switch
- **Enabled State:** users can use the "Web Search" plugin, so the AI can get content from the Internet
- **Disabled State:** the chat app interface does not include web search
- **Prompt Library:**
- **Description**: Allows users to use prompt library
- **Input Type:** Toggle switch
- **Enabled State:** users can use pre-defined prompts, access the prompt library and save created prompts to it
- **Disabled State:** users can not use any prompt
- **Output Settings:**
- **Function:** Provides granular control over the characteristics of the AI's response.
- **How it works:** Output settings are used to customize the output of the AI. These settings are applied during generation and are **no longer appended** to the user's visible message content. This keeps the message input clean and easy to modify later.
- **Output Format:** Dictates the structure (Default, Concise, Step-by-step, Extreme Detail, ELIS5, Essay, Report, Summary, Table, etc.).
- **Tone:** Influences expression (Default, Authoritative, Clinical, Cold, Confident, Cynical, Empathetic, Formal, Friendly, Humorous, etc.).
- **Writing Style:** Determines stylistic qualities (Default, Academic, Analytical, Conversational, Creative, Critical, Descriptive, Journalistic, Narrative, Persuasive, etc.).
- **Language:** Sets the AI's response language (Default, English, Español, Français, Deutsch, etc.).
- **"Reset to default" Button:** Resets all output settings in the dialog to their default values.
- **"Done" Button (Blue):** Applies the selected output settings and closes the dialog.
- **Active Settings Indicator:** When non-default Output Settings are active, an **orange dot** appears on the "Search / Commands / Output Settings" button in the message input area, visually indicating that custom output parameters are in effect.
- **AI Agents:**
- **Description**: Allows users to use AI Agents
- **Input Type:** Toggle switch
- **Enabled State:** users can select specific AI agents.
- **Disabled State:** AI Agents option will be hidden
- **Upload Document:**
- **Description**: Allows users to upload document to chat
- **Input Type:** Toggle switch
- **Enabled State:** the interface includes the option to upload document and let the AI to get information from it.
- **Disabled State:** can not upload any files
- **System Message:**
- **Description**: Allows users to set system message for chat conversations
- **Input Type:** Toggle switch
- **Enabled State:** Users can set up system message
- **Disabled State:** Can not set system messages
- **Model Settings:**
- **Description**: Allows users to configure model settings for chat conversations
- **Input Type:** Toggle switch
- **Enabled State:** Users can config the Model settings
- **Disabled State:** Users can not config Model settings
- **Text To Speech:**
- **Description**: Allows users to use text to speech in chat conversations
- **Input Type:** Toggle switch
- **Enabled State:** Users can text-to-speech the AI response.
- **Disabled State:** Can not text-to-speech the AI messages
- **OpenAI Text-to-speech:**
- **Description**: Allows users to use OpenAI Text-to-speech for voice output. Note: this requires you to have an OpenAI API Key in your account. The system will use your API key to convert text into voice.
- **Input Type:** Toggle switch
- **Enabled State:** Users can select OpenAI text-to-speech
- **Disabled State:** Users can not OpenAI text-to-speech
- **Show Example Chats:**
- **Description**: Show example chats when the user first use the app.
- **Input Type:** Toggle switch
- **Enabled State:** The users will see some example chats at first time
- **Disabled State:** There is no example chat being displayed
- By the setting, admin can set up the sample prompts:
1. Open your app
2. Select a specific model to chat with, add a character and turn on plugins if necessary
3. Customize the content of the user and assistant messages as desired
4. Share the chat via Secret link and import it here: with text input and Add/Cancel button, the URL can be copy paste and to Add the setting, then user can click on "Replace with your own example"
5. To create even more setting, select "+ Add new example" , a similar text input will appear and ready to set
- **Chat Profiles:**
- **Description**: Allows users to create multiple chat profiles.
- **Input Type:** Toggle switch
- **Enabled State:** users can manage profile.
- **Disabled State:** hide this function
- **Use Plugins:**
- **Description**: Allows users to use plugins.
- **Input Type:** Toggle switch
- **Enabled State:** Let user select a list of plugins to use
- **Disabled State:** Users can not add plugins
- **Auto suggest relevant keywords:**
- **Description**: Allows users to auto suggest relevant keywords after each message
- **Input Type:** Toggle switch
- **Enabled State:** the chat interface will be able to suggest keywords after each message.
- **Disabled State:** keywords are not being displayed
- **Voice Input:**
- **Description**: Allows users to record and send their voice as chat input
- **Input Type:** Toggle switch
- **Enabled State:** the chat interface includes the microphone for recording
- **Disabled State:** the microphone will be removed.
- **OpenAI Whisper:**
- **Description**: Allows users to use OpenAI Whisper for voice input. Note: this requires you to have an OpenAI API Key in your account. The system will use your API key for all audio transcription from the users.
- **Input Type:** Toggle switch
- **Allow import data from OpenAI:**
- **Description**: Allows users to import their existing chats from OpenAI to the app
- **Input Type:** Toggle switch
- **Enabled State:** Chat data from OpenAI can be migrated
- **Allow change app language:**
- **Description**: Allows users to change the app UI language to their preferred language
- **Input Type:** Toggle switch
- **Enabled State:** Users can select languages for UI
- **Allow share chats to external services:**
- **Description**: Allows users to share their chats to TypingMind Cloud, ShareGPT, and other external services
- **Input Type:** Toggle switch
- **Show usage limits message:**
- **Description**: Show the usage limits message under the chat input
- **Input Type:** Toggle switch
- **Enabled State:** Display the limit messages
- **Disabled State:** Turn off the display
- **Action Buttons:**
- **Description**: Show the action buttons on the chat input
- **Input Type:** Toggle switch
- Sub-Settings
- **List More**: Show all action setting buttons
- **Regenerate**: Display the regenerate button
- **Share**: Display the share button
- **Reset Chat**: Display the reset chat button
- **Clear Context**: Display the clear context button
- **New Chat**: Display the New Chat
- **Show chat information (tokens, models, etc.):**
- **Description**: Show the chat info (token, model, etc.) in the (i) icon on the header
- **Input Type:** Toggle switch
-**Message Actions:**
- **Description**: Show action buttons for each message in chat conversations
- **Input Type:** Toggle switch
- Sub-Settings
- **Edit In Canvas**: Show `Edit in canvas` for user to modify AI generated content.
- **Edit**: Show `Edit` button to let user can modify the message, same as "Edit in Canvas"
- **Copy**: Display the copy icon for copy the content
- **Pin**: Display pin
- **Delete**: Display the Delete icon for double confirmation
- **Show Raw**: Display Show Raw for seeing the raw content in the message
- **Play**: Play the message using text to speech
- **Fork Chat:** Display the Fork Chat function.
- **Download Audio File:**
- **Description**: Allow users to download the audio file when playing text to speech.
- **Input Type:** Toggle switch
- **Login required to view chat interface**
- **Description**: Require users to log in before seeing the chat interface.
- **Input Type:** Toggle switch
- **Project Settings:**
- **Description**: Allow users to Project Settings
- **Input Type:** Toggle switch
- **Enabled State:** Users can config the Project settings for chat
- **Disabled State:** Users can not config Project settings.
- **Auto generate chat title:**
- **Description**: Allow users to use auto generate title for new chats
- **Input Type:** Toggle switch
- **Advanced Setting**:
- **Model For Title Generation:** A dropdown options: `Auto`, `GPT-4o Search Preview`, `GPT-4o Mini Search Preview`, `GPT-3`, `03 Mini`, `01`, `01 Mini`, `ChatGPT-4o`, `ChatGPT-4o Mini`, `GPT-4 (2024-08-06)`, `GPT-4o Mini (2024-08-06)`.
- **Instruction**: The text area to input instruction for title generation. The initial text inside is `What would be a short and relevant title for this chat? You must strictly answer with only the title, no other text is allowed.`.
- **Allow temporary chats**
- **Description**: Allow user to use temporary chats - Temporary chats are not saved to the users account and the system database
- **Input type**: Toggle switch
- **Enabled State:** Users can use temporary chat
- **Disabled State:** Users can not use temporary chat
### How it functions
When admins disable a chat feature, it will automatically disappear on the chatbot UI and vice versa.
### Applying Changes
After configuring the chat features settings, click the "Save" button (typically located at the bottom of the interface) to apply the changes to the chat portal.
### Chat Theme Management
The "Chat Theme" section in the Admin Panel allows administrators to customize the visual appearance of the team chat portal, enabling them to create a unique and branded experience for their users.
### Accessing the Chat Theme Section
1. **Navigate to the Admin Dashboard:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Portal Settings" Category:** In the left sidebar, click on the "Portal Settings" dropdown to expand the category.
3. **Click the "Chat Theme" Link:** Click on the "Chat Theme" link within the "Portal Settings" category. This will open the Chat Theme management interface.
### Chat Theme Interface Overview
The Chat Theme interface is designed to provide a clear overview of customizable theme options and facilitate easy preview and configuration. The interface generally consists of the following elements:
- **Page Title:** Chat Theme
- **Page Description:** Customize UI appearance & colors
The interface is a list of theme for administrators to customize.
- **Set dark theme by default**:
- **Function:** Sets the user interface as dark theme automatically for all users. The change can improve focus and reduce eye strain
- **Input Type:** Toggle switch
- If enabled, the app background, buttons, font will be in Dark Theme automatically for users, as default.
- If disabled, the app will not apply dark theme by default
- **Sidebar Color**:
- **Function:** Sets the user interface color theme for the sidebar
- A color spectrum horizontal bar is used to select sidebar color.
- **"Reset to default" Link** Clicking the link allows the settings to reset.
- **Save Button** Clicking the link allows the color settings to save.
- It allows save the color for user.
- **Appearance**:
- Provides a preview of a few different templates.
- When the template is clicked, it will show a radio button-shape selection
- Default, selected: The setting will include `Default text` and a photo
- Twitch Purple, selected: The setting will include `Twitch Purple` and a photo
- Lime Green, selected: The setting will include `Lime Green` and a photo
- Custom theme (Add your own CSS code).
- Allows admin to add their own CSS code on the text box. A small font instruction is added on top: `Below is an example CSS to customize the app UI. Feel free to modify as you like and click Save.`.
- Has `Reset to default` text in blue in case you don't want to modify any of the code.
- After setting your code, select on “Save” button so it can save it
### Custom Code Section (DEPRECATED)
Note: For security reasons, this custom code feature is no longer supported for new instances or for users who have never used it before.
The "Custom Code" section in the Admin Panel allows administrators to inject custom HTML, CSS, and JavaScript code into their team chat portal, enabling advanced customization and integration with external services. This provides unparalleled flexibility in tailoring the chat portal's appearance and functionality to meet specific organizational needs.
### Accessing the Custom Code Section
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Portal Settings" Category:** In the left sidebar, click on the "Portal Settings" dropdown to expand the category and click "Chat Features"
3. **Find the "Custom Code" :** Click on the "Custom Code" within the "Chat Features" category. This will open the Custom Code settings interface.
### Custom Code Interface Overview
The Custom Code interface is designed to provide a clear and intuitive environment for adding and managing custom code snippets. It includes the following key sections:
- **Page Title:** Custom Code
- **Page Description:** Add your HTML/CSS/JavaScript to your…
The interface contains two editing areas:
1. **Embed HTML/CSS/JavaScript in your chat instance page:**
- **Purpose:** Allows administrators to inject custom HTML, CSS, and JavaScript code into the chat portal's HTML structure.
- **Instruction**: within `` tag.
- **Input Type:** Text area (multi-line text field).
- **Usage Notes:**
- The code entered in this text area will be inserted directly into the `` section of the chat portal's HTML.
- This can be used to add custom UI elements, modify existing styles, or integrate with external services such as your analytics service.
- The example javascript code shows how to edit the login placeholder for `Enter your email` to `Your New Placeholder`
```
```
2. **Customize HTTP headers:**
- **Instructions**: Customize your HTTP headers of all requests sent to your chat instance. This feature is helpful when you need to configure your chat instance to work in a specific environment, like setting custom headers for authentication, Content-Security-Policy, or versioning.
- **Warning**: This is an advanced feature. Modifying HTTP headers may cause unexpected behavior in your chat instance, including lost of users data. Please use with caution.
- **Input Type:** Text area (multi-line text field).
- **Usage Notes:**
- This section allows administrators to customize the HTTP headers of all requests sent to the chat instance.
- Enter your custom HTTP headers as raw text, each header on a new line.
- A table to show common settings:
- Example code for input:
`Content-Security-Policy: default-src 'self'`
`x-custom-header: your-header`
`x-version: 2023-06-01`
- **Save Button:** Saves the custom code and applies the changes to the chat portal
The "Prompt Library" section in the Admin Panel allows administrators to create, manage, and control the availability of prompts for users within the team chat portal. This enables organizations to standardize prompt usage, promote best practices, and ensure consistent AI interactions.
### Accessing the Prompt Library Section
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Data Management" Category:** In the left sidebar, click on the "Data Management" dropdown to expand the category.
3. **Click the "Prompt Library" Link:** Click on the "Prompt Library" link within the "Data Management" category. This will open the Prompt Library management interface.
### Prompt Library Interface Overview
The Prompt Library interface is designed to provide a comprehensive set of tools for managing prompts.
- **Page Title:** Prompt Library
- **Description:** Create a prompt library for your users.
The prompt setting area consists of two toggle buttons:
- **Only show prompts for logged in users:** Toggles the visibility of the Prompt Library for logged-in users only.
- Enabled State: The Prompt Library is only visible to users who have logged into their accounts.
- Disabled State: The Prompt Library is visible to all users, including those who are not logged in.
- **Allow users to use community prompts** - Toggles the availability of Community Prompts to end users
- Enabled State: Users are able to access prompts from Community.
- Disabled State: Restrict users from importing prompts from Community prompts.
- **"Export Prompts" Button:** A prominent button that exports all prompts, the download file name should follow this format: prompts-\[numbers].json.
- It trigger a download of all prompts from the current view (filter, and sorted) to .json file.
- Click trigger the download.
- A success message shows up at the top `Saved!` with red background.
- **"Import Prompts" Button:** A prominent button that imports all prompts.
- It trigger a File Manager for admins to select a existing file json prompt file.
- **"Download Sample File" Button:** A link to sample prompts file so admins can view sample file for importing.
- **Search your prompts:** A search input field to find the prompts by their Title and/or keywords.
- **Filter by tags:** a input box that shows a filter on all prompts based on tags and it can suggest the matched strings as they are being input.
- A view of all available prompts.
- **Prompt Card:** Each prompt are displayed on a card where it show the Prompt Details, it can be configured on by 2 options: Edit and Delete.
- The layout for each of these settings will be described in the Create a New Prompt section.
### Creating a New Prompt
The process of create a new prompt will be almost the same as personal version, so it will follow most of the settings as https://docs.typingmind.com/prompts/prompt-library, but there are more settings for team so here is the configuration with extra details:
**Click the "Add Prompt" Button:** In the main Prompt Library interface, click the "Add Prompt" button. This will open the "New Prompt" creation form.
The prompt settings will work exactly the same as prompt settings in , which includes:
- Prompt details: title, description
- Prompt message ( Use `{{field 1}} {{field 2}} {{for anything}}` to indicate the fill in the blank part)
- Prompt tags to categorize prompt type.
There’s a Visibility option within Prompt settings that will be only available via Admin Panel.
- **Visibility**: Control who can view or access the prompt.
Options:
- Visible to all users: accessible to all users
- Visible only to users in specific groups: a dropdown list will appear with user groups as preconfigured in User Group (such as AI Expert, etc).
- Visible to all users except users from specific user groups: a dropdown list will appear with user groups as preconfigured in User Group (such as AI Expert, etc).
- After setting up , click on the “Save” for the current actions to set on system
### Adding or Canceling the New Prompt
1. **Click the "Save Changes" Button:** After configuring all desired settings, click the "Save Changes" button (typically located in the top-right corner of the form) to add the new Prompt to the list.
The form is validated to ensure that all required fields are filled in correctly.
If there are errors, error messages are displayed to guide the user.
Upon successful saving, the "New Prompt" form closes and the new Prompt appears in the Prompt Library interface.
2. **Click the "Cancel" Button:** To discard the changes and close the "New Prompt" form without saving, click the "Cancel" button.
A confirmation prompt may appear to prevent accidental data loss.
### Editing The Current Prompt
- To edit a prompt, in the “Prompt Library” dashboard, click on Edit to the prompt you wish to edit. This will take you to the prompt edit page.
### Knowledge Base Management
The "Knowledge Base" section in the **Admin Panel** allows administrators to upload and manage documents that serve as a repository of information for the AI to draw upon when responding to user queries. A knowledge base leverages a retrieval-augmented generation (RAG) approach. Instead of embedding all data into the system prompt, the knowledge base retrieves relevant pieces of information based on the user’s query.
By connecting these documents to specific AI Agents or projects, administrators can ensure that users receive accurate, contextually relevant information.
### Accessing the Knowledge Base Section
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Data Management" Category:** In the left sidebar, click on the "Data Management" dropdown to expand the category.
3. **Click the "Knowledge Base" Link:** Click on the "Knowledge Base" link within the "Data Management" category. This will open the Knowledge Base management interface.
### Knowledge Base Interface Overview
The Knowledge Base interface is designed to provide a clear overview of connected sources and facilitate easy management of data sources. It includes the following key elements:
- **Page Title:** Knowledge Base
- **Description:** Upload and manage documents in your knowledge base
- There are two tabs: Manage Data and Settings.
- Manage Data: to connect data
- Settings: to control data access
- **"+ Add Data Source" Button:** A prominent button is on top, allows administrators to initiate the process of connecting a new data source to the Knowledge Base. Clicking this button opens the "Add Data Source" dialog.
- Connected Sources: This section is displayed to see list of current connection folders to the KB. The components are listed by connection type:
- Name: Display the names of the connected sources.
- Icon: Click on each title of the connection, a page will direct to the main page of all sources linked with a link will to the site.
- **Action Area:** An area on the right includes your connected data details in each connection folder. It includes the following components:
- A top zone to configure your current sources where you can configure your connected sources, your file uploads.
- The Search document bar to quickly navigate specific documents and a filter system next to it so you can filter the data via training tags.
- Below the search documents, there will be a list of data you connected with the Name, Last Sync, Data Size, Training Tags and Status (Pending, Ready)
- There’s a check box next to each data so you can easily delete your data.
### Adding a New Data Source
1. **Click the "+ Add Data Source" Button:** In the main Knowledge Base interface, click the "+ Add Data Source" button. This will open the "Add Data Source" dialog.
2. **Add Data Source" Dialog Overview:** The "Add Data Source" dialog is structured to guide users through the connection process. It includes the following key sections:
### "Add Data Source" Options
The "Add Data Source" dialog presents the various data source options that can be connected to the Knowledge Base. The options include:
**File Uploads:**
1. Select Add Data Source and select file upload
2. You will need to create a folder for file upload first. Enter the folder name and click Create
3. Click Upload File button and find the files and document on your local.
4. Upload your files.
**Limitations:**
"Max file requests are 50MB, if the local files go up to 50MB, consider ""Split files so it will be easier to load the files"
**GitHub:**
1. Click on **GitHub** in the ""Add Data Source"" dialog
2. Enter your **GitHub Username** and press the setting for setting PAT(Personal Authentication Token)
3. Create a New Access Token:
4. To create a new token and select repos for syncing user can click on a link to navigate to `Settings`. Then provide a description, set expiration, and repository access.
5. Make sure to copy this token, because this token will never show again for security reason. There is a message: Make sure to copy your personal access token now as you will not be able to see this again.
6. Back to TypingMind setting form, and paste the personal access token into the ""Personal Access Token"" text field.
7. Click the ""Next >"" button (typically located in the bottom-right corner of the form) to save and proceed.
8. At the ""Connect to Github"" page, you can select a list of available repositories for synching with the account.
9. Select the list of repositories, then click ""Update Repository Selection"" if you want to update the current repo connection,
**Notion:**
1. Click on **Notion** in the ""Add Data Source"" dialog.
2. Authenticate to use this plugin. (Click Authenticate Now to get permission) a popup shows up for authentication.
It will redirect the user to Notion's website to authenticate and authorize the integration.
3. The popup ""Allow TypingMind to access these pages"".
- Select the pages by clicking the checkbox. You can also search in the input field.
- There are the content to connect from the personal account of Notion, including:
- A search box that says ""Search for pages in name's Notion""
- Notion Pages with title will appear where user may select.
- After selecting pages, press the ""Allow access"" button. This will close the Notion popup and re-direct to TypingMind settings.
- If it is all setup perfectly, refresh the app to see the latest data connection.
**Google Drive**
Connect to your Google Drive account to sync files and documents.
1. Select Add Data Source then select Google Drive
2. After select, the page is redirected to an authentication page where you can log into your Google account or select from your current logged-in account.
3. Confirm all Google Account Requirements"", the system will need the user to confirm the knowledge base system requires access to your Google Account.
4. After authenticating, you will be directed to a window to select a file you want to connect.
The selected files need to tick on the check box and click “Select”.
**Web Scraper**
1. Click Add data source and Select ""Web Scraping"
2. You will need to create a folder for web scrape. Enter the folder name and create.
3. Click on Configure button to enter the URL to scrape manually, for example, with "[docs.typingmind.com](http://docs.typingmind.com/)"", the system will indicate if its valid if the font’s color change.
4. Select how many Pages that system will scrape.
5. After the link has been set, the system will start crawling into the website.
*A successful check should be like this “The source is processing please wait to the bot to grab it correctly”
### Add training tags to your files
After the document is uploaded to KB for each source document, you can assign Tags to categorize the document, so the agent can get more focus for training data based on user request.
A popup will prompt to manage tags with the current object listed in top with count number, also shows available or newly created tags that are available to be selected. All applied changes are recorded under tags column after select
- Use click the current option to select/ unselect the available tags
- or type to create new tag on the top right corner of the popup. Click “+” icon to add the newly created tags.
- The training tags will be added to each data so you can easily assign those tags to the AI Agents.
## Settings Tab
There are two options for Knowledge Base settings in the toggle button:
- Only use knowledge base data for AI agents: By default, training data will be used for all chats across all models. If you enable this option, the training data will only be used when using with AI agents. Chats with base models (e.g., GPT-4, Claude, etc.) will not have access to training data. You can set the AI agents to have access to a subset of the training data by updating the knowledge base preference in the AI agent settings
- Show reference sources of training documents to users: By default, the sources of the training documents are not visible to users. If you enable this option, the response messages will include links to the document sources. Please note that the users may be able to download the original file if it is available.
### How Knowledge Base works
The AI assistant gets the data from uploaded files via a vector database. Here is how the files are processed:
1. Files/Data are connected
2. We extract the raw text from the files and try our best to preserve the meaningful context of the file.
3. We split the text into chunks. The chunks are separated and split in a way that preserves the meaningful context of the document. (Note that the chunk size may change in the future, that’s why we do not indicate the size as it will continuously update and improve)
4. These chunks are stored in a database.
5. When your users send a chat message, the system will try to retrieve up to **5 relevant chunks** from the database (based on the content of the chat so far) and provide that as a context to the AI assistant via the system message. This means the AI assistant will have access to the 5 most relevant chunks of uploaded data at all time during a chat.
6. The “relevantness” of the chunks is decided by our system and we are improving this with every update of the system.
7. The AI assistant will rely on the provided text chunks from the system message to provide the best answer to the user.
All of your uploaded files are stored securely on our system. We never share your data to anyone else without informing you beforehand.
### **Best practices to provide knowledge base**
1. Use raw text in [**Markdown**](https://en.wikipedia.org/wiki/Markdown) format if you can. LLM model understands markdown very well and can make sense of the content much more efficient compare to PDFs, DOCX, etc.
2. Use both Upload Files/Data Connection and [**System Prompts**](https://docs.typingmind.com/typingmind-custom/branding-and-customizations/system-prompts-on-admin-panel). A combination of a well-prompted system instruction and a clean knowledge base is proven to have the best result for the end users.
### System Prompts Management
The "System Prompts" section in the Admin Panel allows administrators to define global instructions and contextual information that will be applied to all chats and AI agents within the team chat portal. This provides a way to shape the overall behavior of the AI, set organizational guidelines, and ensure consistent responses.
### Accessing the System Prompts Section
1. **Navigate to the Admin panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Data Management" Category:** In the left sidebar, click on the "Data Management" dropdown to expand the category.
3. **Click the "System Prompts" Link:** Click on the "System Prompts" link within the "Data Management" category. This will open the System Prompts management interface.
### System Prompts Interface Overview
The System Prompts interface is designed to provide a clear and organized way to manage different types of global prompts. It includes the following key elements:
- **Page Title:** System Prompts
- **Page Description:** Set global system instructions and related prompts.
The interface is organized into distinct sections for different types of prompts:
### 1. Global System Instruction
- **Purpose:** Defines the overarching system prompt that will be applied to all chats and AI agents within the chat instance. This prompt sets the foundation for the AI's behavior, personality, and response style.
- **Description:** "This is the system prompt for the whole chat instance and will be used in all chats and AI agents. Check 'Examples' to see some examples of training instructions. Your users will not see this data."
- **Input Type:** Text area (multi-line text field).
- The text area supports multi-line input.
- The text area has a light-gray background.
- The text color in the text area is black.
- A character counter is displayed on the right side of the text area.
- **Example Content:** Provides example text for setting initial instruction with system variables, and the prompts can include:
- `You are a helpful AI assistant. Today is {local_date}, local time is {local_time}.`
### 2. Global Few-shot Prompting
- **Purpose:** Provides a way to include few-shot examples that will be prepended to *every* conversation. These examples demonstrate to the AI *how* to respond, promoting a desired output style, format, or tone.
- **Description:** "Few-shot prompting is a technique to help the AI agent learn how to respond to users in a specific way by providing demonstrations in the prompt to steer the model toward better performance. The prompts will be automatically inserted at the beginning of every conversation, right after the system instructions (but not included in the system instruction). This is useful when you want the AI to always respond in a very specific format. Your users will not see the prompts you entered here."
- **"+ Add New Prompt" Button:** Clicking this button adds a new few-shot example entry.
- **Few-shot Example Entry:** Each entry consists of two text areas:
- **User Message:** Simulates a user input. This is the "example question."
- **Assistant Response:** Simulates the desired AI response. This is the "example answer."
- **Remove button:** Remove the current few-shot entry.
- Example can be something like:
- **User Message:** "Can you help create a marketing plan for Q4."
- **Assistant Response:**
Here's your plan:
...
- Few-shot examples allow for greater control and predictability in AI behaviors.
### 3. Global Post-Message Reminder
- **Purpose:** Appends a reminder to *every* user message. This reminder is *only* visible to the AI assistant and is intended to influence its behavior without the user explicitly needing to include the reminder in their prompt.
- **Description:** "Append a reminder for the AI assistant on every message. This is useful to prevent the AI from hallucinating or forgetting the context of the conversation. This content will be appended to all of the user's message and only visible to the AI assistant. Your users will not see this. Tip: put your reminder in parentheses with a "Reminder:" label. For example: "(Reminder: always answer in Japanese)". This will help the AI understand that the reminder is not coming from the user and prevent that the reminder doesn't exists when chatting with the users."
- **Input Type:** Text area (multi-line text field).
- **Example Content:** `(Reminder: Always answer in Vietnamese)`
### Applying Changes
- After making changes to any of the system prompt sections, click the "Save" button (typically located at the bottom of the interface) to save the changes and apply them to the chat portal
The Chat Widget feature within TypingMind for Teams allows administrators to embed a customizable chat interface directly into their websites, providing a seamless way for users to interact with the organization's AI capabilities.
### Accessing the Chat Widget Settings
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Integrations" Category:** In the left sidebar, click on the "Integrations" dropdown to expand the category.
3. **Click the "Chat Widget" Link:** Click on the "Chat Widget" link within the "Integrations" category. This will open the Chat Widget configuration interface.
### Chat Widget Interface Overview
The Chat Widget interface is organized to provide a clear overview of widget settings and embedding options. It includes the following key sections:
- **Page Title:** Chat Widget
- **Page Description:** Embed your chat instance to website...
The interface provides:
- **Enable widget embedding:** By default, the widget will be enabled
- **Toggle On/Off:** Allows administrators to enable or disable the chat widget functionality.
- **Enabled State:** The toggle is switched to the right (typically displayed with a blue color). The rest of the settings on this page become relevant and active.
- **Disabled State:** The toggle is switched to the left (typically displayed in gray). The widget will not be available for embedding.
- **Instructions:**
- **To add the widget to your webpages:**
1. Copy the entire contents of the text box below.
2. Paste it after the opening `` tag on the page you want to add this widget.
- **Embed Code:**
- **Purpose:** Provides the JavaScript code snippet that needs to be added to the website's HTML to embed the chat widget.
- **Display:** The code snippet is displayed in a read-only text box.
- **Example Code:** The code typically looks like this (with a placeholder URL):
```html
```
Where `https://www.your-instance-url.typingcloud.com` would be replaced with the actual URL of your TypingMind for Teams instance.
- **"Copy Code" Button:** A button labeled "Copy Code" is located next to the text box. Clicking this button copies the entire code snippet to the clipboard. The active color is blue.
- **Widget Appearance & Settings:** Allows admins to define how the chat widget looks and behaves.
- **Whitelist Domains:**
- **Purpose:** Specifies the domains where the chat widget is allowed to be displayed. This is a security measure to prevent unauthorized use of the widget on other websites.
- **Input Type:** Text field.
- **Instructions:** "Optional, leave blank to allow all domains. Separate multiple URLs with a comma."
- **Example Input:** `https://your-domain.com,
- **Functionality:** If domains are listed, the widget will *only* function on those specific domains. If the field is left blank, the widget can theoretically be embedded on any website (though the API key and user authentication would still be required for it to function).
- **Widget Text:**
- **Purpose:** Sets the text displayed on the chat launcher button (the button users click to open the chat window).
- **Input Type:** Toggle switch and text field
- **Default Value:** "Questions? Chat with our AI!" This default text is shown as a suggestion in light grey.
- **Customization:** The administrator can replace the default text with a custom message, such as "Chat with Support," "Ask a Question," or any other relevant call to action.
- **Widget Width:**
- **Purpose:** Sets the width of the chat widget window.
- **Input Type:** Text field.
- **Instructions:** "Optional, leave blank for automatic settings. Default unit is 'px' but can adjust by appending preferred unit, e.g. 50%."
- **Example Input:** `e.g., 100` (for 100 pixels), `50%` (for 50% of the screen width).
- **Widget Height:**
- **Purpose:** Sets the height of the chat widget window.
- **Input Type:** Text field.
- **Instructions:** "Optional, leave blank for automatic settings. Default unit is 'px' but can adjust by appending preferred unit, e.g. 50%."
- **Example Input:** `e.g., 200` (for 200 pixels), `75%` (for 75% of the screen height).
- **Position:**
- **Purpose:** Determines the position of the chat launcher button on the webpage.
- **Input Type:** Two radio buttons: "Left" and "Right".
- **Options:**
- **Left:** Positions the chat launcher button on the left side of the screen.
- **Right:** Positions the chat launcher button on the right side of the screen.
- **Show chat widget by default:**
- **Purpose:** Controls whether the chat widget is initially open or closed when the page loads.
- **Input Type:** Toggle switch.
- **Enabled State:** The chat widget is automatically open when the page loads.
- **Disabled State:** The chat widget is initially minimized, and the user must click the launcher button to open it.
- **Preview and Save Buttons:**
- **"Preview" Button:** Opens a preview of the chat widget with the current settings. The color of the button is in green.
- **Functionality:** Allows administrators to see how the widget will look and behave on their website before saving the changes.
- **Preview:** Displays the website as example with the chat widget for you to preview.
- **"Save" Button:** Saves the current chat widget settings. The color of the button is in blue.
- **Action:** Applies the changes to the chat widget configuration. A confirmation message ("Saved!") appears briefly at the top of the page.
### Open Chat Widget for AI Agent
**Open Chat Widget** for specific AI Agent can be found at
The "API Integration" section in the Admin Panel (within the "Integrations" category) allows administrators of a TypingMind for Teams instance to generate and manage custom API keys. These keys are specifically for integrating the team's TypingMind instance with *other* internal platforms or systems. This is distinct from the API keys used to connect TypingMind to AI model providers (like OpenAI, Anthropic, etc.).
### Accessing the API Integration Section
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Integrations" Category:** In the left sidebar, click on the "Integrations" dropdown to expand the category.
3. **Click the "API Integration" Link:** Click on the "API Integration" link within the "Integrations" category. This will open the API Integration management interface.
### API Integration Interface Overview
The API Integration interface is focused on managing the API keys used to integrate with your TypingMind instance. It includes the following key elements:
- **Page Title:** "API Integration"
- **Page Description:** "Generate your API Keys to integrate TypingMind with your internal platform."
- **Integration API Keys Section:**
- **Key Display Area:** A text area displaying the currently active API key (if one exists).
- Initially, this area may display a series of asterisks (`**********`) indicating that a key is present but hidden.
- **(test):** A label is present next to the generated API Key representing your API key name.
- **Copy Icon:** An eye icon allows the user to copy the current API Key.
- **Function:** Copies the full API key to the clipboard.
- **Feedback:** A brief visual confirmation (e.g., "Copied!") may be displayed.
- **Show/Hide Icon:** An eye icon allows the user to toggle the visibility of the API key.
- **Show:** Displays the API key in plain text.
- **Hide:** Masks the API key with asterisks.
- **"Revoke" Button:** A red button labeled "Revoke" allows the administrator to invalidate the current API key.
- **Function:** Immediately disables the current API key, preventing any further use. Any systems relying on this key will lose access.
- **Confirmation Prompt:** Clicking "Revoke" displays a confirmation prompt ("Sure?") to prevent accidental revocation. Clicking it again ("Click again to confirm") will perform the revocation.
- The confirmation message is displayed in a red, warning style.
- After confirming, the button is disabled, and the text "Revoked!" is displayed on the screen.
- **Purpose:** Used for security purposes, such as when an API key is compromised or no longer needed.
- **"Generate new API Key" Button:** A prominent button (blue, white text) labeled "Generate new API Key".
- **Function:** Creates a new, unique API key for the TypingMind instance.
- **Workflow:**
1. Clicking the button displays a "Name your API key" dialog.
- This dialog has a single text input field with the placeholder text "Name", and the text `(Optional)` on top.
- Two buttons are available: "Cancel" and "Generate".
- "Cancel" button will dismiss the dialog.
- "Generate" button will save the input name, and generate the API Key.
2. The user (optionally) enters a descriptive name for the key (e.g., "Payment System Integration").
3. Clicking "Generate" creates the new key, which is then displayed in the Key Display Area.
- A green success message "Generated!" is displayed on the top right corner.
- **API Documentation Section:**
- **Title:** "API Documentation"
- **Description:** "View all APIs: [TypingMind API Documentation](https://www.notion.so/TypingMind-Docs-377cf9a0f1b14674a4fb9015a8f5c80a?pvs=21)."
- Provides a link to the comprehensive API documentation. Clicking this link opens the documentation in a new tab.
- **Documentation Content:** The linked documentation (at `api.typingmind.com/docs`) provides detailed information on:
**API Hosts:**
- **For US instances:** `https://api.typingmind.com`
- **For EU instances:** `https://api.eu.typingmind.com`
**How to use the API:**
1. **Generate an API key:** Access the custom instance admin page (go to Integrations > API Integration).
2. **Include the API key:** When making a request, include the API key in the request headers as `X-API-KEY`.
## Users V2
### Get all users in your chat instance
- **Endpoint:** `GET /v2/users`
- **Authorizations:** ApiKeyAuth
- **Query parameters:**
- `email` (string, optional): Email of the user. Example: `email=email%40example.com`. *Note the URL encoding of the @ symbol.*
- **Responses:**
- `200 OK`: Successful response. Returns an array of user objects.
```json
{
"data": [
{ /* User Object 1 */ },
{ /* User Object 2 */ },
...
]
}
```
- `401 Unauthorized`: API Key is missing or invalid.
- `500 Internal Server Error`: An unexpected server error occurred.
### Add a user to your chat instance
- **Endpoint:** `POST /v2/users`
- **Authorizations:** ApiKeyAuth
- **Request Body Schema:** `application/json` (required)
- `email` (string, required): The email address of the user.
- `tags` (array of strings, optional): apply tags for the users.
- `groups` (array of strings, optional): An array of group IDs to which the user should be added.
- **Responses:**
- `200 OK`: User added successfully.
```json
{}
```
- `401 Unauthorized`: API Key is missing or invalid.
- `500 Internal Server Error`: An unexpected server error occurred.
### Get user information by ID
- **Endpoint:** `GET /v2/users/{id}`
- **Authorizations:** ApiKeyAuth
- **Path Parameters:**
- `id` (integer, required): The ID of the user. Example: `123456`
- **Responses:**
- `200 OK`: Successful response. Returns a user object.
```
```json
{
"id": 123456,
"email": "email@example.com",
"createdAt": "string",
"groups": [
"group-id-1",
"group-id-2"
]
}
```
```
- `401 Unauthorized`: API Key is missing or invalid.
- `404 User Not Found`: A user with the specified ID does not exist.
- `500 Internal Server Error`: An unexpected server error occurred.
### Remove a user from your chat instance
- **Endpoint:** `DELETE /v2/users/{id}`
- **Authorizations:** ApiKeyAuth
- **Path Parameters:**
- `id` (integer, required): The ID of the user to remove. Example: `123456`
- **Responses:**
- `200 Successful`: User removed successfully.
- `401 Unauthorized`: API Key is missing or invalid.
- `404 User Not Found`: A user with the specified ID does not exist.
- `500 Internal Server Error`: An unexpected server error occurred.
### Update a user
- **Endpoint:** `PATCH /v2/users/{id}`
- **Authorizations:** ApiKeyAuth
- **Path Parameters:**
- `id` (integer, required): The ID of the user. Example: `123456`
- **Request Body Schema:** `application/json` (required)
- One of `object`, `object`, `object`
- `groups` (Array of strings): Groups of users
- **Responses:**
- `200 Successful`: User updated successfully.
```
```json
{
"id": 123456,
"email": "email@example.com",
"createdAt": "string",
"groups": [
"group-id-1",
"group-id-2"
]
}
```
```
- `401 Unauthorized`: API Key is missing or invalid.
- `404 User Not Found`: A user with the specified ID does not exist.
- `500 Internal Server Error`: An unexpected server error occurred.
## Groups
### Get all groups in your chat instance
- **Endpoint:** `GET /v2/groups`
- **Authorizations:** ApiKeyAuth
- **Responses:**
- `200 OK`: Successful response. Returns an array of group objects.
```json
{
"data": [
{
"id": "group-id-1",
"title": "Marketing Department"
},
{
"id": "group-id-2",
"title": "Sales Department"
}
]
}
```
- `401 Unauthorized`: API Key is missing or invalid.
- `500 Internal Server Error`: An unexpected server error occurred.
### Add a new group to your chat instance
- **Endpoint:** `POST /v2/groups`
- **Authorizations:** ApiKeyAuth
- **Request Body Schema:** `application/json` (required)
- `title` (string, required): The title of the group.
- `roles` (array of strings, optional): An array of role IDs to assign to the group.
- **Responses:**
- `200 OK`: Group added successfully.
```json
{
"id": "group-id-1",
"title": "Marketing Department",
"roles": [
"role-id-1",
"role-id-2"
]
}
```
- `401 Unauthorized`: API Key is missing or invalid.
- `500 Internal Server Error`: An unexpected server error occurred.
### Get group information by ID
- **Endpoint:** `GET /v2/groups/{id}`
- **Authorizations:** ApiKeyAuth
- **Path Parameters:**
- `id` (string, required): The ID of the group. Example: `group-id`
- **Responses:**
- `200 Successful`: Successful response. Returns a group object.
```json
{
"id": "group-id-1",
"title": "Marketing Department",
"roles": [
"role-id-1",
"role-id-2"
]
}
```
- `401 Unauthorized`: API Key is missing or invalid.
- `404 User Not Found`: A group with the specified ID does not exist.
- `500 Internal Server Error`: An unexpected server error occurred.
### Update a group
- **Endpoint:** `PATCH /v2/groups/{id}`
- **Authorizations:** ApiKeyAuth
- **Path Parameters:**
- `id` (string, required): The ID of the group. Example: `group-id`
- **Request Body Schema:** `application/json` (required)
- One of `object`, `object`, `object`
- `title` (string, required): The title of the group.
- **Responses:**
- `200 Successful`: Successful response. Returns a group object.
```json
{
"id": "group-id-1",
"title": "Marketing Department",
"roles": [
"role-id-1",
"role-id-2"
]
}
```
- `401 Unauthorized`: API Key is missing or invalid.
- `404 User Not Found`: A group with the specified ID does not exist.
- `500 Internal Server Error`: An unexpected server error occurred.
## Roles
### Get all roles in your chat instance
- **Endpoint:** `GET /v2/roles`
- **Authorizations:** ApiKeyAuth
- **Responses:**
- `200 OK`: Successful response. Returns an array of role objects.
```
```json
{
"data": [
{
"id": "role-id-1",
"title": "Content Manager"
},
{
"id": "role-id-2",
"title": "Editor"
}
]
}
```
```
- `401 Unauthorized`: API Key is missing or invalid.
- `500 Internal Server Error`: An unexpected server error occurred.
## Characters (AI Agents)
*(Note: "Characters" in this context likely refers to AI Agents within TypingMind)*
### Get all AI characters in your chat instance
- **Endpoint:** `GET /v1/ai-characters`
- **Authorizations:** ApiKeyAuth
- **Responses:**
- `200 OK`: Successful response. Returns an array of AI character objects.
```
```json
{
"data": [
{ /* AI Character Object 1 */ },
{ /* AI Character Object 2 */ },
...
]
}
```
```
- `401 Unauthorized`: API Key is missing or invalid.
- `500 Internal Server Error`: An unexpected server error occurred.
## Chat
### Create a model response for the given chat conversation
- **Endpoint:** `POST /v1/chat/completions`
- **Authorizations:** ApiKeyAuth
- **Request Body Schema:** `application/json` (required)
- Find more information about the request body here:
- [OpenAI API Reference](https://platform.openai.com/docs/api-reference/chat)
- [Anthropic API Reference](https://docs.anthropic.com/claude/reference/messages_post)
- [Google Gemini API Reference](https://ai.google.dev/api/rest/v1beta/models/generateContent)
- For additional configuration options, refer to the properties below:
- activatedCharacterID: AI character for this completion
- **Responses:**
- `200 OK`: Successful response. Returns a chat completion object.
- `401 Unauthorized`: API Key is missing or invalid.
- `500 Internal Server Error`: An unexpected server error occurred.
## Chatlogs
### Get chat logs in your chat instance
- **Endpoint:** `GET /v1/chatlogs`
- **Authorizations:** ApiKeyAuth
- **Query Parameters:**
- `startUnixTime` (number, optional): Unix time of the start time. Example: `startUnixTime=1640995200`
- `endUnixTime` (number, optional): Unix time of the end time. Example: `endUnixTime=1640995200`
- `userID` (number, optional): Filter by user ID. Example: `userID=123456`
- `limit` (number, optional): Limit the number of results. Example: `limit=10`
- `offset` (number, optional): Offset the results. Example: `offset=0`
- **Responses:**
- `200 OK`: Successful response. Returns an array of chat log objects.
```json
{
"data": [
{ /* Chat Log Object 1 */ },
{ /* Chat Log Object 2 */ },
...
]
}
```
- `401 Unauthorized`: API Key is missing or invalid.
- `500 Internal Server Error`: An unexpected server error occurred.
The "User Management" section within the TypingMind for Teams Admin Panel provides administrators with comprehensive tools for managing invited users, roles, and permissions of each user. within their custom AI chat portal. It focuses on controlling *who* can access the system and *what* they can do within it.
### Accessing User Management
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "User Management" Category:** In the left sidebar, click on the "User Management" dropdown to expand the category.
3. **Click the "Users" Link:** Click on the "Users" link within the "User Management" category. This will open the primary user list and management interface.
### User List Interface Overview
The main "Users" interface displays a list of all users associated with the team chat portal. It includes the following elements:
- **Page Title:** "Users" (clearly indicates the page's function)
- **Page Description:** "List of users who can use your chat instance" (explains the purpose of the user list)
- **Current Users Indicator:** Displays the current number of users and the total available seats.
- Format: "Current users: \[Current Number] / \[Total Seats]. You have \[Remaining Seats] seats remaining." (e.g., "Current users: 2/5. You have 3 seats remaining.")
- Provides a clear overview of user capacity.
- **Action Buttons:**
- **"+ Invite Users" Button (Green):** Initiates the process of adding new users to the chat portal. Clicking this button opens the "Invite Users" dialog.
- **"Buy More Seats" Button (Blue):** Allows administrators to purchase additional user seats for their subscription. Clicking this button opens the "Buy More Seats" dialog.
- **"More Options" Button (Three Vertical Dots):** Located in the upper right corner, the button provides further user management functions, including:
- **"Import Members":** Clicking this option opens the "Import Members" dialog, allowing admins to import a list of users from a CSV file.
- **"Transfer Ownership":** Allows the current owner to transfer ownership of the chat instance to another admin user. Clicking this option opens the "Transfer Ownership" dialog.
- **User List Table:** Displays a table of users with the following columns:
- **User:**
- Displays the user's name (if available).
- Displays the user's email address below their name.
- Displays the invitation status to the right of the email (if applicable). The invitation status, such as `invited`, `sso`, `oauth` is in a gray label.
- Displays the user groups to which the user belongs.
- Groups are displayed as colored labels.
- If a user belongs to more than three groups, a "+\[Number]" label indicates the number of additional groups. (e.g., "+3")
- Displays the user's assigned admin roles (e.g., "Admin," "Owner").
- Admin roles are displayed as colored labels (e.g., green for "Admin," light green for "Owner").
- If a user has no assigned admin roles, this column may be blank or display a placeholder.
- **Actions (Three Vertical Dots):** A "More Options" button at the right end of each user row provides additional actions:
- **Suspend:** Temporarily suspends the user's access to the chat portal. Clicking this option displays a confirmation prompt.
- **Remove:** Permanently removes the user from the chat portal and deletes their data. Clicking this option displays a confirmation prompt ("Are you sure you want to remove the member with External ID \[user ID]? ALL OF THEIR DATA WILL BE LOST! This action is not undoable.").
- Clicking on a user's name or email address navigates to the individual user's details page, where admins can manage their settings
### Inviting New Users
1. **Click the "+ Invite Users" Button:** This opens the "Invite Users" dialog.
2. **"Invite Users" Dialog:**
- **Title:** "Invite Users"
- **Description:** "Enter your team members' email addresses here. One email per line."
- **Input Field:** A multi-line text area where administrators can enter the email addresses of the users they want to invite.
- Each email address should be on a separate line.
- Example input is provided:
```
john@example.com
alice@yourdomain.com
...
```
- Input validation: if invalid emails are entered, a message below input area shows: `Some emails in the list are invalid`.
- **"Notify users via email" Checkbox:**
- **Function:** Controls whether invited users receive an email notification about the invitation.
- **Default State:** Unchecked.
- **Checked State:** Users will receive an email invitation.
- **Unchecked State:** Users will be added to the system, but will not receive an email notification. They will need to be informed of their access through other means.
- **Action Buttons:**
- **"Add Users" Button (Blue):** Adds the entered users to the chat portal.
- **"Cancel" Button:** Closes the dialog without adding any users.
Note: To update the email address of an invited user, you will need to remove the current user email and re-invite them using the new email address. Please remind users to export their data as a backup before removal, and then re-import the data into the new account once it's set up.
### Buying More Seats
1. **Click the "Buy More Seats" Button:** This opens the "Buy More Seats" dialog.
2. **"Buy More Seats" Dialog:**
- **Title:** "Buy More Seats"
- **"Extra seats to add" Field:** A numeric input field allows administrators to specify the number of additional seats they want to purchase.
- Up and down arrows allow for incrementing/decrementing the value.
- **"Cost" Information:** Displays the cost per additional seat (e.g., "$8/seat/month").
- **"Summary" Section:** Provides a summary of the purchase:
- **Extra seats:** The number of seats being added.
- **Total seats:** The resulting total number of seats after the purchase.
- **Total cost:** The total monthly cost for the updated subscription.
- **Action Buttons:**
- **"Checkout" Button (Blue):** Proceeds to the payment process for purchasing the additional seats. This will redirect to Stripe checkout page.
- **"Cancel" Button:** Closes the dialog without purchasing any seats.
### Importing Members
1. **Click the "More Options" Button (Three Vertical Dots):** Located in the upper right corner.
2. **Select "Import Members":** This opens the "Import Members" dialog.
3. **"Import Members" Dialog:**
- **Title:** "Import Members"
- **"Select CSV" Button (Blue):** Opens a file selection dialog, allowing administrators to choose a CSV file containing user data.
- **"Download sample file" Link:** Provides a link to download a sample CSV file, demonstrating the required format for importing users.
- **"Cancel" Button:** Closes the dialog without importing any users.
- **CSV File Format:** The required CSV format for import is as follows, this can be known by downloading the sample file.
- The headers: `email`, `first_name`, `last_name`, `roles`, `groups`
- The data can be filled accordingly.
### Transferring Ownership
1. **Click the "More Options" Button (Three Vertical Dots):** Located in the upper right corner.
2. **Select "Transfer Ownership":** This opens the "Transfer Ownership" dialog.
3. **"Transfer Ownership" Dialog:**
- **Title:** "Transfer Ownership"
- **Description:** "Select the admin you want to transfer ownership:".
- **"Select a new owner" Dropdown:** A dropdown menu lists all current admin users who are eligible to become the new owner.
- **Action Buttons:**
- **"Transfer" Button (Blue):** Transfers ownership to the selected admin user.
- **"Cancel" Button:** Closes the dialog without transferring ownership.
- **Important Note:** The new owner *must* be an existing admin user.
### Managing Individual User Accounts
Clicking on a user's name or email address in the user list opens the individual user's details page. This page allows administrators to:
- **Page Title:** "Users / \[User Email]"
- **User Information:**
- **First Name (Required):** A text input field for the user's first name.
- **Last Name (Required):** A text input field for the user's last name.
- **About Me:** A multi-line text area for the user's profile information (e.g., "Your department, bio, etc.").
- **Groups:**
- **Purpose:** Assigns the user to one or more user groups.
- **Input Type:** A dropdown menu displaying a list of available user groups.
- Multiple groups can be selected.
- Selected groups are displayed as tags below the dropdown.
- You should refer to to get the information about Role and Permission
- **User-specific Roles:**
- **Purpose:** Assigns specific admin roles directly to the user, in addition to any roles inherited through group membership.
- **Input Type:** A dropdown menu displaying a list of available admin roles.
- Multiple roles can be selected.
- You should refer to section to get the information about Role and Permission
- **"Save" Button (Blue):** Saves any changes made to the user's details.
## User Groups Management (Admin Panel)
User Groups in TypingMind for Teams provide a way to organize users within a workspace, enabling administrators to:
- **Manage User Access:** Control access to specific resources (AI agents, prompts, models, etc.).
- **Assign Usage Limits:** Set different usage limits for each group.
- **Grant Admin Panel Access:** Allow access to the admin panel with specific roles, granting granular control over administrative functions.
- **Group Membership:** Users can be members of multiple groups, inheriting permissions and settings from each group.
### Accessing User Groups
1. **Navigate to the Admin Dashboard:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "User Management" Category:** In the left sidebar, click on the "User Management" dropdown to expand the category.
3. **Click the "Groups" Link:** Click on the "Groups" link within the "User Management" category. This will open the primary user group list and management interface.
### User Groups Interface Overview
The main "Groups" interface displays a list of all user groups within the team chat portal. It includes the following elements:
- **Page Title:** "Groups" (clearly indicates the page's function).
- **Page Description:** "Create groups of users, assign roles,... "
- **Instructions:** Below the description, there is an introduction of user group, including:
- Groups are a way to organize users in your workspace. You can use groups to:
- Manage user access to workspace resources like AI agents, prompts, models, etc.
- Assign different usage limits to each group.
- Allow access to the admin panel with specific roles in your workspace.
- Users can be members of multiple groups.
- **Group List Table:** Displays a table of existing user groups, with the following information for each group:
- **Group Name:** The name of the user group (e.g., "advanced", "content," "dev").
- **Member Count:** The number of users belonging to the group, displayed in parentheses next to the group name (e.g., "(2)").
- **"Manage" Button:** A blue button labeled "Manage" is located to the right of each group entry.
- **Function:** Clicking this button navigates to the individual group's management page, where administrators can add/remove members, modify settings, and perform other group-related actions.
- **"+ Add New Group" Button:** A blue button labeled "+ Add New Group" is located at the bottom of the interface.
- **Function:** Initiates the process of creating a new user group. Clicking this button opens the "Create New User Group" dialog.
### Creating a New User Group
1. **Click the "+ Add New Group" Button:** This opens the "Create New User Group" dialog.
2. **"Create New User Group" Dialog:**
- **Title:** "Create New User Group" (clearly indicates the dialog's purpose).
- **"Title" Input Field (Required):**
- **Purpose:** Assigns a name to the new user group.
- **Input Type:** Single-line text field.
- **Placeholder Text:** "E.g., Marketing Department" (provides an example of a group name).
- **Requirement:** This field is mandatory; a group cannot be created without a title. A red asterisk (*) next to "Title" visually indicates the requirement.
- **Validation:** The input field likely has validation to ensure a name is entered before the "Save" button is enabled.
- **"Enable Admin Panel Access" Checkbox:**
- **Purpose:** Determines whether users in this group will have access to the Admin Panel.
- **Default State:** Unchecked (no admin access).
- **Checked State:** When checked, the "Admin Roles" dropdown menu appears below, allowing the administrator to assign specific admin roles to the group. Admin roles can be set at
- **Description:** "users in this group will have access to the admin panel" with specific roles that you assigned to them.
- **"Admin Roles" Dropdown Menu (Conditional):**
- **Visibility:** Only appears when the "Enable Admin Panel Access" checkbox is checked.
- **Purpose:** Allows the administrator to select which admin roles will be assigned to users in this group.
- **Input Type:** Dropdown menu.
- **Placeholder Text:** "(Not Set)" (indicates no roles are selected by default).
- **Options:** Displays a list of available admin roles (e.g., "Admin," "Customer support," "Content curator," "Team lead"). These roles define the level of access and permissions within the Admin Panel.
- **Multiple Selection:** The dropdown likely allows for multiple roles to be selected. When a role is chosen, it gets a check mark.
- **Visual Indicator:** Selected roles may be highlighted or displayed with a checkmark.
- **Action Buttons:**
- **"Save" Button (Blue):** Creates the new user group with the specified settings. The button is likely disabled until a group title is entered.
- **"Cancel" Button:** Closes the dialog without creating a new group.
### Managing an Existing User Group
Clicking the "Manage" button next to a group in the list navigates to the individual group's management page. This page allows administrators to:
- **Page Title:** "Groups / \[Group Name]" (e.g., "Groups / Support Team"). Clearly indicates which group is being managed.
- **Edit and Delete Buttons** In the top corner of the page.
- **Edit**:
- **Function:** The settings will be the same as Create a New User group, with options to configure `Title`, `Enable Admin Panel Access` and `Admin Roles`.
- **"Update" Button (Blue):** Updates the user group with the specified settings.
- **"Cancel" Button:** Closes the dialog without saving any changes.
- **Delete**
- **Function:** Deletes the current group, with the double confirm message such as `Sure?`, `Click again to confirm`.
- **Admin Panel Access Section (Conditional):**
- **Visibility:** This section may only be visible if the group has been granted Admin Panel access.
- **Heading:** "Admin Panel Access"
- **Assigned Role(s):** Displays the admin role(s) assigned to this group (e.g., "Customer support"). The roles are likely displayed as colored labels.
- **Members Section:**
- **Heading:** "Members"
- **"Add Members" Button (Blue):** Allows administrators to add existing users to the group. Clicking this button opens the "Add members to group" interface.
- **Member List:** Displays a list of users currently belonging to the group.
- **User Name and Email:** Each user entry displays the user's name (if available) and email address.
- **"Remove" Link:** A red "Remove" link is displayed next to each user entry. Clicking this link removes the user from the group (with confirmation).
- **"Remove Selected" Button:** Removes selected members.
### Adding Members to a Group
1. **Click the "+ Add Members" Button:** This opens the "Add members to group" interface, which is a dedicated area for adding users.
2. **"Add members to group" Interface:**
- **Heading:** "Add members to group"
- **User List:** Displays a table of all available users *not* already in the group.
- **Checkbox:** Each user entry has a checkbox for selection.
- **User Information:** Displays user information, potentially including name, email, and any existing group memberships or roles.
- **"Add" button:** The add button on the left side of each user, to add the user to the group.
- **Search Bar:** A "Search users..." input field at the top of the list allows administrators to filter the user list by name or email.
- **"Add Selected ([Number])" Button (Blue):** Adds the selected users to the group. The number in parentheses indicates the number of users currently selected.
- **"Done" Button:** Close the action.
### Removing Members from a Group
There are two primary ways to remove members:
1. **Individual Removal (From the Group Management Page):**
- Locate the user in the "Members" list.
- Click the red "Remove" link next to the user's entry.
- A confirmation prompt may appear to prevent accidental removal.
2. **Bulk Removal (From the Group Management Page):**
- Select the checkboxes next to the users you want to remove.
- Click the "Remove Selected" button.
- A confirmation prompt may appear.
### Assigning Users to Groups (Alternative Method)
Users can also be added to groups from the individual User page (accessible by clicking on a user's name in the main user list).
1. **Navigate to the User's Details Page:** Click on the user's name in the main user list.
2. **Locate the "Groups" Section:**
3. **Use the Dropdown Menu:** Select the desired group(s) from the dropdown menu.
4. **Click "Save":** Save the changes to update the user's group memberships.
The "Roles & Permissions" section within the TypingMind for Teams Admin Panel allows administrators to define and manage user roles, controlling access to specific features and functionalities within the admin panel. This granular control ensures that users only have the permissions necessary for their responsibilities.
### Accessing Roles & Permissions
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "User Management" Category:** In the left sidebar, click on the "User Management" dropdown to expand the category.
3. **Click the "Roles & Permissions" Link:** Click on the "Roles & Permissions" link within the "User Management" category. This will open the Roles & Permissions management interface.
### Roles & Permissions Interface Overview
The Roles & Permissions interface displays a list of existing roles and provides tools for creating and managing them. The interface generally consists of the following elements:
- **Page Title:** "Roles & Permissions" (clearly indicates the page's purpose)
- **Page Description:** "Manage user roles and permissions" (explains the functionality of the section)
- **Role List:** A list of pre-defined and custom roles. Each role entry displays:
- **Role Name:** The name of the role (e.g., "Admin," "Customer support," "Content curator," "Team lead").
- **Role Description:** A brief description of the role's purpose or responsibilities.
- **Number of Permissions:** Indicates the number of permissions associated with the role.
- **Action Buttons:**
- **"Edit" Button (Blue):** Opens the role's configuration settings for modification.
- **"Delete" Button (Red Trash Can):** Deletes the role (with confirmation). Note: The default "Admin" role cannot be deleted.
- **"+ Add New Role" Button (Blue):** Located at the bottom of the role list, this button initiates the process of creating a new custom role.
### Pre-defined Roles
TypingMind for Teams comes with pre-defined roles:
- **Admin:** Full access to everything in the admin panel.
### Creating a New Custom Role
1. **Click the "+ Add New Role" Button:** This opens the "Add new role" interface.
2. **Enter Role Title:** In the "Role Title" text field, enter a descriptive name for the new role (e.g., "Support Team").
3. **Select Permissions:**
- The interface displays a list of available permissions, grouped by category (e.g., "Models," "Plugins," "AI Agents," "Reporting," "Billing," "Users Management," "API Keys," "Knowledge Base," "Portal Settings," "Prompt Library," "System Prompts," "Integrations").
- Each permission has a checkbox.
- Click the checkbox next to a permission to grant it to the new role.
- Permissions are granular, allowing for precise control over user access. For example:
- **Models:** Full access to manage LLM models (OpenAI, Anthropic, Gemini, custom models).
- **Plugins:** Full access to manage Plugins.
- **AI Agents:** Full access to manage AI agents and related agents settings: plugins, models, usage limits, and knowledge base.
- **Reporting:**
- View analytics.
- Full access to manage chat logs.
- Full access to manage email reports.
- **Billing:**
- View billing details.
- Full access to manage billing.
- **Users Management:**
- View users.
- Full access to manage users (invite, remove, update profile, etc.).
- Full access to manage user authentication settings (SSO, SAML, OAuth, etc.).
- Full access to manage instance access control (public/authorized/private mode).
- Full access to manage usage limits.
- Full access to manage user groups.
- Full access to manage roles & permissions.
- **API Keys:**
- View the API keys page.
- Full access to manage API keys.
- **Knowledge Base:**
- View data from the Knowledge Base
- Full access to manage data from the knowledge base
- **Portal Settings:** Full access to manage Portal Settings (branding, domain, chat features, etc.).
- **Prompt Library:** Full access to manage Prompt Library.
- **System Prompts:** Full access to manage Global System Instruction, Global Few-shot Prompting, etc.
- **Integrations**: Full access to manage integrations (Chat Widget, API integration)
4. **Click "Save"**: The selected role will be created.
### Editing an Existing Role
1. **Locate the Role:** In the Roles & Permissions list, find the role you want to edit.
2. **Click the "Edit" Button (Blue):** Clicking this button opens the role's configuration settings.
3. **Modify Permissions:** Add or remove permissions as needed by checking or unchecking the corresponding checkboxes.
4. **Click the "Save" Button:** Click the blue "Save" button to save the changes to the role.
### Deleting a Role
1. **Locate the Role:** In the Roles & Permissions list, find the role you want to delete.
2. **Click the "Delete" Button (Red Trash Can):** Clicking this button displays a confirmation prompt.
3. **Confirm Deletion:** Confirm the deletion to permanently remove the role.
### Assigning Roles
Roles can be assigned to users in two ways:
1. **Via User Groups:**
- Create user groups (as described in the User Group section).
- Assign admin roles to groups.
- Add users to groups; they automatically inherit the group's roles.
2. **Directly to Users:**
- Navigate to the individual user's details page (as described in the User Management section).
- Assign roles directly to the user under "User-specific Roles." These roles are *in addition* to any roles inherited from groups.
**Example (Creating a "Support Team" Role)**
1. Click "+ Add New Role".
2. Enter "Support Team" as the Role Title.
3. Grant the following permissions:
- AI Agents (Full access)
- Reporting (Full access to manage chat logs)
- Users Management (View users)
- User need to view the list of the users, but not manage it.
- Knowledge Base (Full access to manage data from the knowledge base)
4. Don't enable other settings
5. Click "Save".
Now, any user assigned to the "Support Team" role (either directly or through a group) will have the specified permissions.
The "Authentication" section in the TypingMind for Teams Admin Panel provides administrators with options to configure how users log in to the custom AI chat portal. It supports various authentication methods, including email login, Single Sign-On (SSO), Directory Sync, OAuth 2.0, JWT Authentication, and Basic Authentication.
### Accessing Authentication Settings
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "User Management" Category:** In the left sidebar, click on the "User Management" dropdown to expand the category.
3. **Click the "Authentication" Link:** Click on the "Authentication" link within the "User Management" category. This will open the Authentication settings interface.
### Authentication Settings Interface Overview
The Authentication interface is organized to provide a clear overview of available authentication methods and their configuration options.
- **Page Title:** "Authentication" (clearly indicates the page's purpose).
- **Page Description:** "Setup Single Sign-On (SSO) and other authentication methods" (explains the functionality of the section).
- **Authentication Method Sections:** The interface is divided into sections for each authentication method:
- Login with email
- Single Sign-On (SSO)
- Directory Sync (SCIM v2)
- OAuth 2.0 (OIDC)
- JWT Authentication
- Basic Authentication
### 1. Login with Email
- **Purpose:** Enables users to log in using their email addresses.
- **Default State:** Enabled by default.
- **Control:** A toggle switch labeled "Enable Login with Email."
- **Enabled State:** The toggle is switched to the right (typically blue). Users can log in with their email addresses.
- **Disabled State:** The toggle is switched to the left (typically gray). Email login is disabled. Users must use alternative authentication methods.
- **Description:** "Allow your users to use their emails to log in. It is enabled by default."
### 2. Single Sign-On (SSO)
- **Purpose:** Allows users to log in using their existing organizational accounts (e.g., Okta, Azure AD, Google Workspace).
- **Control:** A toggle switch labeled "Enable Single Sign-On (SSO)."
- **Enabled State:** The toggle is switched to the right (typically blue). SSO is enabled.
- **Disabled State:** The toggle is switched to the left (typically gray). SSO is disabled.
- **Description:** "Allow your users to sign in using their existing organization account."
- **"+ Add New SSO Connection" Button (Blue):** Initiates the process of configuring a new SSO connection.
- Clicking this button opens the "Add New Connection (SAML)" dialog.
- **"You have no SSO connections yet." Message:** Displayed when no SSO connections have been configured.
### Adding a New SSO Connection (SAML)
Clicking the "+ Add New SSO Connection" button opens a dialog with the following fields and instructions for setting up a SAML-based SSO connection:
- **Dialog Title:** "Add New Connection (SAML)"
- **Instructions:** "Your Identity Provider (IdP) will ask for the following information while configuring the SAML application. Share this information with your IT administrator."
- **Configuration Fields (Read-Only):** These fields provide the information needed by the Identity Provider (IdP).
- **SP Entity ID / Identifier / Audience URI / Audience Restriction:**
- A pre-filled, read-only text field displaying the Service Provider (SP) Entity ID.
- Example: `https://yourbrandname.typingcloud.com`
- **Reply URL / ACS (Assertion Consumer Service) URL / Single Sign-On URL / Destination URL:**
- A pre-filled, read-only text field displaying the Assertion Consumer Service (ACS) URL.
- Example: `https://yourbrandname.typingcloud.com/api/oauth/saml`
- **Response:** `Signed`
- **Assertion Signature:** `Signed`
- **Signature Algorithm:** `RSA-SHA256`
- **Identity Provider Metadata XML Input:**
- **Label:** "Please paste your **Identity Provider (IdP) Metadata XML** here:"
- **Input Type:** A large, multi-line text area.
- **Purpose:** The administrator pastes the XML metadata provided by their Identity Provider (IdP) into this field. This metadata contains the necessary information for TypingMind (the Service Provider) to communicate securely with the IdP.
- **Supported Providers:**
- A note below the XML input area: "We support Generic SAML 2.0 Provider, Microsoft Entra ID (formerly Azure AD), Microsoft AD FS, Okta, Auth0, Google, OneLogin, PingOne, JumpCloud, Rippling, OpenID Connect Provider."
- **"Read our guides here." Link:** A hyperlink to documentation providing further guidance on configuring SSO - [https://docs.typingmind.com/typingmind-custom/user-management/setup-single-sign-on-(sso)](https://docs.typingmind.com/typingmind-custom/user-management/setup-single-sign-on-(sso))
- **Action Buttons:**
- **"+ Add Connection" Button (Green):** Saves the SSO configuration.
- **"Cancel" Button (Red):** Closes the dialog without saving.
**Example: Setting up Okta via SSO (Detailed Steps):**
TypingMind provides documentation and a video walkthrough for setting up Okta SSO. Here are the steps, incorporating information from both:
1. **Access Okta:**
- Go to `okta.com` and sign up for a free trial if you don't already have an account. Or, directly access your Okta dashboard if you have it already.
- Example URL: `https://trial-{{id}}-admin.okta.com/admin/apps/active` (This is a sample Okta trial URL).
2. **Navigate to Applications:**
- In the Okta Admin Dashboard, find the "Applications" section in the left sidebar.
- Click on "Applications" to expand the menu, then click on "Applications" again.
3. **Create App Integration:**
- Click the "Create App Integration" button (typically a blue button).
4. **Select Sign-in Method:**
- In the "Create a new app integration" dialog, choose "SAML 2.0."
- Click "Next."
5. **General Settings:**
- **App name:** Enter a descriptive name for the application (e.g., "TypingMind").
- **App logo (optional):** Upload a logo for the TypingMind application. This will be displayed in the Okta interface. You can upload by click on the upload button.
- Click "Next."
6. **Configure SAML:**
- **Single sign on URL:**
- Copy the "Reply URL / ACS (Assertion Consumer Service) URL / Single Sign-On URL / Destination URL" from the TypingMind "Add New Connection (SAML)" dialog. For example: `https://yourbrandname.typingcloud.com/api/oauth/saml`
- Paste this URL into the "Single sign on URL" field in Okta.
- Check the box labeled "Use this for Recipient URL and Destination URL."
- **Audience URI (SP Entity ID):**
- Copy the "SP Entity ID / Identifier / Audience URI / Audience Restriction" from the TypingMind "Add New Connection (SAML)" dialog - in this case your instance URL: `https://yourbrandname.typingcloud.com`
- Paste this URL into the "Audience URI (SP Entity ID)" field in Okta.
- **Default RelayState:** Leave this field blank unless you have a specific value provided by your TypingMind setup.
- **Name ID format:** Select "EmailAddress" from the dropdown menu.
- **Application username:** Select "Email" from the dropdown menu.
- **Update application username on:** Leave the default as "Create and update."
- **Attribute Statements (optional):** This section is optional and can typically be left blank for a basic TypingMind integration.
- Click "Next".
7. **Feedback:**
- Select the application type as "This is an internal app that we have created"
- Click "Finish".
8. **Get Metadata from Okta:**
- After creating the application, you'll be taken to the application's settings page in Okta.
- Go to the "Sign On" tab.
- **Locate Metadata URL:** Find the section labeled "Metadata details". There should be a "Metadata URL" displayed.
- **Copy Metadata URL:** Click the copy icon to copy the URL.
- **Open in a New Tab:** Paste the copied Metadata URL into a *new* browser tab and open it. This will display the XML metadata file.
- **Copy Metadata XML:** Select all the content of the XML file and copy it.
9. **Paste Metadata into TypingMind:**
- Return to the "Add New Connection (SAML)" dialog in the TypingMind Admin Panel.
- Paste the copied XML metadata into the large text area labeled "Please paste your **Identity Provider (IdP) Metadata XML** here:".
10. **Add Connection:** Click the green "+ Add Connection" button to save the configuration.
11. **Verification:** You should see "SSO connection added successfully" in the TypingMind Admin Panel. You may also see "Okta" listed as a connection.
12. **Testing SSO Login:**
- Go to your TypingMind for Teams login page.
- Click the "Use Single Sign-On (SSO)" option.
- Select "Okta".
- You should be redirected to your Okta login page (if not already logged in). After successful authentication with Okta, you should be redirected back to TypingMind and logged in.
13. **Verify User List:** After successful login using Google, go to "Users" section in the left sidebar, then select "Users". You should see your user account with the "sso" indicator, confirming that it's linked to Okta login.
**Example: Setting up JumpCloud via SSO (Detailed Steps):**
TypingMind provides documentation and a video walkthrough for setting up JumpCloud SSO. Here are the detailed steps:
1. **Access JumpCloud Admin Portal:** Log in to your JumpCloud Admin account.
2. **Navigate to SSO Applications:** In the left-side menu, click on "SSO Applications" (or a similar option related to application management).
3. **Create a Custom SAML App:**
- If you don't have any existing SSO applications, you might see a "Get Started" button. Click it.
- Otherwise, look for a button like "+ Add New Application" or "Create Application."
- Choose the option to create a **Custom SAML App** (this is important; don't select a pre-built TypingMind integration if one exists, as it might be outdated).
4. **General Info:**
- **Display Label:** Enter a name for the application (e.g., "TypingMind Custom"). This is how it will appear in JumpCloud.
- Click **Configure SSO with SAML**
5. **Configure SSO (SAML Settings):**
- **IdP Entity ID:** Enter `JumpCloud`.
- **SP Entity ID:** Copy the "SP Entity ID / Identifier / Audience URI / Audience Restriction" from the TypingMind "Add New Connection (SAML)" dialog and paste it here.
- **ACS URL:** Copy the "Reply URL / ACS (Assertion Consumer Service) URL / Single Sign-On URL / Destination URL" from the TypingMind "Add New Connection (SAML)" dialog and paste it here.
- **Declare Redirect Endpoint:** *Check this box*.
6. **User Attributes:** *This is very important for user information to be passed correctly.*
- Scroll down to the "Attributes" section.
- Add the following attributes *exactly* as shown:
- **Service Provider Attribute Name:** `email` **IdP Attribute Name:** `email`
- **Service Provider Attribute Name:** `firstName` **IdP Attribute Name:** `firstname`
- **Service Provider Attribute Name:** `lastName` **IdP Attribute Name:** `lastname`
7. **User Groups (Important):**
- Go to the "User Groups" tab within the JumpCloud application configuration.
- Select the user group(s) that should have access to TypingMind via SSO. This controls *who* can log in using this connection.
8. **Export Metadata:**
- Still within the JumpCloud application settings, find a button or link labeled something like "Export Metadata" or "Download Metadata."
- Click this to download an XML file containing the JumpCloud IdP metadata.
9. **Import Metadata into TypingMind:**
- Return to the TypingMind Admin Panel, and go to User Management > Authentication > Single Sign On (SSO), and click "Add new SSO Connection."
- In the "Add New Connection (SAML)" dialog, paste the *contents* of the downloaded XML file into the large text area labeled "Please paste your Identity Provider (IdP) Metadata XML here:".
10. **Add Connection:** Click the green "+ Add Connection" button to save the configuration in TypingMind.
11. **Test the Connection:** Go to your TypingMind for Teams login page. You should now see a "Use Single Sign-On (SSO)" button. Clicking it, and then selecting the appropriate option (it will probably be listed with the name you gave the application in JumpCloud), should redirect you to JumpCloud for login. After successful authentication, you should be logged in to TypingMind.
### 3. Directory Sync (SCIM v2)
- **Purpose:** Enables automatic synchronization of user accounts and group information from a directory service (e.g., Okta, Azure AD) to TypingMind.
- **Control:** A toggle switch labeled "Enable Directory Sync (SCIM v2)."
- **Enabled State:** The toggle is switched to the right (typically blue). Directory Sync is enabled.
- **Disabled State:** The toggle is switched to the left (typically gray). Directory Sync is disabled.
- **Description:** "Enable SCIM v2 to sync users from your directory service."
**Setting up Directory Sync with Okta (Example):**
1. **Enable Directory Sync in TypingMind:** In the TypingMind Admin Panel, go to User Management > Authentication > Directory Sync (SCIM v2). Enable the toggle.
2. **Add New Directory Connection:**
- Click the "+ Add New Directory Connection" button
- In the popup, you can add the name of the connection, and select the **Directory Type** (For this example, you can select Okta.)
- Click "Add connection".
3. **Get SCIM Base URL and Secret:**
- After creating the connection, click "View Details."
- You'll see a "SCIM Base URL" and a "Secret." *Copy both of these values*. You'll need them in Okta.
4. **Okta Configuration:**
- Go to your Okta Admin Dashboard.
- Navigate to Applications > Applications.
- Search for and select the "SCIM 2.0 Test App (OAuth Bearer Token)" application. *Important:* Use this specific app template; do *not* create a custom SAML application for Directory Sync.
- Go to the "Provisioning" tab.
- Click "Configure API Integration."
5. **Enter SCIM Credentials:**
- **SCIM base URL:** Paste the "SCIM Base URL" you copied from TypingMind.
- **OAuth Bearer Token:** Paste the "Secret" you copied from TypingMind.
- Click "Test API Credentials." You should get a success message.
- Click "Save."
6. **Enable Provisioning Features:**
- After saving, you'll be taken to a settings page.
- Under "Provisioning to App," click "Edit".
- Enable the following:
- **Create Users**
- **Update User Attributes**
- **Deactivate Users**
- Click "Save."
7. **Assign Users/Groups (Okta):**
- Go to the "Assignments" tab within the Okta application.
- Assign users or groups to the application. *This is crucial*. Only users/groups assigned here will be synced.
- You assign users directly, or more commonly, you assign *groups* of users. This makes management much easier.
8. **(Optional) Push Groups (Okta):**
- If you want to sync group memberships *from* Okta *to* TypingMind, go to the "Push Groups" tab.
- Add the groups you want to push. This will create corresponding "Group:{group_name}" groups in TypingMind.
9. **Verification (TypingMind):**
- Return to the TypingMind Admin Panel (Users section).
- You should see the users from Okta (either directly assigned or members of assigned groups) appear in the user list. They will likely have a "scim" tag next to their names, indicating they were provisioned via SCIM.
- If you pushed groups, you should also see those groups in the "Groups" section of the TypingMind Admin panel.
**Important Notes and Limitations (Directory Sync):**
- **User Deduplication:** If a user already exists in TypingMind (e.g., they signed in via SSO) *before* you enable Directory Sync, TypingMind will attempt to match them based on their email address. If the emails *don't* match, a *duplicate* account might be created.
- **Seat Consumption:** Users provisioned via SCIM v2 *automatically consume a user seat* in your TypingMind for Teams subscription. Ensure you have enough seats available.
- **Sync Frequency:** The synchronization frequency is determined by the identity provider (e.g., Okta). In many cases, you can trigger a manual sync from the identity provider's admin panel.
- **Group Syncing:** Group names are prefixed with `Group:` to distinguish them within the TypingMind. These groups can then be used for access controls.
### 4. OAuth 2.0 (OIDC)
- **Purpose:** Allows users to log in using popular OAuth 2.0 providers like Google, Facebook, LinkedIn, Microsoft, and Twitter.
- **"Read OAuth 2.0 documentation" Link:** Provides a link to documentation explaining how to configure OAuth 2.0 connections - https://docs.typingmind.com/typingmind-custom/user-management/setup-oauth-2.0
- **"+ Add New OAuth 2.0 Connection" Button (Blue):** Initiates the process of adding a new OAuth 2.0 connection.
- **Pre-configured Connections:**
- **Login with Google:** A pre-configured option for Google login.
- **Toggle Switch:** Enables or disables Google login.
- **"View Details" Link:** Opens a configuration panel for the Google connection.
- Details likely include Client ID, Client Secret, and other necessary settings.
- **"Delete" Link (Red):** Removes the Google login connection.
**Adding a New OAuth 2.0 Connection (Example: Google)**
- Clicking "+ Add New OAuth 2.0 Connection" opens a dialog with the following:
- **Dialog Title:** "Add New OAuth 2.0 Connection (OIDC)"
- **Your OAuth Callback URL (Read-only):** This field displays the pre-configured callback URL for your TypingMind instance. You'll need this URL when configuring the OAuth 2.0 provider.
- Example: `https://yourbrandname.typingcloud.com/api/hosted/oauth/callback`
- **"Read OAuth 2.0 documentation" Link**
- **Provider Options:** A list of supported OAuth 2.0 providers:
- Facebook
- Google
- LinkedIn
- Microsoft
- Twitter
- Generic OAuth 2.0 (OIDC compatible)
- **Adding Google OAuth 2.0:**
- Select "Google." The dialog will update to show fields specific to Google:
- **Name:** Defaults to "Google," but can be customized.
- **Client ID:** You'll need to obtain this from the Google Cloud Platform (instructions below).
- **Client Secret:** You'll need to obtain this from the Google Cloud Platform (instructions below).
- **Show all parameters:** Link to the `Advanced Settings`
- **"+ Add Connection" (Green):** Saves the Google OAuth 2.0 configuration.
- **"Cancel" Button:** Closes the dialog without saving
**Example: Google Cloud Platform (GCP) Setup for OAuth 2.0:**
1. **Access Google Cloud Console:** Go to `console.cloud.google.com` and sign in with your Google account. If you don't have a Google Cloud Platform account, you may need to sign up for a free trial.
2. Navigate the left sidebar menu —> find APIs & Services —> Click on **OAuth Consent Screen**
3. **Create a Project:**
- If you don't have an existing project, click "Create Project."
- **Project Name:** Enter a descriptive name for your project (e.g., "typingmind-oauth").
- **Organization/Location:** provide your organization and location.
- Click "Create."
- Wait a few minutes to have Google to process and have the project created.
4. **Project Configuration**
- **App Information:**
- **App name:** Enter a name for your app (e.g., "TypingMind").
- **User support email:** Select your email address from the dropdown.
- Click "Next."
- **Audience:**
- Select "Internal" (only available to users within your organization).
- **Contact Information:**
- Email Addresses: Fill in your email or your team member's email address.
- Click "Next," Click "Continue" and "Create."
5. **Create OAuth Client ID:**
- Navigate Clients menu on the left sidebar and click on Create Client.
- **Application type:** Choose "Web application."
- **Name:** Enter a name for your client ID (e.g., "TypingMind").
- **Authorized JavaScript origins:** Leave this blank for now.
- **Authorized redirect URIs:**
- Click "+ ADD URI."
- Paste the "Your OAuth Callback URL" from the TypingMind "Add New OAuth 2.0 Connection" dialog into this field.
- Click "Create."
6. **Get Client ID and Secret:**
- After creating the client ID, a popup will appear displaying your:
- **Client ID:** A long string of characters.
- **Client Secret:** Another long string of characters.
- Copy both the Client ID and Client Secret.
7. **Paste Credentials into TypingMind:**
- Return to the "Add New OAuth 2.0 Connection" dialog in the TypingMind Admin Panel.
- Paste the Client ID into the "Client ID" field.
- Paste the Client Secret into the "Client Secret" field.
- Click the green "+ Add Connection" button.
8. **Test the Connection:** Once the connection is added, go to the login page (by logging out). You should now see a "Sign in with Google" button. Clicking this button should redirect you to Google's login page, and after successful authentication, you should be redirected back to TypingMind and logged in.
9. **Verify User List:** After successful login using Google, go to "Users" section in the left sidebar, then select "Users". You should see your user account with the "oauth" indicator, confirming that it's linked to Google login.
### 5. JWT Authentication
- **Purpose:** Enables authentication using JSON Web Tokens (JWT). This is typically used for integrating with external systems that issue JWTs.
- **"Learn more about JWT Authentication" Link:** Provides a link to documentation explaining JWT authentication:
- **Control:** A toggle switch labeled "Enable JWT Authentication."
- **Enabled State:** JWT authentication is enabled.
- **Disabled State:** JWT authentication is disabled.
- **Description:** "External Authentication via JWT allow you to authenticate your user using a JWT token."
**How JWT Authentication Works in TypingMind:**
1. **Enable JWT Authentication:** In the TypingMind Admin Panel (User Management > Authentication > JWT Authentication), toggle "Enable JWT Authentication" to the on position.
2. **Obtain the JWT Secret:** When you enable JWT Authentication, TypingMind will generate and display a *JWT Secret*. This secret is crucial; it's used to sign and verify the JWT tokens. *Copy this secret and store it securely*.
3. **Generate JWTs (External System):** Your external system (e.g., your existing user management system, a custom application, etc.) is responsible for *generating* the JWTs. These JWTs must:
- **Be Signed with the JWT Secret:** The JWT *must* be signed using the JWT Secret provided by TypingMind. This ensures that TypingMind can verify the token's authenticity. TypingMind uses the HMAC-SHA256 (HS256) algorithm.
- **Include Required Claims:** The JWT's payload *must* include specific claims (data fields) that TypingMind uses to identify and authorize the user. These claims are:
- `id` (string, *required*): A *unique* identifier for the user. This ID *must* be consistent across all JWTs issued for the same user. This is how TypingMind links the JWT to a specific user account. *If a user with this ID does not exist, TypingMind will create a new user account.*
- `email` (string, *optional*): The user's email address.
- `user` (object, *optional*): If the `id` doesn't already exist, you *can* (but don't *have to*) provide a `user` object to create a new user account with the specified details.
- `exp` (number, *recommended*): The expiration time of the token (Unix timestamp). It's best practice to set an expiration time to limit the token's validity.
- **Example Payload (Authenticating an Existing User by ID):**
```jsx
const payload = {
id: "user123", // The unique ID of the existing user
exp: Math.floor(Date.now() / 1000) + (60 * 60) // Expires in 1 hour
};
```
- **Example Payload (Authenticating an Existing User by Email):**
```jsx
const payload = {
email: "user123@example.com",
exp: Math.floor(Date.now() / 1000) + (60 * 60) // Expires in 1 hour
};
```
- **Example Payload (Creating a New User):**
```jsx
const payload = {
user: {
id: "unique-user-id-456", // MUST be unique
email: "newuser@example.com",
firstName: "New",
lastName: "User",
// ... other user properties ...
},
exp: Math.floor(Date.now() / 1000) + (60 * 60) // Expires in 1 hour
};
```
- **Example NodeJS Code (using `jsonwebtoken` library):**
```jsx
import jwt from 'jsonwebtoken';
// Replace with the actual JWT Secret from your TypingMind Admin Panel
const jwtSecret = "YOUR_TYPINGMIND_JWT_SECRET";
// Example: Authenticating an existing user by ID
const payload = {
id: "user123",
exp: Math.floor(Date.now() / 1000) + (60 * 60) // Expires in 1 hour
};
const token = jwt.sign(payload, jwtSecret);
console.log("Generated JWT:", token);
// Example: Creating a *new* user
// const payload = {
// user: {
// id: "unique-user-id-789", // MUST be unique
// email: "newuser@example.com",
// firstName: "New",
// },
// exp: Math.floor(Date.now() / 1000) + (60 * 60) // Expires in 1 hour
// };
// const token = jwt.sign(payload, jwtSecret);
// console.log("Generated JWT:", token);
```
4. **Pass the JWT to TypingMind:** Your external system needs to pass the generated JWT to TypingMind. There are two primary ways to do this:
- **URL Parameter (`externalAuthCode`):** Append the JWT as a query parameter named `externalAuthCode` to the TypingMind URL. For example:
This is useful for creating direct login links.
```
```
- **Chat Widget (`data-external-auth-code` attribute):** If you're embedding TypingMind as a chat widget on your website, add the JWT as the value of the `data-external-auth-code` attribute in the widget's `
```
5. **TypingMind Verification and Login:** When TypingMind receives the JWT (either via the URL or the widget attribute), it will:
- **Verify the Signature:** Use the JWT Secret to verify that the token was indeed signed by your system and hasn't been tampered with.
- **Check Expiration:** Check the `exp` claim (if present) to ensure the token hasn't expired.
- **Extract User Information:** Extract the `id` (and optionally `email` or `user` object) from the payload.
- **Authenticate/Create User:**
- If a user with the provided `id` (or `email`) *already exists*, TypingMind will automatically log that user in.
- If a user with the provided `id` *does not exist*, *and* the payload includes a `user` object, TypingMind will *create* a new user account using the information from the `user` object. This new user will consume a seat in your TypingMind for Teams subscription.
- If no matching user exists, and no `user` object is provided, authentication will fail.
**Important Considerations:**
- **Security:** The JWT Secret is *extremely sensitive*. Protect it as you would any other critical credential. Never expose it in client-side code. The JWT generation *must* happen on your server.
- **Uniqueness:** The `id` claim in the JWT *must* be unique across all users within your TypingMind instance. This is how TypingMind identifies and manages users.
- **Expiration:** Always set an expiration time (`exp`) for your JWTs. This limits the impact if a token is compromised.
- **Deduplication:** If a user might be authenticated via *both* SSO (e.g., Okta) *and* JWT, ensure that the user's email address is consistent across both systems to prevent duplicate accounts.
- **Seat Consumption:** Newly created user will automatically take a seat.
- **JWT vs. SSO:** JWT authentication is primarily for programmatic integration. SSO (like Okta or Google) is generally preferred for standard user login via a user interface, as it provides a more user-friendly login experience.
### 6. Basic Authentication
- **Purpose:** Provides an additional layer of security by requiring a username and password *before* accessing the chat instance. This is *separate* from and *in addition to* the regular user login.
- **Control:** A toggle switch labeled "Enable Basic Authentication."
- **Enabled State:** Basic Authentication is enabled.
- **Disabled State:** Basic Authentication is disabled.
- **Description:** "Basic Authentication is an optional extra layer of security for your chat instance. When enabled, your chat instance will be locked behind a username/password credential. All users (including guests and admin) will need to enter the Basic Auth username and password to access the chat instance. Note: this is a separate authentication step and not related to the normal user account. After the Basic Auth step, your users will still need to log in with their normal account to chat."
The "Usage Limits" section within the TypingMind for Teams Admin Panel provides administrators with the ability to control and manage AI resource consumption within their team's chat portal. This allows for cost optimization, fair resource allocation, and prevention of overuse. Usage limits can be applied globally, per model, per AI agent, or per user/user group.
### Accessing Usage Limits
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Access & Limits" Category:** In the left sidebar, click on the "Access & Limits" dropdown to expand the category.
3. **Click the "Usage Limits" Link:** Click on the "Usage Limits" link within the "Access & Limits" category. This will open the Usage Limits management interface.
### Usage Limits Interface Overview
The Usage Limits interface is divided into several key areas:
- **Page Title:** "Usage Limits" (clearly identifies the section).
- **Page Description:** "View set limits for models" (provides a brief overview of the section's purpose).
- **"Show the usage limits message under the chat input" Toggle:**
- **Purpose:** Controls the visibility of usage limit information to users within the chat interface.
- **Input Type:** Toggle switch.
- **Enabled State:** Displays a message below the chat input field, informing users of their current usage and remaining limits.
- **Disabled State:** Hides usage limit information from users.
- **Tabs Navigation:** Tabs on the top with content below: `Global Limits`, `Model Limits`, `AI Agent Limits`, `User Limits`
- **"Limit Groups" Section:**
- **Heading:** "Limit Groups"
- **Purpose:** Allows administrators to define pre-configured sets of usage limits that can be easily applied to different users, AI agents, or models. This simplifies the process of managing limits and ensures consistency.
- **"Learn more about how it works" Link:** A hyperlink leading to documentation explaining Limit Groups.
- **"+ Add New Group" Button:** Initiates the creation of a new Limit Group.
- **Existing Limit Groups:** Displays a list of existing Limit Groups.
- **Group Name:** The name of the Limit Group (e.g., "In-depth Use," "Pro Use," "Apply for All").
- **Limit Summary:** A brief description of the limits defined within the group (e.g., "200 characters every 3 hours").
- **"Edit" Button:** Opens the Limit Group configuration for modification.
- **"Delete" Button (Red Trash Can):** Deletes the Limit Group (with confirmation).
### Creating a Limit Group
1. **Click the "+ Add New Group" Button:** This is located in the "Limit Groups" section. Clicking it opens the "New Limit" (Limit Group creation) dialog.
2. **"New Limit" Dialog:**
- **Limit Group Name (Required):**
- **Purpose:** Assigns a descriptive name to the Limit Group (e.g., "Free Tier," "Premium Users," "Marketing Team").
- **Input Type:** Single-line text field.
- **Requirement:** This field is mandatory.
- **Limit Categories:** The dialog provides three main categories for setting limits:
- **Message Limits:** Controls the *number* of messages a user/agent/model can send within a defined time period.
- **Character Limits Per Message:** Restricts the *length* (in characters) of individual messages.
- **Character Limits Per Time Period:** Limits the total number of characters that can be sent/processed within a defined time period.
- **"+ Add Limit" Button (per category):** Each category has a "+ Add Limit" button. Clicking this button adds a new, specific limit within that category. You can add multiple limits within each category.
- **Limit Configuration (per limit entry):** When you add a limit within a category, you'll configure:
- **Quantity:** A numeric input field (e.g., "100" messages, "2000" characters).
- **Time Period:** A dropdown menu allowing you to select the time frame for the limit (e.g., "every 3 hours," "per day," "per month").
- **Delete Icon (Red Trash Can):** Removes the specific limit entry.
- **"Save" Button:** Saves the Limit Group with all defined limits.
- **"Cancel" Button:** Closes the dialog without saving the Limit Group.
**Example: Creating a "Basic Usage" Limit Group**
1. Click "+ Add New Group".
2. Enter "Basic Usage" as the Limit Group Name.
3. Click "+ Add Limit" under "Message Limits".
4. Set "25" messages every "3" hours.
5. Click "+ Add Limit" under "Character Limits Per Time Period".
6. Set "1000" characters every "1" day.
7. Click "Save".
### Applying Limits (Global, Model, AI Agent, User)
Once Limit Groups are defined, they can be applied at different levels:
### 1. Global Limits
- **Purpose:** Sets default usage limits that apply to *all* users or a specific group of users.
- **"Global Limits" Tab:** Select this tab in the main Usage Limits interface.
- **"+ Add Limit" Button:** Adds a new global limit.
- **Limit Configuration:** For each global limit:
- **Limit Group:** Select a pre-defined Limit Group or directly add a new limit group right within the drop-down box.
- **Apply For Users:** Choose the scope of the limit:
- **All users:** Applies to all users in the chat portal.
- **Users in specific groups:** Applies only to users belonging to the selected user groups. A secondary dropdown appears to select the specific user groups.
- **All users except users from specific groups:** Applies to all users *except* those in the selected user groups. A secondary dropdown appears to select the excluded user groups.
- **Remove:** Remove the current limits.
### 2. Model Limits
- **Purpose:** Sets usage limits that apply specifically to individual AI models. This overrides global limits.
- **"Model Limits" Tab:** Select this tab.
- **"+ Add Limit" Button:** Adds a new model-specific limit.
- **Limit Configuration:** For each model limit:
- **Model:** Select the AI model from the dropdown menu (e.g., "GPT-4o Search Preview," "O3 Mini").
- **Limit Group:** Select a pre-defined Limit Group or directly add a new limit group right within the drop-down box.
- **Apply For Users:** Choose the scope (All users, specific groups, or all except specific groups).
- **Remove:** Remove the current limit.
### 3. AI Agent Limits
- **Purpose:** Sets usage limits that apply to specific AI Agents. This overrides global and model-level limits.
- **"AI Agent Limits" Tab:** Select this tab.
- **"+ Add Limit" Button:** Adds a new AI Agent-specific limit.
- **Limit Configuration:** For each AI Agent limit:
- **AI Agent:** Select the AI Agent from the dropdown menu.
- **Limit Group:** Select a pre-defined Limit Group or directly add a new limit group right within the drop-down box.
- **Apply For Users:** Choose the scope (All users, specific groups, or all except specific groups).
- **Remove:** Remove the current limit.
### 4. User Limits
- **Purpose:** Sets usage limits that apply directly to individual users. This overrides global, model, and AI Agent limits. This is the *most specific* level of control.
- **"User Limits" Tab:** Select this tab.
- **"+ Add Limit" Button:** Adds a new user-specific limit.
- **Limit Configuration:** For each user limit:
- **User:** Select the user from the dropdown menu.
- **Limit Group:** Select a pre-defined Limit Group or directly add a new limit group right within the drop-down box.
- **Remove:** Remove the current limit.
**Example: Applying a Limit to a Specific Model and User Group**
1. Go to "Model Limits".
2. Click "+ Add Limit".
3. Select "O3 Mini" as the Model.
4. Select "In-depth Use" as the Limit Group.
5. Choose "Users in specific groups".
6. Select "advanced" from the User Groups list.
7. The “O3 Mini” model can now be used by the "advanced" group, limited to 200 characters every 3 hours.
**Important Considerations:**
- **Hierarchy of Limits:** User Limits > AI Agent Limits > Model Limits > Global Limits. More specific limits always override less specific ones.
- **Multiple Limits:** It's possible to define multiple limits within a Limit Group (e.g., both message and character limits). All defined limits within a group apply concurrently.
- **Limit Groups:** Using Limit Groups is highly recommended for easier management and consistency.
- **Legacy Model Usage Limits:** The "Model Usage Limits (Legacy)" section provides an older method for setting limits. It is generally recommended to use the Limit Groups system for new configurations.
The "Access Mode" section within the TypingMind for Teams Admin Panel gives administrators control over how users can access and interact with the team's custom AI chat portal. This feature provides flexibility in managing user authentication and sign-up processes, allowing for different levels of openness and security.
### Accessing the Access Mode Section
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Access & Limits" Category:** In the left sidebar, click on the "Access & Limits" dropdown to expand the category.
3. **Click the "Access Mode" Link:** Click on the "Access Mode" link within the "Access & Limits" category. This will open the Access Mode settings interface.
### Access Mode Interface Overview
The Access Mode interface is designed to be straightforward, providing a clear selection of access modes and related options. The interface generally consists of the following elements:
- **Page Title:** "Access Mode" (clearly indicates the page's function)
- **Page Description:** "Control who can use or sign-up your chat instance" (provides a brief explanation of the section's purpose)
- **"Access Mode" Dropdown Menu:**
- **Purpose:** This is the primary control for selecting the overall access mode for the chat portal.
- **Input Type:** Dropdown menu.
- **Options:**
- **Private Mode:** The most restrictive mode. Only users explicitly added by an administrator via the "Members" page can access the chat instance. These users, and any users with emails from domains pre-approved by the administrator, can log in; no one else can sign up.
- **Authorized Mode:** Allows anyone to use the chat instance, but they *must* sign up for an account with their email address first. This provides a middle ground between private and completely open access.
- **Public Mode:** The most open mode. Anyone can use the chat instance *without* needing to create an account. Anonymous users in Public Mode are limited to temporary chats (no persistent chat history, search, folders, tags, etc.).
### Detailed Descriptions of Access Modes
The interface provides detailed descriptions of each Access Mode below the dropdown and toggle switches:
- **Private Mode:** "Only people added via the Members page and people with emails from the allowed company's email domains can login and use the chat instance. No one can sign-up." By enabling this option, you can:
- **"Enable Login Wall" Toggle Switch:**
- **Purpose:** Controls whether users are required to log in to *view* the chat interface at all or not.
- **Input Type:** Toggle switch.
- **Enabled State:** A login screen ("Login Wall") is enforced. Users *must* log in before they can even see the main chat interface.
- **Disabled State:** The main chat interface is visible to anyone who accesses the chat portal's URL.
- **"Allow sign-ups using company email" Toggle Switch:**
- **Purpose:** Determines if users with email addresses from approved company domains can sign up for accounts.
- **Input Type:** Toggle switch.
- **Enabled State:** Users with emails from the approved domains can sign up, the textbox is showed.
- **Disabled State:** New sign-ups are restricted, and only added users are able to log in.
- **"Enter a domain" Text Input:**
- **Purpose:** Allows administrators to specify which email domains are permitted for self-registration.
- **Input Type:** Single-line text field.
- **Placeholder Text:** "Enter a domain (e.g., [yourdomain.com](http://yourdomain.com/))"
- **Functionality:** When "Allow sign-ups using company email" is enabled, administrators can enter a domain (like "[example.com](http://example.com/)") here. Users with email addresses from that domain (e.g., "[user@example.com](mailto:user@example.com)") will be allowed to sign up for an account.
- **Authorized Mode:** "Anyone can use the Chat instance but they need to sign-up an account with their email first. You can see the list of users in the Members page." There is also a clickable hyperlink for `Members` that redirects to User Management.
- **Public Mode:** "Anyone can use the Chat instance without an account. Anonymous users using your chat instance in Public Mode can only have temporary chats (no chat history, search, folders, tags, etc.). Optionally, you can still allow existing members to login and new members to signup."
### Public Mode Controls
When "Public Mode" is selected, additional configuration options become available:
- **Warning: Public Mode is enabled.**
- Make sure to set an appropriate message limit in the Usage & Limits page to avoid your API key being abused.
- Usage from anonymous users will be displayed as "Public User" in the ID column for you to keep track.
- Anonymous users can only have temporary chats (no chat history, search, folders, tags, etc.)
- **"Allow member login" Toggle Switch:**
- **Purpose:** Determines whether existing, registered members can still log in to their accounts while the chat portal is in Public Mode.
- **Input Type:** Toggle switch.
- **Enabled State:** Existing members can log in as usual, retaining access to their saved chats, AI agents, and other personalized features.
- **Disabled State:** The "Login" button is *completely hidden* from the user interface. Existing members *cannot* log in. This is useful if you want *strictly* anonymous, temporary use.
- **"Allow anyone to signup" Toggle Switch:**
- **Purpose:** Controls whether new users can create accounts while the chat portal is in Public Mode.
- **Input Type:** Toggle switch.
- **Enabled State:** New users can sign up for an account using their email address. If this option is disabled, new users can only be added via the Admin Panel -> Members.
- **Disabled State:** New user registration is disabled. The signup option will be removed from user interface.
- **Save button**: To save the current setting.
### Important Considerations and Behaviors
- **Sidebar Behavior (Public Mode):** In Public Mode, *without* a user logged in, the sidebar (with options like "Agents," "Prompts," etc.) is *hidden*. This is to limit the interface to the core chat functionality for anonymous users. The sidebar will reappear when the user logs in (if allowed by the "Allow member login" setting).
- **Login Process:**
- If `Allow member login` and `Allow anyone to signup` is turned on, user can click on `Login/Signup` button to view the Login popup. The popup will show the input field for Email, and also a button to `Login with email` or your chosen login method
- If `Allow member login` is turned on, `Allow anyone to signup` is disabled. When user click on the `Login` button, it will show the Login popup.
- If `Allow member login` is turned off, and `Allow anyone to signup` is turned on, the Login button is completely hidden.
The Analytics section in the Admin Panel of TypingMind for Teams provides administrators with a comprehensive overview of their team's usage and activity within the custom AI chat portal. It presents key metrics through interactive charts and summary tables, enabling data-driven insights and informed decision-making.
### Accessing the Analytics Section
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Reporting" Category:** In the left sidebar, click on the "Reporting" dropdown to expand the category.
3. **Click the "Analytics" Link:** Click on the "Analytics" link within the "Reporting" category. This will open the main Analytics dashboard.
### Analytics Dashboard Interface Overview
The Analytics dashboard is designed to provide a quick and informative overview of key usage metrics. It's structured with clear visual elements and interactive components.
- **Page Title:** "Analytics" (clearly indicates the page's purpose).
- **Page Description:** "View usage statistics and analytics" (explains the functionality of the page).
- **Date Range Selector (Top Right):**
- **Default Range:** Initially displays a pre-selected date range (e.g., "2025-02-16 — 2025-03-18").
- **"x" (Clear) Button:** Allows users to clear the currently selected date range.
- **Interactive Calendar:** Clicking the date range opens a calendar interface for custom date selection.
- **Navigation:**
- Left and Right Arrows: Navigate between months.
- Month and Year Dropdowns: Allow for quick selection of specific months and years.
- **Predefined Ranges:** Provides quick-select options for common timeframes:
- Last 3 days
- Last 7 days
- Last 15 days
- Last 30 days
- Last 60 days
- Last 90 days
- **Day Selection:** Clicking on a specific date in the calendar selects that date as either the start or end date of the range.
- Visual Feedback: Selected dates are highlighted (e.g., with a blue background).
- The calendar remains open after you select the first day, so click on the second day to finalize the range.
- If the selection is incorrect, you can click on a new starting date and repeat the selection
- **Clear the selection:** Clicking the close icon `x` will clear the custom selection.
### **Overview Cards (Top Row):**
Presents high-level summaries of key metrics. Each metric is displayed in a separate card.
**Common Elements (per card):**
- **Title:** A clear label indicating the metric including "Active Users," "Estimated Tokens," "Messages Sent").
- **Main Value:** The primary numerical value of the metric (e.g., "1", "41,826", "95"). This is prominently displayed.
- **Percentage Change (Optional):** If applicable, displays the percentage change compared to a previous period (e.g., "0.00%", "-44.48%", "+26.67%").
- Positive changes are typically indicated in green.
- Negative changes are typically indicated in red.
- **Icon:** A relevant icon is displayed next to the title (e.g., a user icon for "Active Users," a chart icon for "Estimated Tokens," a speech bubble icon for "Messages Sent").
- **Specific Overview Cards:**
- **Active Users:**
- Title: "Active Users"
- Main Value: Number of active users within the selected date range.
- **Estimated Tokens:**
- Title: "Estimated Tokens"
- Main Value: Total estimated tokens consumed within the selected date range.
- **Messages Sent:**
- Title: "Messages Sent"
- Main Value: Total number of messages sent within the selected date range.
### **Chart Area**
Displays interactive line charts visualizing trends over time for key metrics.
**Common Chart Elements:**
- **Title:** The metric being visualized (e.g., "Active Users," "Messages Sent").
- **Y-Axis:** Represents the quantity of the metric (e.g., number of users, number of messages).
- **X-Axis:** Represents time (dates within the selected range).
- **Data Points:** Points on the line graph represent the metric's value for each date.
- **Interactive Tooltip:** Hovering the mouse over a data point displays a tooltip with the specific date and corresponding metric value (e.g., "2/24/2025, Active_Users: 1").
- **Download button** (Top Right Corner): Allows the user to export and download the current data in CSV format. Clicking the button will automatically trigger a download.
**Specific Charts:**
- **Active Users:** Visualizes the number of active users over time.
- **Y-Axis Label:** "Active_Users"
- **Messages Sent:** Visualizes the number of messages sent over time.
- **Y-Axis Label:** "Messages"
- **Total Conversations:** A line chart showing the total number of conversations over time.
- **Y-Axis Label:** "Conversations"
- **Tooltip** Hovering the mouse over a data point displays a tooltip with the specific date and corresponding metric value (e.g., "2/24/2025, Conversations: 1").
- **Total Token Usage (Estimated):** A line chart showing the total estimated token usage over time.
- **Y-Axis Label:** "Tokens"
- **Tooltip** Hovering the mouse over a data point displays a tooltip with the specific date and corresponding metric value (e.g., "2/24/2025, Tokens: 19,002").
- **Token Usage by Users (Estimated):** A bar chart showing the estimated token usage for each individual user.
- **Y-Axis Label:** No display.
- **X-Axis Label:** Dates.
- **Summary Table (Below Chart):** Provides a tabular breakdown:
- **User:** The email address of the user.
- **Estimated Tokens:** The total estimated tokens consumed by that user.
- **Messages by Users:** A bar chart showing the number of messages sent by each individual user.
- **Y-Axis Label:** No display.
- **X-Axis Label:** Dates.
- **Summary Table (Below Chart):** Provides a tabular breakdown:
- **User:** The email address of the user.
- **Messages:** The total number of messages sent by that user.
- **Token Usage by Models (Estimated):** A bar chart showing the estimated token usage for each AI model used.
- **Y-Axis Label:** No display.
- **X-Axis Label:** Dates.
- **Summary Table (Below Chart):** Provides a tabular breakdown:
- **Model:** The name of the AI model (e.g., "Claude 3.5 Sonnet," "O3 Mini").
- **Estimated Tokens:** The total estimated tokens consumed by that model.
- **Messages by AI Agents:** A stacked bar chart showing the number of messages attributed to each AI Agent.
- **Y-Axis Label:** No display.
- **X-Axis Label:** Dates.
- **Summary Table (Below Chart):** Provides a tabular breakdown:
- **AI Agent:** The name of the AI Agent (e.g., "Marketing Assistant," "Content Writer").
- **Messages:** The total number of messages associated with that AI Agent.
### Token Estimation Algorithm
- **API-Returned Data:** As long as the AI provider's API (e.g., OpenAI, Anthropic) returns the actual token count used for a specific request, TypingMind will display this *exact* count in the analytics.
- **Internal Estimation Fallback:** For models or API configurations where the provider *does not* return the token count in the API response, TypingMind will use its *internal estimation* algorithm. While generally reliable, estimations may differ slightly from the provider's final billing count.
- **Transparency:** This approach ensures that whenever possible, the analytics reflect the precise token counts reported directly by the AI provider, increasing transparency for cost management.
### Exporting your data
You can export each chart to CSV to easily view your data in sheet and import to your own analytic tools (if any):
- Clicking on the Download icon next to each chart to export to CSV
The "Chat Logs" section within the TypingMind for Teams Admin Panel provides administrators with the ability to view and search through the chat conversations that have taken place within their custom AI chat portal. This is a crucial tool for monitoring usage, auditing interactions, ensuring compliance, and gaining insights into how users are interacting with the AI.
### Accessing Chat Logs
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Reporting" Category:** In the left sidebar, click on the "Reporting" dropdown to expand the category.
3. **Click the "Chat Logs" Link:** Click on the "Chat Logs" link within the "Reporting" category. This will open the main Chat Logs interface.
### Chat Logs Interface Overview
The Chat Logs interface is designed to present a clear and organized view of chat activity, with options for filtering and accessing individual chat details.
- **Page Title:** "Chat Logs" (clearly indicates the page's function).
- **Page Description:** "View and search chat logs from your..." (likely completes with "team" or "users," explaining the page's purpose).
- **"Settings" Button (Top Right):** A blue button labeled "Settings."
- **Function:** Opens a modal dialog to configure chat log recording.
- **Modal Content:**
- **Title:** "Chat Logs Settings"
- **Toggle Switch:** Labeled "Record all chats from your users."
- **Description:** "New chats will be recorded and stored, include anonymous chats and chats from logged-in users."
- **Enabled State:** The toggle is switched to the right (typically displayed with a blue color), and chat logging is active.
- **Disabled State:** The toggle is switched to the left (typically displayed in gray), and chat logging is disabled. New chats will *not* be recorded.
- **"Close" Button:** Closes the settings dialog.
- **Filtering Options (Top of Table):** Provides controls for narrowing down the displayed chat logs:
- **User Filter:** A dropdown menu labeled "All users."
- **Default:** "All users" (shows logs from all users).
- **Options:** a drop-down list of all users (and potentially an "anonymous" option for public users) associated with the chat portal.
- **Functionality:** Selecting a specific user filters the chat logs to show only conversations involving that user.
- **Time Filter:** A dropdown menu labeled "All time."
- **Default:** "All time" (shows logs from all time periods).
- **Options:** Predefined time ranges, such as "Today," "Yesterday," "Last 7 days," "Last 30 days," "Month to date," "Last month," "Last 3 months."
- **Functionality:** Selecting a time range filters the chat logs to show only conversations that occurred within that period. The list show the chat logs in the last 3 months.
- **Chat Log Table:** The main section of the interface displays a table of chat log entries. Each row represents a single chat session.
- **Columns:**
- **Title:** The title of the chat (e.g., "Testing," "Creating a TypingMind Plugin," "test"). If a chat has no custom title, "(Untitled)" is displayed.
- **Email:** The email address of the user who participated in the chat.
- **Model:** The AI model used in the chat (e.g., "Gemini 2.0 Flash," "GPT-4o Search Preview," "Claude 3.5 Sonnet").
- **Time:** The date and time the chat occurred (e.g., "Today at 10:40," "13 Mar at 11:55").
- **AI Agents:** The AI agent(s) used in the chat (e.g., "Life Hacker," "Marketing Expert").
- **Plugins:** Whether or not plugins were used in the chat.
- **"View" Link:** Clicking this link opens the chat in a dedicated view to examine the plugin usage.
### Viewing Individual Chat Details
Clicking on a row in the Chat Logs table, or on the title of a chat, opens a detailed view of that specific chat session. This view replicates the user-facing chat interface.
- **Back Button:** A left-pointing arrow ("←") at the top left of the detail view allows administrators to return to the main Chat Logs list.
- **"Grid View" Button:** A blue button is also present to allow you to return to the main Chat Logs
- **Chat Interface:** Displays the full chat conversation, including messages from both the user and the AI.
- **User Information (Right Sidebar):** Displays key details about the chat:
- **User Email:** The email address of the user.
- **Model:** The AI model used.
- **Time:** The date and time the chat occurred.
- **AI Agents:** It shows the AI agent, with the title, and the description.
### Exporting chat logs
You can export chat logs using our for chat logs.
The "Email Reports" section in the TypingMind for Teams Admin Panel allows administrators to enable and configure automated daily email summaries of user chat activity within the team's custom AI chat portal. This feature provides a convenient way to monitor usage and stay informed about conversations without needing to constantly access the admin panel directly.
### Accessing Email Reports
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Reporting" Category:** In the left sidebar, click on the "Reporting" dropdown to expand the category.
3. **Click the "Email Reports" Link:** Click on the "Email Reports" link within the "Reporting" category. This will open the Email Reports configuration interface.
### Email Reports Interface Overview
The Email Reports interface is designed for straightforward configuration of automated email summaries. It includes the following key sections:
- **Page Title:** "Email Reports" (clearly indicates the page's purpose).
- **Page Description:** "Receive daily summary report via email." (explains the functionality of the section).
- **"Send daily chat summary" Toggle Switch:**
- **Purpose:** Enables or disables the automated daily email reports.
- **Input Type:** Toggle switch.
- **Enabled State:** The toggle is switched to the right (typically displayed with a blue color), and daily email reports will be sent. The rest of the configuration options become active.
- **Disabled State:** The toggle is switched to the left (typically displayed in gray), and no email reports will be sent.
- **Description:** "If enabled, you will receive a daily report email containing the users' messages within that day."
- **"Frequency" Dropdown Menu:**
- **Purpose:** Sets the frequency of the email reports.
- **Input Type:** Dropdown menu.
- **Options:**
- **Daily (Selected):** Sends a report every day. *Currently, this is the only available option.*
- **"Report content" Dropdown Menu:**
- **Purpose:** Determines the level of detail included in the email report.
- **Input Type:** Dropdown menu.
- **Options:**
- **Summary of all conversations (Selected):** Includes a summary of all conversations that took place during the reporting period.
- **User messages only:** Includes only messages that is generated by user.
- **Full conversations:** Includes the entire content of all conversations, including both user prompts and AI responses.
- **Note:** "attachments (files, images) will not be included" (a disclaimer indicating that file attachments are not included in the email reports).
- **"Recipients" Text Input Field:**
- **Purpose:** Specifies the email addresses that should receive the daily reports.
- **Input Type:** Single-line text field.
- **Placeholder Text:** Provides example email addresses (e.g., "[audit@yourcompany.com](mailto:audit@yourcompany.com); [example@yourcompany.com](mailto:example@yourcompany.com)").
- **Instructions:** "Enter email addresses separated by commas" (explains how to enter multiple recipients).
- **Validation:** The field likely performs validation to ensure that valid email addresses are entered.
- **Email Verification:**
- **"Verification Required!" Message:** A message displayed if the recipient email address(es) need to be verified. This message is typically styled as an error or warning (red). The text description such as `A verification email has been sent to 1 email address(es). Please click the link in the verification email to start receiving reports.`
- **Verification Email:** When a new email address is added as a recipient and the "Save" button is clicked, a verification email is sent to that address.
- **Sender:** The email is sent from `TypingMind Private AI Hub `.
- **Subject:** "[Verification] Email report for TypingMind Private AI Hub [Date and Time]" (The date and time are included in the subject).
- **Content:** The email contains a link to verify the email address and confirm the subscription to the daily reports. The message might look like:
```
Hi there!
Please verify your email address to receive email reports from {{Your Instance Name}}. Click here to verify:
[Verification Link]
Best,
[Admin Name]
```
- **Verification Link:** The link directs the user to a TypingMind page to confirm the subscription. The link might look like: `https://www.yourbrandname.typingcloud.com/api/hosted/email-report/verify-email?token=[a long alphanumeric token]`.
- **"Save" Button (Blue):**
- **Purpose:** Saves the current Email Reports configuration.
- **Action:** Clicking the "Save" button applies the changes and activates/deactivates the email reports based on the settings.
- **Loading state**: The saving button will show a loading state to indicate the process.
### Important Notes and Behaviors
- **Verification:** Recipient email addresses *must* be verified before reports will be sent. The verification email contains a unique link that the recipient needs to click to confirm their subscription.
- **Only `Daily` option:** Currently, only daily reports are available.
- **Attachments:** Attachments (files, images) are *not* included in the email reports.
The "Audit Logs" section within the TypingMind for Teams Admin Panel provides administrators with a comprehensive, chronological record of all actions and changes made within their organization's custom AI chat portal. This feature is crucial for maintaining accountability, tracking configuration changes, troubleshooting issues, ensuring security, and demonstrating compliance.
### Accessing Audit Logs
1. **Navigate to the Admin Panel:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Reporting" Category:** In the left sidebar, click on the "Reporting" dropdown to expand the category.
3. **Click the "Audit Logs" Link:** Click on the "Audit Logs" link within the "Reporting" category. This will open the main Audit Logs interface.
### Audit Logs Interface Overview
The Audit Logs interface is designed to present a clear, filterable, and chronological view of all administrative and user-related activities.
- **Page Title:** "Audit Logs" (clearly indicates the page's purpose).
- **Page Description:** "Track all actions and changes made within your organization" (explains the functionality of the page).
- **Top Bar Elements:**
- **"View Live" Link:** Displays the URL for the team's live chat instance. Clicking this link opens the live chat portal in a new browser tab.
- **Profile Settings:** Displays the current admin's profile icon, offering options to manage the account or sign out.
### Audit Log Table
The main section of the interface displays a table of audit log entries, with each row representing a specific action or change. The table includes the following columns:
- **USER:**
- Displays the name of the user who performed the action.
- **ACTION:**
- Indicates the type of activity performed. Some common actions:
- update: A modification or change was made to an entity.
- login: A user successfully logged into the system.
- create: A new entity was created.
- delete: An entity was removed from the system.
- logout: A user logged out of the system.
- **ENTITY:**
- Specifies the particular item or area within TypingMind that was affected by the action. This provides context for the change. Some examples:
- Agent name: Indicates an update was made to a specific AI Agent
- Plugin name: Indicates an update was made to a plugin
- Model limits (under Limits): Indicates changes were made to model usage limits.
- Model settings (under Models): Indicates changes were made to general model configurations.
- Access mode (under Access & Limits): Indicates modifications to the instance's access mode settings (e.g., Private, Authorized, Public).
- Email login (under Login Method): Indicates a user logged in via email.
- ngoc@typingmind.com (under Users): Indicates an action related to a specific user account.
- Deleted user (under Users): Indicates an action related to a deleted user.
- Welcome message (under Portal Settings): Indicates changes to the welcome message displayed on the chat portal.
- **DATE:**
- Displays the exact date and time when the action occurred, including the year and precise time (e.g., "Jul 17, 2025 11:03").
### Functionality and Usage
- **Detailed Tracking:** The audit logs provide granular visibility into every significant action performed by users and administrators within the TypingMind instance.
- **Accountability:** Admins can easily identify who made what changes and when, fostering accountability across the team.
- **Troubleshooting:** When unexpected behavior or configuration issues arise, audit logs can be a first point of reference to pinpoint recent changes that might be the cause.
- **Security Monitoring:** The logs help in monitoring for unauthorized access attempts or suspicious activities, such as repeated login failures or unexpected entity deletions.
- **Compliance:** For organizations with strict compliance requirements, audit logs serve as an essential record of system activity and configuration changes.
The "Billing" section in the Admin Panel allows administrators to manage their TypingMind for Teams subscription, payment information, and add-ons.
### Accessing the Billing Section
1. **Navigate to the Admin Dashboard:** Log in to your TypingMind for Teams Admin Account.
2. **Locate the "Account" Category:** In the left sidebar, click on the "Account" dropdown to expand the category.
3. **Click the "Billing" Link:** Click on the "Billing" link within the "Account" category. This will open the Billing management interface.
### Billing Interface Overview
The Billing interface is organized to provide a clear overview of the current subscription, add-ons, and options for managing payment information. It includes the following key sections:
- **Page Title:** "Billing" (clearly indicates the page's purpose)
- **Page Description:** "Manage your payment info and subscriptions" (explains the functionality of the section.
**Subscriptions Section:**
- **Heading:** "Subscriptions" (clearly labels the section)
- **Current Plan:** Displays the name of the current subscription plan (e.g., "Your instance is on the **Pro** plan.").
- **Plan Status Indicators:** Visual indicators (colored labels) show the status of different subscription components:
- **"Active" (Green):** Indicates an active and paid-for subscription or add-on.
- **"Canceled" (Gray):** Indicates a canceled subscription or add-on.
- **"Ended on [Date]"**: Indicates when subscription has ended.
- **“Expired”** indicates when subscription has expired
**Subscription display:**
- Your current plan name
- Your current plan subscription
- Your current Add-ons including Add Seat and Training Characters.
- **"Manage Billing" Button (Blue):** A prominent button allowing administrators to access the Stripe billing portal for detailed management.
- **Functionality:** Clicking this button opens a new tab or window, redirecting the user to the Stripe customer portal.
- **Stripe Portal Actions:** Within the Stripe portal, administrators can:
- Update or Cancel current subscription
- Update Payment Method: Add, remove, or update credit card information.
- View Billing Information: Access name and email details associated with the billing account.
- View Invoice History: See a list of past invoices, with options to download them as PDFs.
- Update information such as Name or Email.
**Add-on: Extra Seats: $8/user seat/month**
- **Heading:** "Addon: Extra Seats" (identifies the add-on type)
- **Current Seat Limit:** Displays the current maximum number of users allowed for the instance (e.g., "Your instance seat limit is: **5** seats.").
- **"Buy More Seats" Button (Blue):** Allows administrators to purchase additional user seats.
- **Clicking "Buy More Seats":** Opens a popup dialog:
- **Title:** "Buy More Seats"
- **"Extra seats to add:" Field:** A numeric input field allows the administrator to specify the number of extra seats they want to purchase.
- Input Value: Typing in a numeric value.
- Up/Down Arrows: Increment or decrement the value using arrow controls.
- **"Cost" Information:** Displays the cost per extra seat (e.g., "$8/seat/month").
- **"Summary" Section:** Provides a summary of the purchase:
- **Extra seats:** The number of seats being added.
- **Total seats:** The new total number of seats after the purchase.
- **Total cost:** The updated total monthly cost.
- **"Checkout" Button (Blue):** Proceeds to the Stripe checkout process to complete the purchase.
- **"Cancel" Button:** Closes the dialog without purchasing additional seats.
**Add-on: Training Data Characters: $10/1M Training Characters/Month**
- **Heading:** "Addon: Training Data Characters" (identifies the add-on type)
- **Current Character Limit:** Displays the current limit for training data characters (e.g., "Your training data limit is: **1,000,000** characters.").
- **"Increase Characters Limit" Button (Blue):** Allows administrators to purchase additional training data characters.
- **Clicking "Increase Characters Limit":** Opens a popup dialog:
- **Title:** "Buy More Training Data Characters"
- **"Extra characters to add:" Field:** A dropdown allowing the user to select an option for the amount of characters:
- Input Value: Typing in a numeric value.
- Dropdown menu: Admins can choose from a list of increments (e.g., 1M characters, 2M characters, 5M characters, ..., to 50M characters).
- **"Cost" Information:** Displays the cost per extra character (e.g., "$10/1M characters/month").
- **"Summary" Section:** Provides a summary of the purchase:
- **Total training data characters:** The new total number of training data characters after the purchase.
- **Total cost:** The updated total monthly cost.
- **"Checkout" Button (Blue):** Proceeds to the Stripe checkout process to complete the purchase.
- **"Cancel" Button:** Closes the dialog without purchasing additional characters.
**Danger Zone:**
- **Heading:** "Danger Zone" (clearly indicates the potential for irreversible actions).
- **"Delete This Instance" Button (Red):** Allows administrators to permanently delete the entire team chat instance.
- **Confirmation Prompt:** Clicking this button displays a *very strong* warning prompt:
- **Title:** "Are you absolutely sure?" (emphasizes the seriousness of the action).
- **Warning Text:** "This action *cannot* be undone. This will *permanently* delete the **\[Instance Name]** instance, including *all chats, users, configurations, and data*. Please type **\[Instance Name]** below to confirm." (The warning text clearly explains the consequences of deletion, emphasizing data loss and irreversibility).
- **Input Field:** A text input field requires the administrator to *manually type* the exact name of the instance to confirm their intention. This acts as a safeguard against accidental deletion.
- **"I understand the consequences, delete this instance" Button (Red):** This button is *disabled* until the instance name is typed correctly in the input field. Once the correct name is entered, the button becomes enabled.
- **"Cancel" Button:** Closes the confirmation dialog without deleting the instance.
- **Irreversible Action:** Deleting the instance is a permanent and irreversible action. All data associated with the instance is lost.
- You need to cancel all subscriptions to delete a chat instance.
### Support Channels and Guidelines
1. **Current Support Channels:**
- Primary Email: support@typingmind.com
- Bug Report Form: typingmind.com/report-bug
- Note: Discord server discontinued as of Feb 10, 2025
2. **Common Issues and Solutions:**
a. **Failed Fetch During Custom Model Setup:**
- Issue: "Failed to fetch" error when testing custom model
- Cause: API key formatting in custom header
- Solution: Remove quotation marks/brackets around API key
b. **Search Function Errors:**
- Issue: "Cannot read properties of undefined (reading 'map')"
- Cause: No search results found
- Verification: Test with simple queries like "What is the current gold price?"
c. **Claude CORS Errors:**
- Issue: CORS requests not allowed due to custom retention settings
- Solution: Change Anthropic endpoint to https://cloud2.typingmind.com/api/claude/v1/messages
d. **Sync Issues:**
- Issue: Chats excluded from sync
- Cause: Chat size exceeds 3MB limit
- Solution: Delete large files/images to reduce chat size
e. **Model Access Errors:**
- Issue: "The model `o3-mini` does not exist or you do not have access"
- Requirement: OpenAI Usage Tier 3-5 needed
- Note: Access granted gradually by OpenAI team
3. **Error Message Handling Protocol:**
- Confirm error cause with user before providing solution
- Use provided "Common Issues" solutions first
- Redirect to Bug Report form for unresolved issues
4. **Feature Request Management:**
- Direct users to: https://feedback.typingmind.com/
- Maintain record of requested features
- Update users on feature implementation status
TypingMind Reseller Program is designed for partners who want to bring TypingMind's AI platform to businesses in their local markets.
### 1. Program Overview
- **Goal:** To collaborate with Resell Partners to implement TypingMind as the technical platform for businesses, enabling them to leverage generative AI.
- **Target:** Businesses, especially in local markets with less exposure to generative AI technologies.
- **Product Applied:** TypingMind Team version at ****https://custom.typingmind.com/
- **Global Presence:** TypingMind has successful reseller partners in various countries, including Germany, Canada, and Thailand.
**Note:** As of now, there’s no option to resell TypingMind License version at [typingmind.com](http://typingmind.com), Resellers need to use TypingMind Team version at [custom.typingmind.com](https://custom.typingmind.com/) to resell the app.
### 2. Why Partner with TypingMind?
- **Industry Leader:** Leading provider of internal AI chat portals for businesses, trusted by 18,824+ customers.
- **Support All Top AI Models:** Integrates with GPT-4 (OpenAI), Claude (Anthropic), Gemini (Google), and other open-source or custom models via compatible APIs.
- **Private and Secure:** Built with advanced security protocols (SOC 2 Certified, GDPR Compliant) to protect customer data.
- **Brandable, Customizable, Scalable:** Adaptable for various use cases, businesses, and industries. Offers white-labeling options.
- **Profitable & Flexible Pricing:** Commission structure designed for partner profitability.
- **Flexible Hosting & Deployment:** Options include cloud hosting (US/EU servers) or self-hosting on customer infrastructure.
### 3. Reseller Benefits
- **Earn Profits, No Maximum Cap!** Grow your business by earning profits for each new customer acquired.
- **Partner Recognition (Optional):** Inclusion in the reseller directory and authorization with partner badges.
- **Access To Free Demo Chat Instance:** Receive a demo chat instance with 50 user seats available for FREE to support marketing and sales efforts.
- This free demo instance provides access for 50 users. Among them, 3 are permanent seats with Admin privileges. The remaining 47 are temporary seats that can access the app interface for up to 14 days. After that, their access to the demo chat workspace will expire.
- **Dedicated Partner Support:** Access to dedicated support for technical and product inquiries.
### 4. Ideal Reseller Profile
Resellers are expected to have:
- **Local Market Expertise:** Experience and access to local businesses.
- **AI Technical Understanding:** Knowledge of generative AI, prompt engineering, AI agents, RAG, plugins, API integration, etc.
- **TypingMind Product Knowledge:** A good understanding of the TypingMind system and its features.
- **Value-Added Service Capability:** Ability to offer services beyond the platform, such as:
- AI consulting, training, and workshops.
- Helping businesses apply generative AI to specific domains/workflows.
- Building custom prompt and AI agent libraries.
- Assisting with internal data integration for RAG.
- Educating employees on using TypingMind for daily tasks.
- **Passion for AI:** Enthusiasm for AI and its potential to benefit local businesses.
### 5. How the Program Works (Process)
1. **Research & Apply:** Understand TypingMind and the Reseller Program, then apply if it's a good fit.
2. **Initial Contact:** Engage with the TypingMind team for mutual understanding.
3. **Agree on Terms:** Finalize workflow, pricing, payment terms, and other specifics.
4. **Get Reseller License and Access to Demo account:** Get a Reseller License and access to demo instances for sales/marketing.
5. **Customer Onboarding:** Onboard new customers to the TypingMind platform.
6. **Payment:** once customers commit to pay:
- Set up a separate chat instance so they can have long-term access
- Charge them via your own payment system with custom pricing. Then add them to the chat instance.
7. **Ongoing Support:** Maintain contact with customers for support and feedback (depending on the agreed structure).
### 6. Target Customers
- **Preferred Profiles:**
- Businesses of all sizes (SMBs to enterprises).
- Universities or educational institutions.
- **Other Customer Types:** Proposals for other customer groups should be discussed with TypingMind first.
### 7. Roles and Definitions
- **Software Platform Provider:** TypingMind (Devuap LLC) - Builds and maintains the technical platform, handles data, security, and updates. Referred to as "technical partner" or "software manufacturer."
- **Reseller/Agency:** The partner (You) - Implements TypingMind locally, provides value-added services (consulting, training).
- **Customers:** Paying entities (Companies, Universities) - Purchase the product and services.
- **End-users:** Employees/Students - Use the TypingMind platform daily.
- **Admin Users:** Elected end-users with access to the TypingMind Admin Panel - Manage members, customize the instance, create shared content (prompts, agents), connect data, etc.
### 8. Marketing Materials
Resellers can utilize official TypingMind marketing resources:
- **Main Marketing Page:** https://custom.typingmind.com/
- **Documentation:** https://docs.typingmind.com/
- **Blog:** https://blog.typingmind.com/
- **YouTube:** https://www.youtube.com/@TypingMind
### 10. AI Provider Relationship
- **TypingMind Role:** TypingMind is an interface, *not* an AI provider. It connects to external AI services.
- **Customer Responsibility:** Customers must choose their own AI provider(s) (e.g., OpenAI, Anthropic, Google) and pay for AI usage directly via API keys.
- **Compatibility:** TypingMind supports connection to multiple AI providers simultaneously and any AI model with a compatible API.
### 11. User Documentation
- **Primary Resource:** All user documentation is hosted online at https://docs.typingmind.com/.
- **Accessibility:** Links to guides are embedded within the TypingMind product.
- **Custom Guides:** TypingMind does not provide custom-hosted guides. Resellers can add custom URLs to their documents within the Admin Panel if they wish to host separate guides.
### 12. Partnership Structure Options
The partnership structure is flexible. Key factors to agree upon:
- **12.1 Resell Type:**
- **Seat Resell:** Reseller creates one instance under their brand and sells individual seat licenses. Customers access only the end-user interface.
- **Instance Resell:** Reseller creates a private instance for each customer, granting them Admin Panel access for customization.
- **12.2 Branding:**
- **Option 1 – Branded Instance:** Reseller advertises TypingMind under their brand, disclosing TypingMind as the technical partner. Admin panel shows a badge like "TypingMind - Licensed by [Your Brand Name]".
- **Option 2 – Unbranded Instance:** Reseller advertises TypingMind as provided by TypingMind, distributed by the reseller.
- **12.3 Customer Support:**
- **Option 1 – Included (Branded):** Reseller provides basic support (billing, general questions). TypingMind assists with technical issues/bugs/features via a private channel.
- **Option 2 – Not Included (Unbranded):** Customers contact TypingMind support directly.
- **12.4 AI Providers and API Cost:**
- **Option 1 – Reseller Pay:** Reseller uses their own API keys and pays AI providers. Requires accounts with OpenAI, Anthropic, Google AI, etc.
- **Option 2 – Customer Pay:** Reseller helps setup; customer uses their own API keys and pays AI providers directly.
- **12.5 Deployment:**
- **Cloud Host (Recommended):** Hosted in TypingMind's secure US (Virginia) or EU (Frankfurt) data centers. Offers convenience and seamless updates.
- **Self-host on Customer's Infrastructure:** Deployed on the customer's servers. Requires a technical team for setup/maintenance. Has more limitations (See: https://custom.typingmind.com/self-host).
- **Self-host on Reseller's Infrastructure:** Reseller hosts TypingMind privately. Reseller is responsible for hosting, data protection, setup, and maintenance. Requires a technical team.
- **12.6 Payment:**
- **Standard Model:** Reseller buys licenses from TypingMind and resells at a markup based on added value. Customers pay the reseller directly.
- **Alternative Structures:** Open to discussion based on specific situations.
- **12.7 Product Content (Prompts, Agents, Data):**
- **Option 1 – Customer Create:** Customer creates their own content using TypingMind documentation.
- **Option 2 – Reseller Create:** Reseller provides AI consulting, understands customer workflows, proposes suitable content, and offers training.
- **12.8 Partnership Structure Examples:**
- **Example 1:** Both Seat & Instance Resell, Branded, Included Support, Reseller Pays API Costs, Cloud Host, Reseller Creates Content.
- **Example 2:** Seat Resell, Branded, Included Support, Customer Pays API Costs, Self-host on Reseller Infra, Customer Creates Content.
### 13. Handling Feature Requests
- **Process:** Forward all customer feature requests and feedback to TypingMind.
- **Evaluation:** TypingMind evaluates requests for inclusion in the roadmap.
- **Roadmap:** Public roadmap available at https://typingmind.com/ideas (Private roadmap also exists).
- **ETA:** Do not promise specific ETAs for requested features.
### 14. Communication Guidelines
- **Honesty:** Advise customers truthfully about generative AI capabilities and practical use cases.
- **Feature Requests:** Discuss feature requests with TypingMind before making commitments to customers.
- **Clarity:** Ensure customers understand the terms of service, privacy policy, and what they are purchasing.
- **Consultation:** Discuss any doubts regarding the product with TypingMind.
### 15. Region of Operation
- **Designated Location:** Resellers are only allowed to approach customers within their agreed-upon geographic location.
- **Competition:** This policy avoids unnecessary competition in markets where TypingMind already has a presence.
- **Exclusivity:** Potential for exclusive agreements based on partnership performance over time.
### 16. Intellectual Property
- **User Content:** All content created within TypingMind (prompts, AI agents, uploaded training data) belongs to the creator. TypingMind does not claim copyright.
- **TypingMind Usage:** TypingMind retains the right to use the content solely for the purpose of providing the service.
### 17. How to Sign Up
- **Signup Link:** Apply for the Reseller Program at https://custom.typingmind.com/reseller-signup
### 18. Further Questions
- **Contact:** For additional questions about the Reseller Program, contact [support@typingmind.com](mailto:support@typingmind.com).
### 19. Reseller Program Q&A
- **Q: Is it possible for my customers to purchase directly on the TypingMind app with my custom pricing?**
- **A:** As of now, this is not directly supported. Resellers need to build their own payment system to handle customer payments based on their custom pricing and packages. User management (adding purchased seats/users to the TypingMind instance) can then be automated using the TypingMind API integration ().
- **Q: How is pricing determined for my customers?**
- **A:** Resellers have the freedom to set the final price for their customers. This price should reflect the value of the TypingMind platform combined with any additional consulting services, training, or custom content provided by the reseller. TypingMind charges the reseller based on the Public Price listed on the official website (https://custom.typingmind.com/).
- **Q: What hosting options are available for my customers?**
- **A:** TypingMind offers flexibility. You can choose:
- **Cloud Hosting:** Hosted on TypingMind's secure infrastructure in the US (Virginia) or EU (Frankfurt). Recommended for ease of use and seamless updates.
- **Self-Hosting:** Deployed on the customer's own infrastructure or the reseller's infrastructure. Requires technical expertise for setup and maintenance. (See Deployment section 12.5 for more details).
- **Q: Are there volume discounts available for resellers?**
- **A:** Yes, TypingMind offers volume discounts for purchasing a large number of user seats to support large-scale deployments and reseller growth. For specific discount tiers and details, please contact TypingMind support at [support@typingmind.com](mailto:support@typingmind.com) with the expected number of users you plan to purchase.
- **Q: How is customer support handled in the reseller model?**
- **A:** The reseller's team is responsible for providing **Tier 1 support**. This includes handling basic inquiries such as general product questions, billing/payment issues related to the reseller's package, and initial troubleshooting. TypingMind provides **Tier 2 support** for more complex technical issues, bugs, or advanced product questions escalated by the reseller. The specific support structure can be further defined in the partnership agreement (See Customer Support section 12.3).
### 20. Reseller Monetization Strategies
Leverage TypingMind's platform by adding value through these strategies:
1. **Combine with Consulting:** Bundle TypingMind access with your existing professional services (marketing, business consulting, etc.). Charge standard rates plus a fee for the customized TypingMind instance and support.
2. **Sell Custom AI Solutions:** Develop and sell access (subscriptions) to specialized AI Agents, prompts, or plugins that automate tasks or solve specific industry problems (e.g., financial analysis, e-commerce descriptions).
3. **Launch Training Courses:** Create courses teaching AI skills (writing, coding, marketing) using TypingMind as the hands-on tool. Charge for the course, including TypingMind access.
4. **Offer White-Label Solutions:** Rebrand and customize TypingMind for clients who want a ready-made, branded AI tool without in-house development. Charge setup/customization fees plus recurring fees for support/maintenance.
5. **Provide AI Chatbot Services:** Build and manage AI-powered customer service chatbots for businesses using TypingMind. Offer as a subscription service, potentially priced per user or volume.
6. **Create Membership Communities:** Build a paid community offering exclusive access to a customized TypingMind instance, unique AI tools, and other resources (webinars, forums) for a recurring membership fee (potentially tiered).
## Privacy Policy for [TypingMind.com](http://typingmind.com/) (License Version)
This section details how user data is handled for the [TypingMind.com](http://typingmind.com/) static chat application, covering both free and paid users, as well as related services like TypingMind Cloud and the Setapp integration.
### 1. Data Handling for Free Users
- **Local Storage:** All user data, including API keys, chat history, and messages, is stored locally within the user's browser using Local Storage and IndexedDB technologies.
- **Static Website Architecture:** [TypingMind.com](http://typingmind.com/) operates as a static website. There is no backend server collecting user data directly from the app interface.
- **Direct API Communication (OpenAI):** When a message is sent using an OpenAI model, the application sends the request directly from the user's browser to the OpenAI API endpoints.
- **Security:** Communication uses the secure HTTPS protocol.
- **Privacy:** No intermediary server intercepts or logs these requests or responses.
- **Proxied Communication (Anthropic):**
- **Reason:** Anthropic's API does not permit direct requests from web browsers due to CORS (Cross-Origin Resource Sharing) policies.
- **Process:** Requests to Anthropic models are routed through a TypingMind proxy server.
- **Privacy Commitment:** This proxy server *does not* log or store any data from the requests. Its sole function is to forward the request securely to Anthropic's servers.
- **Self-Proxy Option:** For maximum privacy, users can configure their own proxy server for Anthropic models via: Settings → Advanced Settings → Anthropic Chat Completions Endpoint.
- **No External JavaScript:** The application strictly avoids running external JavaScript code to maintain control and security.
### 2. Data Handling for Paid Users (License Holders)
The privacy policy for paid users includes all points mentioned for free users, with the following additions related to licensing:
- **License Purchase Data:** When purchasing a license key, TypingMind stores the user's email address and the associated license key in its database.
- **Purpose:** This information is used solely for delivering the license key and verifying its authenticity when activated within the TypingMind application.
- **License Verification Process:** When a user enters a license key to unlock premium features, [TypingMind.com](http://typingmind.com/) sends a request from the user's browser to a dedicated TypingMind License Server.
- **Purpose:** This request verifies the license key's validity and retrieves basic owner information (like the associated email) to display within the app for confirmation.
- **Update Notifications:** Paid users may receive email notifications about new application versions, features, and updates.
- **Opt-Out:** Users can unsubscribe from these notification emails at any time.
### 3. Third-Party Services Used
[TypingMind.com](http://typingmind.com/) utilizes the following third-party services:
- [**Vercel.com](http://vercel.com/):** Hosts the static website infrastructure.
- **Vercel Analytics (by [Vercel.com](http://vercel.com/)):** Collects anonymous usage analytics (e.g., daily visitor counts).
- **Scope:** Data collection is limited to the [TypingMind.com](http://typingmind.com/) website and *does not* apply to self-hosted versions.
- **Sentry (by [Sentry.io](http://sentry.io/)):** Collects anonymous crash logs and error reports.
- **Purpose:** Helps identify and fix bugs to improve application stability.
- [**LemonSqueezy.com](http://lemonsqueezy.com/):** Processes payments for premium features and license keys.
- **Data Handling:** TypingMind *does not* store any user payment data (credit card numbers, etc.). Payment processing is handled entirely by Lemon Squeezy.
- **Stripe:** Processes payments for premium features and license keys.
- **Data Handling:** TypingMind *does not* store any user payment data (credit card numbers, etc.). Payment processing is handled entirely by Stripe.
### 4. TypingMind Cloud
TypingMind Cloud is an optional, opt-in service providing features like sharing conversations via public links, cross-device chat synchronization, and data backup.
- **Opt-In Requirement:** Cloud features are only activated when a user explicitly chooses to use Share/Sync/Backup features and selects "TypingMind Cloud" as the provider. Users must explicitly agree to use the service.
- **Alternative Options:** Using TypingMind Cloud is not mandatory; users can utilize other methods or services for sharing and syncing data.
- **Data Storage (Sharing):** When sharing chats, plugins, or AI agents via a TypingMind Cloud link:
- The specific data being shared is stored on TypingMind Cloud servers.
- A secret, publicly accessible link is generated.
- Search engine indexing of these links is actively prevented.
- Only the shared items are stored; no API keys, license keys, or other private chats are uploaded.
- **Data Storage (Sync & Backup):** If Cloud Sync & Backup is enabled:
- **Data Stored:** All chats, prompts, messages, AI agents, and bookmarks are stored on TypingMind Cloud servers.
- **Security:** Communication with the server uses HTTPS encryption. Data is stored securely in cloud databases (provided by AWS) and is encrypted at rest.
- **Cookie Usage (Sync & Backup):** If Cloud Sync & Backup is enabled, a cookie is used to maintain the user's logged-in state for seamless synchronization.
- **Expiration:** The login cookie expires after 30 days of inactivity (no sync activity).
### 5. TypingMind via Setapp
This section applies specifically to users accessing TypingMind through the Setapp platform (https://setapp.com/apps/typingmind).
- **Application Version:** The Setapp version is identical to the standard [TypingMind.com](http://typingmind.com/) application.
- **Included Model (Setapp GPT-3.5):**
- **Benefit:** Setapp subscribers get free access to a GPT-3.5 model, displayed as "Setapp (GPT-3.5)" within the app.
- **No API Key Needed:** Users do not need their own OpenAI API key to use this specific model.
- **Proxy Mechanism:** Requests using the "Setapp (GPT-3.5)" model are proxied through TypingMind's and Setapp's servers.
- **Purpose:** The proxy secures the underlying API key used by Setapp and implements rate limiting for security and abuse prevention.
- **Data Logging:** TypingMind *does not* log or store chat data processed through this proxy.
- **Setapp Policy:** Users should refer to Setapp's own privacy policy for details on how Setapp handles data for this model.
- **Other Models (Non-Setapp):** When using any model *other* than "Setapp (GPT-3.5)," requests are sent directly from the user's local device to the respective AI provider (OpenAI, Anthropic, etc.) without TypingMind or Setapp proxy servers involved (following the standard data handling procedures described in sections 1 & 2).
### 6. General Policies
- **Commitment to Privacy:** User privacy is a priority for [TypingMind.com](http://typingmind.com/).
- **Data Collection:** Personal information is requested only when necessary to provide a service. Collection is fair, lawful, and transparent, with clear communication about purpose and usage.
- **Data Retention:** Information is retained only as long as needed to provide the requested service.
- **Data Protection:** Commercially acceptable security measures are employed to protect stored data against loss, theft, unauthorized access, disclosure, copying, use, or modification.
- **Data Sharing:** Personally identifying information is not shared publicly or with third parties, except when required by law.
- **External Links:** [TypingMind.com](http://typingmind.com/) may link to external sites not operated by TypingMind. TypingMind has no control over and assumes no responsibility for the content or privacy practices of these external sites.
- **User Choice:** Users are free to refuse requests for personal information, understanding that this may limit access to certain services.
- **Acceptance:** Continued use of the website is considered acceptance of these privacy practices.
- **Contact:** Questions about data handling can be directed to the TypingMind support team.
- **Effective Date:** This policy is effective as of June 30, 2023.
We at TypingMind (“we”, “us”, “our”) value your privacy and are committed to protecting your Personal Data, which is a responsibility that we take very seriously.
This Privacy Policy explains how TypingMind may use the Personal Data we collect when you visit our website [custom.typingmind.com](http://custom.typingmind.com/) and other sites we own and operate (“Website”), inquire about our products, or use our product (“product” or “TypingMind”). It also explains how we comply with EU legislation related to personal data protection (EU General Data Protection “GDPR”) and what your rights are under this legal framework.
**Data Controller:** Devuap LLC is the data controller of the services offered through this website. Our registered office is at Ste 1200, 1309 Coffeen Avenue, 82801 Sheridan, United States.
### 1. What type of Personal Data do we collect from you?
Personal Data means any information relating to you which allows us to identify you, either directly from that data or because we combine that information with other data about you.
When you use our Website, including to create an account with us and purchase products from us, or we interact with you in relation to our products and services, or subscribe to our marketing communications, you may provide us with your Personal Data, or we may obtain Personal Data about you.
We may process the following Personal Data:
- **Contact details and personal identifiers:** such as your name, email address, billing address, name of your chat instance, username;
- **Purchase data:** data on the products you have asked us to provide to you, such as date and time of purchase, customer number, purchase number, invoice number, tax identification number;
- **Records of your interactions with us:** such as any inquiries, information about purchases, questions you have, or content of any other interactions with us;
- **Internet information:** including your use of and movements through our Website, the date and time of your visit or use of our Website, passwords, personal identification numbers, IP addresses, geolocation, usernames, device information such as type of browser, operating system, platform, and search engine used and other IT system identifying information.
- **Professional data:** such as the company where you work
- **Account data:** such as your OpenAI API and Anthropic API key;
- **Your marketing preferences:** so that we know whether and how we should contact you.
You can stop receiving our marketing communications at any time, free of charge, through the methods displayed as part of any communication such as the unsubscribe link in our emails. Or further information on this please see the section below on Direct Marketing.
### 2. Where do we collect your Personal Data from?
We will collect Personal Data from several sources. These include the following:
- **Directly from you:** when you use our Website, purchase our products, create an account, contact us by email or communicate with us directly in some other way.
- **Our website:** provides us with information about how you use it and the devices that you use to connect to our Website. Like many other Websites, we use so-called “cookies”. Cookies are small text files that are stored on your device (laptop, tablet, smartphone, etc.) when you visit our Website.
- **Strictly Necessary Cookies:** We only use strictly necessary cookies. Necessary cookies are essential for the website to function properly. They enable core functionality such as security, network management, and accessibility. Essential cookies will be provided by us. These types of cookies are always enabled. You may disable these by changing your browser settings, but this may affect the functionality of our website. We process your Personal Data through strictly necessary cookies as it is necessary for the functionality and security of our website. It helps us prevent fraud, detect and mitigate potential security threats. This processing is based on our legitimate interest.
### 3. Why do we collect your Personal Data and on what legal basis?
We process your Personal Data for several main purposes, each with a specific legal basis:
- **Providing our website:** To ensure our website functions correctly, we process your IP address, browser type, device ID, and geolocation based on our legitimate interest.
- **Improving security and monitoring:** For website security, bug tracking, and security monitoring, we process your IP address, visit timestamps, and device information based on our legitimate interest in securing our systems.
- **Invoicing and payment:** To invoice you and receive payments, we process your name, email address, billing address, customer number, invoice number, tax ID, and other payment data. This is necessary to fulfill our contract with you.
- **Account creation and management:** To create and manage your account, we process your name, email address, and chat instance name. This is necessary to fulfil our contract with you.
- **Marketing relevant products:** To inform you about products potentially of interest, we process your name, email address, and marketing preferences based on our legitimate interest. If legitimate interest is not applicable, we will obtain your consent.
- **Newsletters:** To send you newsletters, we process your name, email address, and marketing preferences, but only if you have given us your explicit consent.
- **Handling inquiries:** To deal with your inquiries and communications, we process your name and email address. This is necessary to fulfil our contract with you.
- **Legal and regulatory compliance:** To comply with legal and regulatory requirements, we process contact details, invoice numbers, and tax identification numbers based on our legal obligations.
- **Record keeping:** To store records relating to you and our business operations, we process all the personal data we collect. This serves multiple bases: managing and fulfilling our contract with you, complying with legal/regulatory obligations, and pursuing our legitimate interest in maintaining proper records.
Some of your Personal Data may be required due to legal, contractual, or other obligations. Failure to provide this data may impact our ability to fulfil our contract with you or comply with relevant legal obligations. For other Personal Data, whilst you may not be under an obligation to provide it to us, if you do not provide it, we may not be able to properly perform our services for you. Without your Personal Data, you may be unable to complete purchases or register an account on our Website.
Providing Personal Data for marketing and newsletters is optional. Refusal to provide this data has no negative consequences but means that we cannot offer personalised marketing messages. If you gave us your consent for marketing purposes, you can revoke your consent or object the processing at any time by utilizing the following website: https://prighter.com/q/18105413056 or by following the information in section “Contact Information”.
### 4. Who we share your Personal Data with?
In order to operate our Website and provide you with the products you have ordered we may need to share your Personal Data with third parties. This includes sharing your Personal Data companies engaged by us to manage our relationship with you and provide you the services described above.
We may share your personal data with the following recipients:
- **Sub-contractors:** such as our service technology providers, cloud service providers, payment service providers, and other sub-contractors.
We do not disclose Personal Data to anyone else except as set out above unless we have your consent, or we are legally obliged to do so. These recipients will only process your Personal Data to perform tasks and duties on our behalf and in compliance with this Privacy Policy and governing data protection laws.
Our website may link to external sites that are not operated by us. Please be aware that we have no control over the content and practices of these sites and cannot accept responsibility or liability for their respective privacy policies.
### 5. Direct Marketing
From time to time, we may contact you by email with information about products they believe you may be interested in.
Marketing emails and newsletters will only be sent to you based on the preferences you set when you tell us that you wish to receive marketing related messages or when you have purchased similar products from us previously.
You can opt out any time if you do not wish to receive any marketing messages by clicking on the unsubscribe link in any marketing email you receive to unsubscribe from future marketing communications.
### 6. International data transfers
In the course of our operations, it may be necessary to transfer your Personal Data to recipients located outside the European Union (EU), European Economic Area (EEA). These transfers may be to our service providers who are located in regions with differing data protection laws than those in your country. When transferring your Personal Data internationally we implement appropriate safeguards to ensure the security and confidentiality of your data. These safeguards may include for example Standard Contractual Clauses (SCCs) approved by the European Commission or applicable supervisory authority.
### 7. How long do we keep Personal Data for?
Generally, we will retain your Personal Data for as long as we need it for the purposes for which it was collected. The duration for which we retain your Personal Data will differ depending on the type of information and the reason why we collected it from you. However, in some cases Personal Data may be retained on a long-term basis: for example, Personal Data that we need to retain for legal purposes will normally be retained in accordance with usual commercial practice and regulatory requirements.
In addition, we may be allowed to retain Personal Data whenever you have given consent to such processing (e.g. subscription to our newsletter), as long as such consent is not withdrawn.
### 8. Data security
We take the security of your information very seriously and only handle Personal Data as permitted by data protection regulations. We use a variety of technical and organizational measures to help protect your Personal Data from unauthorized access, disclosure, modification, loss or destruction in accordance with applicable data protection laws. When handling Personal Data, our employees are obliged to comply with the regulations of the EU GDPR.
### 9. Your rights in relation to your Personal Data
You have the following rights in relation to your Personal Data under GDPR:
- **Right of Access:** you have the right to be informed about how we are using your Personal Data and the right to access that data that we hold about you.
- **Right to Erasure or "Right to be Forgotten":** you have the right to ask us to delete your Personal Data provided that there are no valid grounds for us to keep it, for example we may have to keep some or all of the Personal Data to comply with legal obligation or in respect of any legal claims.
- **Right to Data Portability:** you have the right to receive the Personal Data you have provided to us in a digital format or in certain circumstances and where technically feasible the right to ask us to transmit the data to another organization.
- **Right of Rectification:** you have the right to ask us to amend the Personal Data that we hold about you where believe it is inaccurate or incomplete.
- **Right to Object:** in certain circumstances, you have the right to object to the processing of your Personal Data and to ask us to block, erase and restrict our use of your personal data.
- **Automated Decision Making:** we may process your Personal Data by solely automated means (without human intervention), including for profiling. Where such processing may have a legal or similarly significant effect on you, you have the right not to remain subject to any decisions based on such automatic processing, except as otherwise provided by law. You have the right to understand when and how automated decisions are made about you, and the factors involved and you have the right to challenge these decisions, request human intervention, express your point of view, and seek a review of the decision.
- **Right to Withdraw Consent or Right of Opposition:** if you have provided your consent to the collection, processing and transfer of your personal data, you have the right to fully or partly withdraw your consent. Once we have received notification that you have withdrawn your consent, we will no longer process your information for the purpose(s) to which you originally consented unless there is another legal ground for the processing.
- **Right of Limitation:** you have the right to request the limitation of the Processing of your Personal Data, in the form of: (i) suspension of Processing or (ii) limitation of the scope of Processing to certain categories of Personal Data or purposes of Processing.
- **Right to complain:** you have the right to complain to the supervisory authority, in addition to us.
The period for handling a request is 30 days unless it is a particularly complex request.
Once our specified retention period has expires we shall delete the relevant Personal Data. Therefore, the right to access, the right to erasure, the right to rectification and the right to data portability cannot be enforced after the expiration of such retention period.
### 10. Processing data in relation to children
Our services are not intended for and shall not be used by individuals under the age of 16. TypingMind does not knowingly collect Personal Data from persons under 16 or allow them to register. If it comes to our attention that we have collected or processed Personal Data from such a person, we may delete this information without notice. If you have reason to believe that this has occurred, please contact us using the following link: https://prighter.com/q/18105413056
### 11. Changes to our data protection provisions
We may need to make changes to this Privacy Policy to ensure that it complies with current legal requirements or to implement changes to the services detailed in the Privacy Policy, e.g., when introducing new services and products. In this case, your future visits to our Website will be subject to the updated Privacy Policy.
### 12. Contact Information
If you have any questions or comments about this Privacy Policy, the ways in which we collect and use your Personal Data, or your choices and rights regarding such use please do not hesitate to contact us by:
- **Email:** [support@devuap.com](mailto:support@devuap.com)
- **Post:** Ste 1200, 1309 Coffeen Avenue, 82801 Sheridan, United States
**Data Subject Requests from EU Data Subjects according to the GDPR:**
We value your Data Subject Rights under EU GDPR and have therefore appointed Prighter as representative according to Art 27 EU GDPR. We provide you with an easy way to submit a privacy related request like a request to access or erase your personal data by visiting: https://app.prighter.com/portal/18105413056
**Last Updated:** 20 December 2024
## Terms of Service for [TypingMind.com](http://typingmind.com/) & Self-host Static App
This section outlines the terms and conditions governing the use of [TypingMind.com](http://typingmind.com/) (the web application) and the self-hosted static app version, specifically for users who have purchased a license key.
### 1. License Grant and Scope
- **Lifetime License:** Your purchased license key grants you a lifetime license to use [TypingMind.com](http://typingmind.com/) and the self-hosted static app. The license does not expire.
- **Usage:** The license allows you to use the software as long as you wish.
- **Future Updates:**
- By default, all future upgrades and new features for [TypingMind.com](http://typingmind.com/) are provided free of charge to license holders.
- However, TypingMind reserves the right to potentially offer significant future upgrades as separate purchases if deemed reasonable.
- **Self-Hosting:**
- License holders can download a self-hostable version of the static app.
- This allows users to host the application on their own servers, ensuring continued access even if [TypingMind.com](http://typingmind.com/) ceases operations.
- The self-hosted app works independently and requires no backend server from TypingMind.
### 2. License Key Usage and Restrictions
- **No Sharing:** You are strictly prohibited from sharing your license key with anyone else.
- **Device Limit:**
- Each license key can be actively used on a maximum of **5 devices** simultaneously. This limit is generally sufficient for a single user.
- A "device" is counted based on each instance where the license key is entered and chat history is stored for continuous use (e.g., Chrome on a laptop is one device, Safari on a phone is another). Using different browsers on the same machine counts as separate devices.
- **Managing Devices:**
- If you reach the 5-device limit and need to use the license on a new device, you must first unlink the license key from a previous device using the License Manager. Access to the previous device is not required to unlink it.
- This limit exists to prevent license abuse and piracy.
- **Adding More Devices:** If you need to use the license on more than 5 devices concurrently, you must either purchase additional license keys or buy additional seats for your existing license key.
### 3. Refund Policy
- **14-Day Guarantee:** All purchases are refundable within 14 days of the purchase date, no questions asked.
- **Requesting a Refund:** If unsatisfied, contact TypingMind support within the 14-day period to request a refund.
### 4. Service Availability and Feature Changes
- **Feature Modifications:** [TypingMind.com](http://typingmind.com/)'s features may change over time. This includes adding or removing features, changing the features available in free/paid plans, or potentially open source some parts or all of the app source code. Such changes do not qualify for refunds outside the initial 14-day period (unless your purchase is still within the 14-day refund period).
- **Service Uptime:** While TypingMind strives to maintain service availability for [TypingMind.com](http://typingmind.com/), uptime is not guaranteed. Events like natural disasters, changes in ownership, dependency outages, or other uncontrollable factors may impact service. No refunds will be provided for service unavailability outside the 14-day refund period.
- **Self-Hosting Option:** Users concerned about service availability can utilize the self-hosting option for full control.
### 5. Legal Information
- **Legal Entity:** [TypingMind.com](http://typingmind.com/) is a product of Devuap LLC.
- **Registered Address:** Ste 1200, 1309 Coffeen Avenue, Sheridan, WY, Sheridan, US, 82801.
### 6. Terms Specific to TypingMind Cloud (for License Users)
TypingMind Cloud is an **optional, opt-in service** available to [TypingMind.com](http://typingmind.com/) users for sharing, syncing, and backing up chat data.
- **Activation:** TypingMind Cloud is only used when you explicitly select it for Share/Sync/Backup features and agree to its terms.
- **Free Tier:** A free tier is available, offering **10 MB** of data storage per user.
- License key holders automatically qualify for this 10 MB free storage limit.
- **Availability & Data Integrity:** Service availability is not guaranteed, and TypingMind does not guarantee data will never be lost. Users are encouraged to maintain their own backups.
- **Paid Upgrades:** Users can purchase subscriptions to increase their cloud storage limit beyond the free 50 MB. Pricing details are available within the app.
- **Bandwidth Policy:** A fair use bandwidth policy applies (typically 10GB/month per 100MB storage). Contact support if higher bandwidth is needed.
- **Not Mandatory:** Using TypingMind Cloud is optional; other sharing/syncing methods can be used.
- **Self-Host Integration:** Users of the self-hosted app can still *choose* to use TypingMind Cloud for sync/backup. If selected, data will be sent to `cloud.typingmind.com`. The TypingMind Cloud *service itself* is not part of the self-host download.
### 7. General Terms and Conditions (Applies to [TypingMind.com](http://typingmind.com/) & Self-host App)
1. **Introduction:** By using [typingmind.com](http://typingmind.com/), you accept these terms and conditions.
2. **Agreement:** This Agreement begins when you first use the [typingmind.com](http://typingmind.com/) application.
3. **Premium Features:** A purchased license key unlocks premium features detailed on the pricing page.
4. **Product Updates:** By using [typingmind.com](http://typingmind.com/), you agree to receive important product updates via email (linked to your payment or registration email). You can unsubscribe anytime.
5. **Disclaimer:** [TypingMind.com](http://typingmind.com/) is provided "as is." It's not warranted that it will meet all requirements or be error-free. All implied warranties are excluded to the extent permitted by law. This doesn't affect statutory rights.
6. **Warranties and Limitation of Liability:** TypingMind provides no warranties regarding the software's quality or fitness for purpose. TypingMind is not liable for indirect, special, or consequential losses, damages, costs, or claims (including loss of profit, data corruption, business interruption) arising from the service, except where liability cannot be excluded by law. Liability is limited to the amount actually paid by the user for the services or software. Users release TypingMind from obligations or claims exceeding this limit. Liability limitations do not apply in cases of fraudulent representation. Delays or failures due to causes beyond reasonable control do not constitute a breach of contract.
7. **Governing Law:** This Agreement is governed by the laws of Wyoming, United States.
8. **Relationship:** No joint venture, partnership, employment, or agency relationship exists between the user and [TypingMind.com](http://typingmind.com/). Users agree not to represent themselves as agents or employees of [TypingMind.com](http://typingmind.com/).
9. **Last Updated:** December 5, 2024.
## Terms of Service for TypingMind for Teams
This section outlines the terms and conditions governing the use of the TypingMind for Teams service (accessed via [custom.typingmind.com](http://custom.typingmind.com/) or a custom domain) and the associated self-hosted instances.
**(Note: For the License Version/Personal Use terms, see ``)**
TypingMind Team is a software as a service that allows you to create an AI chat portal for your team.
Glossary: "The product" means the TypingMind Custom product; "Chat Instance" means the AI Chat interface you created when using the product. "You”/”the admin" the people who create a new chat instance and have the permission to config and customize the chat instance; "Your users" means the people who uses the Chat instance, sending messages and use the chat features on your chat instance, this could be your teammate, your users, your community members, etc.
# **For Cloud-hosted instances**
- All purchases are non-refundable. If you don’t want to be charged, please cancel your subscription within the 14-days free trial.
- The subscription fee for the hosted version is fixed and includes access for 5 users. Additional users can be added at a set one-time licensing fee per user. For the most current pricing, please contact sales or visit [**https://custom.typingmind.com/pricing**](https://custom.typingmind.com/pricing).
- Upon subscribing to TypingMind Custom, including the Early Access version, your account will be immediately charged for the first month. Subsequent charges will occur on the same day of each following month.
- By becoming a subscriber of TypingMind Custom, including the Early Access version, you acknowledge that you are acquiring the product in its present form. You understand the product is under continuous development and its features may change. Furthermore, there may be bugs or errors, and you agree to report such issues to us.
- Once users are added to your chat instance via the Admin Panel, they can use the interface as they would on [**TypingMind.com**](http://typingmind.com/). Every user will have individual chat history, custom prompts, AI characters, and bookmarks stored on their device. Users can log into your chat instance from any device they want.
- The product is designed for a finite number of user seats. If you need to accommodate more users, you will need to purchase additional user seat licenses. One seat is available for only one user (person), this person can use the product on multiple devices. You are not allowed to share a seat with multiple people.
- Advertised upcoming features or items on our product roadmap may not necessarily be included in the final product. Early subscribers acknowledging that they benefit from a discounted price, accept the product as-is.
- As we add more features and services, we anticipate a rise in the product's price. Generally, price changes will only affect new customers, while current customers will continue with their initial subscription price. However, there may be circumstances where a price change is necessary for all customers.
- We aim to maintain a 24/7 uptime of the hosted version of the product, although 100% availability cannot be guaranteed. In the event of scheduled downtime for maintenance or the like, we will attempt to notify you in advance.
# **For Self-hosted instances**
- All purchases are final and not refundable, unless specified in the custom contract we have with you.
- You will be provided with the source code and/or installation package for self-hosting the TypingMind Custom at your own servers or infrastructure.
- Upon purchase, you will receive a self-host "Instance Key". This key is required during the setup process and will be used to validate your purchase. An Instance Key can be used on exactly one self-host instance. An "instance" is defined as one setup of the self-host software, this means one chat interface, with the same set of configurations: name, tagline, logo, prompt library, and other data associated with the chat interface. You can buy multiple instance keys to setup multiple chat instances on your infrastructure.
- You will be responsible for setting up, managing, and maintaining your own hosting environment. This includes, but is not limited to, installing and updating software, monitoring server performance, handling backups, and managing server security.
- While we provide the option for self-hosting, we do not provide free technical support for server setup or maintenance. However, we offer a separate support package for customers needing help with their server setup and maintenance.
- Payment for the self-hosted version of the product is required in advance and covers a minimum term of one year from the date of purchase. After this one-year period, you have the option to renew your subscription to continue receiving updates and support. If you choose not to renew, you may continue using the latest version of the product that you have indefinitely, but you will not receive further updates or support from us after your subscription ends.
- For self-hosted instances, we offer standard customer and technical support through our official support channel at [**support@typingmind.com**](mailto:support@typingmind.com). This includes basic help with installation, configuration, troubleshooting, and product related questions. If you require a higher level of support and SLA/SLO , we offer premium support packages that can be purchased separately.
- The source code or installation package that you receive for self-hosting the AI chat instance is exclusively for your use and should not be shared, sold, modified, or distributed to third parties without our prior consent.
- Just like with the hosted version, the product is sold as-is and may still be in continuous development. By purchasing a self-hosted license you understand and accept that all features of the product may change in the future and the product may contain bugs and errors.
- The product is designed for a finite number of user seats. If you need to accommodate more users, you will need to purchase additional user seat licenses. One seat is available for only one user (person), this person can use the product on multiple devices. You are not allowed to share a seat with multiple people.
- The self-hosted versions of TypingMind Custom rely on external services, such as OpenAI API and Anthropic API, for some of their functionalities. While we strive to ensure the seamless integration of these services, we do not control these third-party services, and hence, cannot guarantee their availability or functionality. We provide no warranty or assurance regarding the uninterrupted service of external dependencies. In case of any disruptions, your experience with the self-hosted versions of TypingMind Custom may be affected. It's suggested to monitor the status of these third-party services independently and adjust your usage of the product accordingly.
- **Update Responsibility**: You, as the self-hosted user, are responsible for updating the software with new patches or versions released by us. We are not liable for issues arising from the use of outdated versions.
- **Indemnification**: You agree to indemnify, defend, and hold harmless TypingMind Custom and its licensees, affiliates, officers, employees, and agents from and against any claims, liabilities, damages, judgments, losses, costs, expenses, or fees, including reasonable attorneys' fees, arising out of or relating to your use or misuse of the software or any violation of these terms.
- **Alteration and Modification**: Any unauthorized alterations, modifications, or use of the software beyond its intended purpose, including hacking or misuse, negates our responsibility for any damage, loss, or legal complications that may arise as a result.
- **Reverse Engineering and Source Code Usage**: You agree not to attempt to reverse engineer the software or exploit the provided source code in any manner not explicitly allowed by these terms.
- **Security**: You, as a self-hosting user, are solely responsible for securing the self-hosted instance of TypingMind Custom, protecting the stored data, and ensuring compliance with applicable privacy laws.
- **Licensing Restrictions**: The self-hosted software should only be used in accordance with these terms and its recommended usage. Any sublicensing, resale, or redistribution of the software is prohibited unless explicitly agreed upon by us in writing.
# **General terms**
- **Privacy Policy**: By using our product, you agree to our Privacy Policy, which outlines how we collect, store, use, and protect your information. You can view our Privacy Policy at [**https://custom.typingmind.com/privacy**](https://custom.typingmind.com/privacy).
- **Intellectual Property**: All intellectual property rights of the TypingMind Custom software, its design, logos, text, graphics, and all software compilations and underlying source code shall remain our property. Users are not permitted to use or reproduce our trademarks, logos or brand names without our prior written consent.
- **Intellectual Property of User Generated Content**: You retain all ownership rights to the content generated by you on our platform. By using our product, you grant TypingMind Custom a non-exclusive, worldwide, royalty-free right to use, copy, store, transmit, distribute, display, and make derivative works of this content, solely to the extent and for the purpose of providing the product and services to you and your users. We do not claim any ownership rights to your content and will not use your content for any purpose other than as described above without your prior consent.
- **User Obligations**: As a user, you agree to use our product lawfully and not to use it for any illicit activities. You also agree not to try and disrupt or manipulate our product, or to harm other users.
- **Termination**: We reserve the right to suspend or terminate your access to the service in case of any breach of these terms.
- **Modification of Terms**: We reserve the right to alter these terms of service at our discretion. We will notify you of any major changes, and your continued use of our service after such modifications will constitute your acceptance of the modified terms.
- **Product usage:** By using [**typingmind.com**](http://typingmind.com/), you agree to receive important product updates from [**TypingMind.com**](http://typingmind.com/) via the email linked with your payment account or the email you used to register your account. You can opt-out of this product updates anytime by clicking to the "Unsubscribe" link at the bottom of each email. We only send important product updates.
- **Disclaimer:** It is not warranted that [**typingmind.com**](http://typingmind.com/) will meet your requirements or that its operation will be uninterrupted or error free. All express and implied warranties or conditions not stated in this Agreement (including without limitation, loss of profits, loss or corruption of data, business interruption or loss of contracts), so far as such exclusion or disclaimer is permitted under the applicable law are excluded and expressly disclaimed. This Agreement does not affect your statutory rights.
- **Warranties and Limitation of Liability:** [**typingmind.com**](http://typingmind.com/) does not give any warranty, guarantee or other term as to the quality, fitness for purpose or otherwise of the software. [**typingmind.com**](http://typingmind.com/) shall not be liable to you by reason of any representation (unless fraudulent), or any implied warranty, condition or other term, or any duty at common law, for any loss of profit or any indirect, special or consequential loss, damage, costs, expenses or other claims (whether caused by [**typingmind.com**](http://typingmind.com/)'s negligence or the negligence of its servants or agents or otherwise) which arise out of or in connection with the provision of any goods or services by [**typingmind.com**](http://typingmind.com/). [**typingmind.com**](http://typingmind.com/) shall not be liable or deemed to be in breach of contract by reason of any delay in performing, or failure to perform, any of its obligations if the delay or failure was due to any cause beyond its reasonable control. Notwithstanding contrary clauses in this Agreement, in the event that [**typingmind.com**](http://typingmind.com/) are deemed liable to you for breach of this Agreement, you agree that [**typingmind.com**](http://typingmind.com/)'s liability is limited to the amount actually paid by you for your services or software, which amount calculated in reliance upon this clause. You hereby release [**typingmind.com**](http://typingmind.com/) from any and all obligations, liabilities and claims in excess of this limitation.
- **General Terms and Law:** This Agreement is governed by the laws of Wyoming, United States. You acknowledge that no joint venture, partnership, employment, or agency relationship exists between you and [**typingmind.com**](http://typingmind.com/) as a result of your use of these services. You agree not to hold yourself out as a representative, agent or employee of [**typingmind.com**](http://typingmind.com/). You agree that [**typingmind.com**](http://typingmind.com/) will not be liable by reason of any representation, act or omission to act by you.
Last Updated: 11 Jun 2023
We take our responsibility to protect the data of our customers very seriously. Europe’s General Data Protection Regulation (GDPR) came into effect on 25 May 2018. This broad reaching regulation is designed to ensure the privacy, security, and confidentiality of data.
## **Terms of Service**
Please refer to our [Terms of Service](https://custom.typingmind.com/terms-of-service) to learn more about our responsibilities towards our users and their data, and reiterate our commitment towards transparency of our practices.
## **Privacy Policy**
We have clearly outlined in our Privacy Policy the ways we collect, use, process and share personal information. Our Privacy Policy outlines how you can exercise your rights to any personal data that you share with us, and we will always respect your choice to receive or opt-out from communications with us. More details can be found in our [Privacy Policy](https://custom.typingmind.com/privacy).
You can always submit a request to us to review, edit, or delete your Personal Information please contact us by submitting an support ticket if you are a current user.
## **Data Processing Agreement**
You can read the Data Processing Agreement [here](https://custom.typingmind.com/data-processing-agreement).
### Data Processing Agreement (DPA) for TypingMind for Teams
For customers requiring a formal agreement outlining the processing of personal data in compliance with regulations like GDPR, TypingMind provides a Data Processing Agreement (DPA).
**View the DPA here:** [https://custom.typingmind.com/data-processing-agreement](https://custom.typingmind.com/data-processing-agreement)
This agreement details the roles, responsibilities, and technical and organizational measures related to the processing of personal data within the TypingMind for Teams service.
## Data Usage and Model Training Policy
**TypingMind's Core Policy:**
- **All conversations processed through the TypingMind system (both the licensed personal version and the Team version) are treated as strictly confidential and are never used by TypingMind for training any AI models.**
**Provider-Specific Policies:**
TypingMind primarily provides the interface and management system for interacting with various external AI Service Providers. Therefore, the specific policies regarding data usage and model training for your conversations also depend heavily on the AI provider(s) you choose to use via TypingMind.
Below is a summary of the policies for the major AI providers commonly used with TypingMind. **It is crucial to consult the official privacy policies of each provider for the most accurate and up-to-date information.**
### 1. OpenAI (Models like GPT-4, GPT-3.5)
- **No Training on API Data:** OpenAI explicitly states that data submitted through their API is **not** used to train their models.
- **Data Retention for Abuse Monitoring:** OpenAI retains API inputs and outputs for up to **30 days**. This retention is solely for identifying potential abuse and ensuring service operation.
- **Data Deletion:** After 30 days, the data is deleted unless OpenAI is legally required to retain it for a longer period.
- **Human Review:** Data might be reviewed by authorized OpenAI employees strictly for abuse monitoring or legal compliance purposes, but **not** for training models.
- **Further Details:** [OpenAI Enterprise Privacy Policy](https://openai.com/enterprise-privacy/)
### 2. Anthropic (Claude Models)
- **No Training on API Data (Default):** Anthropic does **not** use data submitted via the Claude API for training their models, unless there is a specific agreement in place with the customer stating otherwise.
- **Data Retention:** Anthropic retains API data on their backend systems for up to **30 days**, unless a different retention period is contractually agreed upon.
- **Further Details:**
- [Claude API Privacy and Legal Help Center](https://support.anthropic.com/en/collections/4078534-privacy-legal)
- [Anthropic Privacy Policy](https://www.anthropic.com/legal/privacy)
### 3. Google (Gemini Models)
- **Paid Services:** For **paid** Google AI services (like those typically accessed via API keys integrated into TypingMind), Google **does not** use your prompts or responses for model training.
- **Unpaid Services:** For **unpaid** Google AI services (like free tiers or consumer products), Google *may* use submitted data to improve their products and services, including machine learning technologies.
- **Human Review:** For quality improvement, human reviewers *may* read, annotate, and process API inputs and outputs. Google states that privacy protections are implemented to disconnect this data from your Google Account and other identifiers before human review occurs.
- **Caching:** Google may cache inputs and outputs for Gemini models for up to **24 hours** to speed up responses to subsequent, similar prompts from the *same customer*.
- **Further Details:**
- [Google AI/ML Generative Language API Additional Terms of Service](https://ai.google.dev/gemini-api/terms)
- [Vertex AI / Gemini API FAQ (See Data Governance sections)](https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/multimodal-faqs)
### Important Note for Other Providers:
If you connect TypingMind to any other AI Service Provider (including custom models, open-source models run locally or via other platforms), you must consult the specific privacy notice and data usage policy of that provider. TypingMind acts solely as the platform for interaction; the data handling practices of the underlying AI model provider are paramount.
## Data Privacy and Security
TypingMind places a high priority on data privacy and security for its users, particularly within the TypingMind Team offering.
### 1. Compliance and Certifications
- **SOC 2 Type 2 Certified:** Demonstrates commitment to security, availability, processing integrity, confidentiality, and privacy.
- **GDPR Compliant:** Adheres to the General Data Protection Regulation for users in the European Union.
- **HIPAA Compliant:** Meets the requirements of the Health Insurance Portability and Accountability Act for handling protected health information (relevant for specific use cases).
- **Trust Center:** Comprehensive security-related documents and information are available at TypingMind's Trust Center: https://trust.typingmind.com/
### 2. TypingMind Team Overview
- **Core Purpose:** Provides a secure and private interface for teams to interact with AI models like ChatGPT, Claude, Gemini, etc.
- **Workflow:**
1. **Setup:** Admins create a new team chat instance with custom branding.
2. **Connect:** Connect the instance to preferred AI service providers using API keys.
3. **Customize:** Tailor the instance (custom domain, prompts, plugins, etc.).
4. **Share:** Distribute the chat interface internally to the team.
5. **Usage:** Team members utilize the AI via the secure interface.
### 3. Deployment Options: Cloud-host vs. Self-host
- **Cloud-host:**
- **Platform:** Hosted on TypingMind's managed cloud infrastructure via [https://custom.typingmind.com](https://custom.typingmind.com/).
- **Data Centers:** Options available in the US (US West) and EU (Frankfurt) to meet data residency needs.
- **Self-host:**
- **Platform:** Allows teams to run the TypingMind Team software entirely on their own servers.
- **Control:** Provides maximum control over the infrastructure and data environment.
- **More Information:** Detailed self-hosting information available at https://docs.typingmind.com/typingmind-custom/getting-started/self-host-deployment-guide.
### 4. Key Definitions
- **Chat Instance:** A distinct, isolated environment for a single team. Contains all team-specific data: members, chats, prompts, plugins, preferences, themes, etc. Multiple instances can be created.
- **Admin Users:** Individuals who create, configure, and manage chat instances via the Admin Panel. They invite end users and customize the instance settings (branding, API keys, features). An instance can have multiple admins.
- **End Users:** Team members invited by admins (or self-registered, if allowed) who use the chat interface for AI interactions. Their access to features is determined by admin configurations.
- **The System:** Refers specifically to the TypingMind Team software infrastructure (app server, database, etc.).
- **AI Service (AI Provider):** The third-party service hosting the actual AI model (e.g., OpenAI, Anthropic, Google). TypingMind Team connects to these via API keys provided by the admin.
- **Knowledge Database:** TypingMind's proprietary system used for processing and managing training data uploaded by the team (e.g., documents). It handles tokenization, chunking, and querying via a vector database to support Retrieval-Augmented Generation (RAG).
### 5. System Architecture (Self-host - Minimal Setup)
- **Core Components:**
- **App Server (NodeJS):** Receives and processes user requests and data.
- **App Database (MySQL):** Securely stores all instance data (users, chats, prompts, etc.).
- **Optional Components:** Proxy servers, custom DNS, firewalls, backup systems, load balancers can be added for enhanced security and availability.
- **Exclusions:** The self-hosted system *does not* include the Large Language Model (LLM) itself. Admins must connect to an external AI Service Provider (like OpenAI, Anthropic) or their own privately hosted LLM.
### 6. Types of Data Processed
- **Email:** Collected during login/invitation for user authentication. Not required if SSO or other external authentication methods are configured.
- **Chat Messages:** User prompts and AI responses generated during conversations.
- **Prompts, AI Agents, Plugins:** User-created templates, custom agents, and plugin configurations saved for reuse.
- **User Preferences:** UI settings like theme (dark/light mode), font size, bookmarks, tags, etc.
- **Training Data:** Documents (PDF, CSV, DOCX, etc.) uploaded by users or data connected from sources like Notion, Google Drive, GitHub for the Knowledge Base feature.
### 7. Data Flow
### a. Self-host Version (Minimal Setup)
- **Email:** User Input (Login/Invite) → App Server → App Database (Storage).
- **Chat Messages:** User Input → App Server → AI Service Provider (for processing) → App Server (receives response) → App Database (Storage).
- **Prompts, AI Agents, Plugins:** User Creation → App Server → App Database (Storage). (May be sent to AI Service Provider when used in a chat).
- **User Preferences:** User Action → App Server → App Database (Storage).
- **Training Data:** User Upload/Connection → Knowledge Database (Processing/Chunking) → Knowledge Database (Storage).
- **Message Processing ("Prepare message" step):** Before sending a user's message to the AI Service Provider, the App Server performs several processing steps:
1. **RAG:** Retrieves relevant data chunks from the Knowledge Database based on the chat context.
2. **Context Building:** Combines the user message with retrieved data, system prompts, AI Agent instructions, few-shot examples, etc.
3. **Prompt Engineering:** Applies proprietary techniques to optimize the prompt for better AI performance and response quality.
4. **Sending:** Transmits the final, processed prompt to the designated AI Service Provider.
### b. Cloud-host Version
- **Data Flow:** Identical to the self-host version.
- **Underlying Services:**
- **App Server:** [Vercel.com](http://vercel.com/)
- **App Database:** Amazon Web Services (AWS)
- **Knowledge Database:** TypingMind In-house System (proprietary)
- **Supporting Infrastructure:**
- **DNS:** [Cloudflare.com](http://cloudflare.com/)
- **Logging:** [Axiom.co](http://axiom.co/)
### 8. Encryption
- **In Transit:** All communication between the user's browser, TypingMind servers (cloud or self-hosted), and external AI Service Providers is encrypted using HTTPS.
- **At Rest (Self-host):** Disk-level encryption for the App Database is *highly recommended* to protect stored data. Configuration is the responsibility of the self-hosting team.
- **At Rest (Cloud-host):** Data stored in the App Database (AWS) and Knowledge Database is encrypted at rest using mechanisms provided by the hosting provider (AWS), typically AES encryption.
- **No End-to-End Encryption (E2EE):** TypingMind does *not* offer E2EE for chat messages. This means that while data is secure during transmission and storage, the TypingMind App Server and the connected AI Service Provider *can* access the content of the messages. This access is necessary for:
- Processing messages (RAG, context building).
- Sending prompts to the AI Service Provider.
- Storing chat history.
- Enabling features like chat logs for admins (if enabled).
### 9. External Services Considerations
- **Third-Party Policies:** When using external services (including AI Service Providers or other integrations) in conjunction with TypingMind Team (especially self-hosted), administrators must review the privacy policies and security practices of those external services.
- **AI Provider Data Usage:**
- **OpenAI & Anthropic (via API):** Guarantee that data sent via their official APIs (as used by TypingMind Team) is *not* used for training their models.
- **Other Providers:** Always verify the data usage and privacy policies of any other AI provider connected to TypingMind Team.
- **Azure OpenAI:** Recommended for privacy-sensitive deployments, especially with self-hosting, as it allows deployment within a private network and offers enterprise-grade security features. It integrates seamlessly with TypingMind Team.
### 10. Common Self-host Setups (Conceptual)
- **Setup 1: Self-host with External LLMs:** TypingMind App Server and Database hosted internally, connecting out to external AI providers (OpenAI, Anthropic, etc.).
- **Setup 2: Self-host with Internal LLMs:** Both TypingMind components *and* the LLM itself are hosted within the organization's private infrastructure.
## Model Context Protocol (MCP)
Model Context Protocol (MCP) is a [**standard protocol](https://modelcontextprotocol.io/)** created by Anthropic to allow LLMs to connect with external tools and services.
TypingMind supports connecting to all MCP servers that follow the standard protocol. You can connect TypingMind to remote MCP servers via streaming HTTP or servers that run locally via a terminal command like `npx`, `uvx`, or Docker.
Some available MCP Servers: https://github.com/modelcontextprotocol/servers
## Setting up MCP for License version
### 1. Accessing the MCP Connectors Interface
1. **Navigate to the "Plugins" Section:** In the left sidebar, click the "Plugins" icon.
2. **Select the "MCP Connectors" Tab:** At the top of the Plugin management interface, click the tab labeled "MCP connectors."
### 2. MCP Connectors Store View
This view serves as the marketplace and management starting point for MCP-compatible tools.
- **Page Title:** "MCP Connectors." (or MCP store for Team version)
- **Search Bar:** An input field labeled "Search MCP" allows users to find specific connectors.
- **Connector Cards (Store):** Displays available MCP tools (e.g., Amplitude, Cloudflare Developer Platform, Hugging Face, Linear, Mermaid Chart, [monday.com](http://monday.com/), Netlify, Notion, PayPal, Sentry, Stripe, Intercom, Asana, Atlassian, Canva).
- Each card displays the tool's **Icon**, **Name**, **Description** (e.g., "Search, access, and get insights on your..." for Amplitude), and an **"Install"** button.
- **Install button:** click on Install button to install the available MCP servers.
- **"+ Add connector" Button:** A prominent blue button located on the top right. Clicking this initiates the process for manually adding a custom MCP Server URL (see next section).
### 2. Adding a Custom MCP Server URL (via "+ Add connector")
If you don't find the service you need in the MCP store, you can add it manually by clicking **Add custom connector** and filling out the info. Check the documentation from the service provider to get their MCP server URL and relevant info.
Clicking the "+ Add connector" button opens the **"Add Custom MCP Server URL"** modal/page.
- **Title:** "Add Custom MCP Server URL."
- **Server URL (Required):** The external endpoint URL of the custom MCP server being added.
- **Example:** `https://ai.todoist.net/mcp`.
- **Connection Name:** name for the connection that will appear in the installed list.
- **Description (Markdown supported):** detailed explanation of the MCP connection's functionality.
- **Icon:** allow users to upload a custom image or provide a URL for the connection's icon.
- **Advanced options (Collapsible Section):** This section manages authentication and network details.
- **Custom HTTP headers (Toggle Switch):**
- Adds custom HTTP headers to outgoing requests. Useful for simple API key authentication.
- When enabled, input fields for **"Header name"** (e.g., `Authorization`) and **"Header value"** (e.g., `Bearer [API Key]`) appear.
- The user can click "+ Add Header" to include multiple custom headers.
- **OAuth Client (Toggle Switch):**
- Configures OAuth 2.0 credentials for MCP servers requiring this specific authentication flow.
- When enabled, the following fields are displayed/required:
- **Workspace Callback URL (Read-only):** Displays the default redirect URI (`https://www.typingmind.com`) that must be configured with the OAuth provider.
- **OAuth Client ID:** Text field for entering the Client ID.
- **OAuth Client Secret:** Text field for entering the Client Secret.
- **Action Buttons:** "Cancel" and a prominent blue **"Create Connection"** button.
### 3. Individual Connector Management and Connection Flow
After installation, the connector appears in the "Installed" list in the left sidebar. Clicking on it opens its dedicated management panel.
### A. Connector Status and Selection
- **Enable Toggle:** A toggle switch labeled "Enable [Connector Name]" allows the user to globally enable or disable the connector.
- **Connection Status/Action Bar:** A status bar displays the connection requirement.
- **Initial State (Not Connected):** Displays "Connection Required via Select Connector" with a link to "Select Connector" and a prominent **"Connect"** button (blue).
### B. Selecting the MCP Connector Instance
Clicking the **"Connect"** button opens the **"Select MCP Connector"** modal. This step determines the underlying bridge for communication.
- **Title:** "Select MCP Connector"
- **Connection Options**
- **TypingMind Cloud:** remote MCP cloud server provided by TypingMind.
- **Description:** "Built-in free cloud connector provided by TypingMind."
- **Status:** Displays "Online" (green).
- **User Info:** If logged in, a message confirms the user email and states: "Your MCP requests will be routed through TypingMind Cloud."
- **Private MCP Connector:**
- **Description:** "Your private MCP connector instance."
- **Status:** Displays "Online" (green) if a local/remote private MCP connector is configured and running. Displays “Setup needed” if a local/remote MCP connector is not configured yet.
- Refer to section **Adding a Custom MCP Server (via "Settings → Model Context Protocol")** for detail setup guide.
- **Default Option:** A checkbox is available to "Remember this choice for all future connections."
- **Action Buttons:** "Cancel" and "Select Connector" (blue).
**Note:** Some connectors that integrate with major third-party services (like Asana, Stripe, Intercom, etc.) may be restricted to only accept connections from approved, pre-registered sources due to the external service's security policies.
- By default, TypingMind will register itself with the MCP server using OAuth 2.0 Dynamic Client Registration Protocol [**RFC7591**](https://datatracker.ietf.org/doc/html/rfc7591)
- if the service provider doesn't support it, a warning will be displayed (e.g., "Asana requires approval - registration may be needed"). This advises the user that they may need to **register their workspace redirect URL** with the external service's developer/authentication settings.
- **If you are using our available MCP connection in MCP store, the Redirect URL to Register:**
- Main redirect URL: `https://www.typingmind.com/oauth/callback`
- Backup redirect URL: `https://www.typingmind.com`
These URLs must be added to the approved redirect list in the external service (e.g., Asana's developer console) to allow the OAuth flow to complete successfully. Please refer to the MCP server provider’s OAuth Documentation for further details. Example docs: [Atlassian](https://support.atlassian.com/security-and-access-policies/docs/control-atlassian-rovo-mcp-server-settings/)
- **If you are using your Custom MCP Connection**, you can connect using your own OAuth client. Go to Plugins → MCP Store → Add custom connector → Advanced options → OAuth Client and enter the necessary details.
### C. Authentication Flow (e.g., Notion)
After selecting a connector instance (e.g., TypingMind Cloud or Private), if the external service requires OAuth, the interface updates:
- **Authentication Required Banner:** A yellow banner appears (e.g., "Authentication Required - This connection requires OAuth authentication") with a blue **"Authenticate"** button.
- **OAuth Process:** Clicking "Authenticate" opens a new browser window to the external service's OAuth provider (e.g., Notion).
- The external service lists the permissions the connector seeks.
- The user must confirm trust for the redirect URL (`https://www.typingmind.com`) and click "Continue."
- **Success:** A small pop-up confirms "Authentication successful," and the main TypingMind page updates.
- **Connected Status:** A green banner confirms the connection (e.g., "Connected via TypingMind Cloud - Access ID: ...").
### D. Tools Tab (Management of Functions)
Once successfully connected, a **"Tools"** tab becomes available next to the "Overview" tab.
- This lists all the specific individual tools (functions) exposed by the MCP server for the AI model to call and allows the user to individually enable or disable that specific function for the AI to use.
- *Example:* You might enable jira-search-issue for the whole team but disable jira-delete-issue to prevent accidental data loss by users.
### **E. Multiple connections and OpenID support**
You can have multiple connections to the same MCP servers. This is useful for cases when you want to use multiple accounts of the same service.For example, if you have multiple Notion accounts and want to use both in TypingMind, simply add the Notion connection twice and connect each one with a separate account.
If the service OAuth server supports **OpenID**, TypingMind will display the account information that you are currently connected to.
### **F. Long running sessions and refresh token**
TypingMind will automatically refresh the access token when needed. This only works if the MCP server supports [refresh token flow](https://www.oauth.com/oauth2-servers/making-authenticated-requests/refreshing-an-access-token/); otherwise, you will need to re-connect and reauthenticate after the current access token expires.
TypingMind also manages persistent MCP sessions, which allows working with **stateful MCP servers**.
Sessions in TypingMind are managed **per chat** (and per user in the [Team version](https://custom.typingmind.com)). This means a new MCP session will be created:
- for each user in your workspace (only for [Team version](https://custom.typingmind.com))
- and for each chat that the user created.
Sessions will be terminated automatically after 5 minutes of inactivity. All of the session logic will be **managed automatically** by TypingMind in the background.
## Adding a Custom MCP Server (via "Settings → Model Context Protocol")
This guide is used when you want to connect the MCP servers that run locally via a terminal command like `npx`, `uvx`, or Docker.
1. Click the "Settings" icon (gear/cogwheel) in the left sidebar.
2. Within the Settings menu, under the "Advanced Settings". Click on the "Model Context Protocol" option. This opens the initial MCP setup screen.
3. Click on **Set up MCP Connector**
### 1. Set up your private MCP connector - Choosing MCP Server Location
- **Initial Setup Screen:** The first screen prompts the user to choose where the MCP servers will run.
- **Option 1: This Device:** Runs the necessary MCP Connector and servers directly on the user's local machine where TypingMind is being used.
- **Option 2: Private Remote Server:** Allows connecting to an MCP Connector running on your separate, private remote server.
- **Selection:** Choose the preferred method and click the "Next" button.
### 2. Running MCP Connector
If the "This Device" option is selected:
1. **Command Display:** TypingMind displays a command that needs to be run in the user's terminal.
- **Command Format:** `npx @typingmind/mcp-connector `
- **Auth Token:** TypingMind initially generates a unique `` for the user. Users can replace this generated token with their own custom, secure token if desired. It's crucial to keep this token secret.
2. **Execution Environment:**
- Open the Terminal app (macOS) or Windows Terminal (Windows).
- Paste and run the displayed command.
3. **Prerequisites:**
- **NodeJS:** The user's device must have NodeJS version 18 or higher installed.
- **Same Device:** The command *must* be executed on the *same physical device* where the TypingMind app (web version or PWA) is currently running.
4. **Connection Attempt:** Once the command is running in the terminal, TypingMind will automatically attempt to connect to the local MCP Connector.
5. **Success Confirmation:** Upon successful connection, a confirmation message (e.g., "Connected!") is displayed within the TypingMind MCP settings screen.
6. **Get Started:** Click the "Get Started" button to proceed to the server configuration.
If the "Remote Server" option is selected, the setup process is almost the same:
- **Command Format:** `PORT=8080 npx @typingmind/mcp `
- **Auth Token:** TypingMind initially generates a unique `` for the user. Users can replace this generated token with their own custom, secure token if desired. It's crucial to keep this token secret.
- **Enter your server URL:** example ****`http://mcp.yourcompany.com:8080`
### 3. Setting up MCP Servers
1. **Access Server Configuration:** After successfully connecting to the MCP Connector, the interface for adding MCP servers becomes available.
2. **"Edit Servers" Button:** Click the "Edit Servers" button.
3. **JSON Configuration:** A text input area appears, expecting a JSON object to define the MCP servers to be managed by the connector.
- **Structure:** The JSON object should have a top-level key named `"mcpServers"`. The value of this key is another object where each key is the desired *name* of the MCP server (this name will appear in TypingMind), and the value is an object specifying the `command` and `args` needed to run that server.
- **Example JSON (Memory & Puppeteer Servers):**
```
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
},
"puppeteer": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-puppeteer"
]
}
}
}
```
4. **Saving:** After pasting or typing the JSON configuration, save the changes via a "Save" button within the interface).
### 4. Using MCP Tools
- **Appearance:** Once MCP servers are successfully added and running via the connector, they appear as available **Plugins** within TypingMind.
- **Location:** Find the added MCP tools listed on the main "Plugins" page (accessed via the Plugins icon in the left sidebar).
- **Usage:**
- Enable the desired MCP tool (plugin) for a specific chat session via the Plugin Selector popup above the message input field.
- Use the tool directly in prompts (e.g., "Use the memory tool to save this note...").
- Assign the MCP tool as a skill to specific AI Agents in the AI Agent configuration settings.
### Frequently Asked Questions (MCP)
**Q: What is Model Context Protocol (MCP)?**
**A:** MCP is an open protocol, initiated by Anthropic, that standardizes how applications provide context to LLMs by allowing connections to external tools and services. Learn more at: http://modelcontextprotocol.io/
**Q: What is MCP Connector and why do I need it?**
**A:** MCP Connector is an open-source tool to help run and manage multiple MCP servers in one place. It helps you decide where to run your MCP servers without exposing your local device to those servers. TypingMind uses MCP Connector to connect to the MCP servers.
**Q: Do I need to run terminal commands to use MCP?**
**A:** **Not necessarily.**
- **TypingMind Cloud (Easiest):** you can use the built-in "TypingMind Cloud" connector. This requires no local setup—just click and connect.
- **Private MCP Connector (Advanced):** You only need to run the connector software (in your terminal) if you want to connect to **local files** on your computer, internal private servers, or if you prefer to keep all data traffic strictly within your own network.
**Q: Is MCP Connector free?**
**A:** Yes, the MCP Connector software itself is free and open-source (source code available on GitHub). Running it on your own computer incurs no direct cost. If you choose to deploy it on a private remote server, you will only need to pay for the hosting costs of that server.
**Q: How do I customize the icon and the tool name of the MCP tools?**
**A:** To customize the appearance (icon, name, description) of an MCP tool within TypingMind, you must connect it as a custom connection or create it as a **Plugin**.
**Q: I'm using TypingMind for Teams, do I still need the MCP Connector?**
**A:** No, by default you do not need to the MCP connector. However, if administrators need to run the MCP Connector on their own private server, you can do that by setting MCP servers as custom plugin.
**Q: Why I’m failing to connect with some MCP servers and saw the error: "The target MCP server has rejected the connection"?**
**A:** By default, TypingMind will register itself with the MCP server using the **OAuth 2.0 Dynamic Client Registration Protocol ([RFC7591](https://datatracker.ietf.org/doc/html/rfc7591))**. If you cannot connect, it usually means the target server has rejected this dynamic registration. You will need to manually add TypingMind to the allowed redirect URLs on the external service. Or if you are using custom connection, please enable OAuth Client and add your OAuth Client following the guide shown on the app.
**Q: Where do I run the Private MCP Connector?**
**A:** It can be run on any system or server that has **NodeJS (version 18+)** installed. Depending on the specific MCP *servers* you intend to use (e.g., Puppeteer, Docker-based tools), additional dependencies might be required on the machine running the connector. Always check the documentation for the specific MCP servers you plan to use for their system requirements.
**Q: Where do I get the Auth Token for MCP Connector?**
**A:** You generate your own Auth Token. It can be any unique string of characters (e.g., a long random string).
- **License Version:** TypingMind generates an initial token during setup, but you can replace it with your own in the MCP settings.
- **Teams Version:** You define the token when you run the `npx @typingmind/mcp-connector ` command on your server, and then you enter that *same* token into the MCP Plugin configuration in the Admin Panel.
- **Security:** It is crucial to keep your Auth Token secure, as it authenticates the connection between TypingMind and your MCP Connector.
## Setting up MCP for Team version
### 1. Accessing the MCP Connection interface
1. **Navigate to the "Plugins" Section** in the admin panel
2. **Select the "MCP Store":** At the top of the Plugin management interface, click the button labeled "MCP store."
### 2. MCP Store View
This view serves as the marketplace and management starting point for MCP-compatible tools.
- **Popup Title:** "MCP Connectors."
- **Search Bar:** An input field labeled "Search MCP" allows users to find specific connectors.
- **Connector Cards (Store):** Displays available MCP tools (e.g., Amplitude, Cloudflare Developer Platform, Hugging Face, Linear, Mermaid Chart, [monday.com](http://monday.com/), Netlify, Notion, PayPal, Sentry, Stripe, Intercom, Asana, Atlassian, Canva).
- Each card displays the tool's **Icon**, **Name**, **Description** (e.g., "Search, access, and get insights on your..." for Amplitude), and an **"Install"** button.
- **Install button:** click on Install button to install the available MCP servers.
- **"+ Add connector" Button:** A prominent blue button located on the top right. Clicking this initiates the process for manually adding a custom MCP Server URL (see next section).
### 3. Adding a Custom MCP Server URL (via "+ Add connector")
If you don't find the service you need in the MCP store, you can add it manually by clicking **Add custom connector** and filling out the info. Check the documentation from the service provider to get their MCP server URL and relevant info.
Clicking the "+ Add connector" button opens the **"Add Custom MCP Server URL"** modal/page.
- **Title:** "Add Custom MCP Server URL."
- **Server URL (Required):** The external endpoint URL of the custom MCP server being added.
- **Example:** `https://ai.todoist.net/mcp`.
- **Connection Name:** name for the connection that will appear in the installed list.
- **Description (Markdown supported):** detailed explanation of the MCP connection's functionality.
- **Icon:** allow users to upload a custom image or provide a URL for the connection's icon.
- **Advanced options (Collapsible Section):** This section manages authentication and network details.
- **Custom HTTP headers (Toggle Switch):**
- Adds custom HTTP headers to outgoing requests. Useful for simple API key authentication.
- When enabled, input fields for **"Header name"** (e.g., `Authorization`) and **"Header value"** (e.g., `Bearer [API Key]`) appear.
- The user can click "+ Add Header" to include multiple custom headers.
- **OAuth Client (Toggle Switch):**
- Configures OAuth 2.0 credentials for MCP servers requiring this specific authentication flow.
- When enabled, the following fields are displayed/required:
- **Workspace Callback URL (Read-only):** Displays the default redirect URI (`https://your-company-name.typingcloud.com/oauth/callback`) that must be configured with the OAuth provider.
- **OAuth Client ID:** Text field for entering the Client ID.
- **OAuth Client Secret:** Text field for entering the Client Secret.
- **Action Buttons:** "Cancel" and a prominent blue **"Create Connection"** button.
### 4. Individual Connector Management and Connection Flow
After installation, the connector appears in the "Installed" list in the Plugin list. Clicking on it opens its dedicated management panel.
### A. Connect with your MCP server
- **Enable Toggle:** A toggle switch labeled "Enable [Connector Name]" allows the user to globally enable or disable the connector.
- **Connection Status/Action Bar:** A status bar displays the connection requirement.
- **Initial State (Not Connected):** Displays "Connection Required via Select Connector" with a link to "Select Connector" and a prominent **"Connect"** button (blue).
- Clicking the **"Connect"** button to connect with the MCP server.
**Can not connect?** Some connectors that integrate with major third-party services (like Asana, Stripe, Intercom, etc.) may be restricted to only accept connections from approved, pre-registered sources due to the external service's security policies.
- By default, TypingMind will register itself with the MCP server using OAuth 2.0 Dynamic Client Registration Protocol [**RFC7591**](https://datatracker.ietf.org/doc/html/rfc7591)
- if the service provider doesn't support it, a warning will be displayed (e.g., "Asana requires approval - registration may be needed"). This advises the user that they may need to **register their workspace redirect URL** with the external service's developer/authentication settings.
- **If you are using TypingMind available MCP connection, the Redirect URL to Register:**
- Example redirect URL: `https://your-company-name.typingcloud.com/oauth/callback`
The URL must be added to the approved redirect list in the external service (e.g., Asana's developer console) to allow the OAuth flow to complete successfully. Please refer to their OAuth Documentation for further details.
- **If you are using your Custom MCP Connection**, you can connect using your own OAuth client. Go to Plugins → MCP Store → Add custom connector → Advanced options → enable OAuth Client.
### B. Authentication Flow (e.g., Notion)
After connecting successfully, if the external service requires OAuth, the interface updates:
- **Authentication Required Banner:** A yellow banner appears (e.g., "Authentication Required - This connection requires OAuth authentication") with a blue **"Authenticate"** button.
- **OAuth Process:** Clicking "Authenticate" opens a new browser window to the external service's OAuth provider (e.g., Notion).
- The external service lists the permissions the connector seeks.
- The user must confirm trust for the redirect URL (`https://your-company-name.typingcloud.com/oauth/callback`) and click "Continue."
- **Success:** A small pop-up confirms "Authentication successful," and the main TypingMind page updates.
- **Connected Status:** A green banner confirms the connection (e.g., "Connected").
### C. Tools Tab (Management of Functions)
Once successfully connected, a **"Tools"** section becomes available right below:
- Lists all the specific individual tools (functions) exposed by the MCP server for the AI model to call. This allows the user to individually enable or disable that specific function for the AI to use.
- *Example:* You might enable jira-search-issue for the whole team but disable jira-delete-issue to prevent accidental data loss by users.
### D. Use your connected MCP server
Your connected MCP server works as a plugin so you can:
- Enable/Disable for your user needs
- Assign them to different AI Agents
## Set up MCP server as custom plugin
Set up MCP servers as a custom plugin when:
- You want to connect to MCP servers that run locally via a terminal command like `npx`, `uvx`, or Docker.
- or you want to connect with your own private MCP connector using your remote server.
### 1. Setup Method:
- Go to Admin Panel → Plugins → Click on the three-dots icon → Create new plugin
- Fill necessary information when building a custom plugin, scroll down to the Function section, click on New function → Select Implementation Type as **Model context protocol.**
- **Configure Server JSON:** A text input field will appear, specifically for the MCP server configuration JSON.
- Paste the JSON defining the *single* MCP server this plugin represents (similar structure to the `mcpServers` value in the License version, but defining only one server per plugin).
- **Example JSON for a "Memory" Plugin:**
```
{
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
```
- **Variables:** Admins can utilize available plugin variables (like User ID) and authentication configurations within this JSON if the specific MCP server supports them.
- **Save Plugin:** Save the newly created MCP plugin.
### 2. Connecting the MCP Plugin to the Connector
For the MCP plugin to function in the Teams version, it needs connection details for the MCP Connector instance.
1. **Deploy MCP Connector:** The administrator must deploy the open-source MCP Connector (at https://github.com/TypingMind/typingmind-mcp) on a server accessible to the TypingMind Team instance. This can be a private internal server or a cloud server.
2. **Run Connector Command:** Start the connector using the command:
```
npx @typingmind/mcp-connector
```
- Replace `` with a secure, unique authentication token chosen by the administrator.
3. **Obtain Connector Details:**
- **Connector URL:** The URL where the connector is running will be displayed in the terminal/console output after starting the connector. It typically looks like `https://your-server-domain.com:port`. Copy this URL.
- **Auth Token:** This is the `` used when starting the connector.
4. **Configure Plugin Settings (Admin Panel):**
- Go back to the Admin Panel -> Plugins.
- Click on the newly created MCP plugin to edit its settings.
- Find the specific fields for MCP connection (these fields appear when "Model Context Protocol" is the implementation type).
- **Connector URL:** Paste the copied Connector URL here.
- **Auth Token:** Paste the Auth Token used to run the connector here.
5. **Save Plugin Settings:** Save the changes to the plugin configuration.
### 3. End-User Experience
- Once configured and enabled by the admin, the MCP plugin appears in the user's plugin list just like any other standard plugin.
- End-users can enable and use the MCP tool within their chats without needing to know the underlying connection details.
## MCP Local HTTPS Setup Guide (for Connection Issues)
This guide details how to set up the TypingMind Model Context Protocol (MCP) connector to run securely over HTTPS on a local machine. This is often necessary to resolve connection issues encountered with certain browsers like Safari or with the mac app, which may require secure connections (HTTPS) even for `localhost`.
### Phase 1: Environment Setup
This phase involves installing the necessary software prerequisites on your macOS machine.
### Step 1: Set up Node.js
- **Purpose:** Node.js is required to run the MCP connector.
- **Action:**
1. Visit the official Node.js website: https://nodejs.org/en
2. Download the recommended **LTS (Long-Term Support)** version for macOS.
3. Run the downloaded `.pkg` installer and follow the on-screen prompts to complete the installation.
- **Verification:**
1. Open the **Terminal** application (Applications > Utilities > Terminal).
2. Type the command `node -v` and press Enter.
3. You should see the installed version number displayed (e.g., `v20.12.2`). If you see an error, Node.js was not installed correctly.
### Step 2: Install Homebrew
- **Purpose:** Homebrew is a package manager for macOS that simplifies installing other necessary tools like `mkcert`.
- **Action:**
1. Visit the Homebrew website: https://brew.sh/
2. Copy the installation command displayed prominently on the homepage (it usually starts with `/bin/bash -c "$(curl..."`). **Ensure you copy the latest command directly from the website.**
3. Paste the copied command into your **Terminal** window and press Enter.
4. Follow any on-screen instructions carefully. You might be prompted to enter your macOS user password (typing will not show characters, this is normal). Homebrew might also instruct you to run additional commands to add it to your system's PATH – follow these instructions if prompted.
- **Verification:**
1. Once the installation finishes, type the command `brew --version` in the Terminal and press Enter.
2. You should see the installed Homebrew version number.
### Step 3: Install mkcert
- **Purpose:** `mkcert` is a tool used to create locally-trusted TLS certificates for development purposes.
- **Action:**
1. In your **Terminal**, run the command:
```
brew install mkcert
```
2. **(Optional but Recommended):** If you use Firefox or other applications that might rely on the Network Security Services (NSS) shared database, install `nss` as well:
```
brew install nss
```
### Step 4: Create and Install Local Certificate Authority (CA) & Generate Certificate
- **Purpose:** This step creates a local Certificate Authority (CA) that your system and browsers will trust, and then generates a specific certificate for `localhost` signed by that CA.
- **Action:**
1. **Install the Local CA:** Run the following command in your **Terminal**. This only needs to be done once per machine. It might ask for your password again.
You should see output confirming the local CA was installed into system and potentially browser trust stores.
```
mkcert -install
```
2. **Generate Certificate Files:** Ensure your Terminal's current directory is where you want the certificate files to be saved (e.g., your home directory or a dedicated project folder). Run the command:
This command will create two files in your current directory:
```
mkcert localhost
```
- `localhost.pem`: The public certificate file.
- `localhost-key.pem`: The private key file (keep this secure).
You should see confirmation messages in the Terminal.
3. **Keep Terminal Open:** Do not close this Terminal window yet, and remember the directory where these `.pem` files were created.
### Phase 2: Running and Connecting the MCP Connector with HTTPS
This phase involves configuring TypingMind to connect to the MCP connector running locally over the secure HTTPS connection you just set up.
### Step 5: MCP Setup in TypingMind
1. Open the TypingMind application.
2. Navigate to **Settings** (gear icon in the left sidebar).
3. Go to **Advanced Settings** > **Model Context Protocol**.
4. Click the **Setup MCP Connector** button.
5. In the "Setup MCP Connector" dialog, select the **Remote Server** option. *Yes, select "Remote Server" even though you are running it locally - this allows you to specify the HTTPS URL.*
6. Click **Next**.
### Step 6: Prepare and Run the MCP Server Command
1. **View Default Command (DO NOT RUN YET):** TypingMind will display a default command like:*Note down the specific `[auth_token]` displayed in your app.*
```
PORT=8080 npx @typingmind/mcp [auth_token]
```
2. **Modify Command for HTTPS:**
- Ensure your **Terminal** window is still open and its current directory is the one containing the `localhost.pem` and `localhost-key.pem` files created in Step 4.
- Construct the modified command by prefixing it with environment variables pointing to your certificate files:
```
CERTFILE=./localhost.pem KEYFILE=./localhost-key.pem PORT=8080 npx @typingmind/mcp [auth_token]
```
- **Replace `[auth_token]`** with the actual authentication token shown in the TypingMind setup window (Step 6.1).
- **Explanation:**
- `CERTFILE=./localhost.pem`: Tells the connector where to find the certificate file.
- `KEYFILE=./localhost-key.pem`: Tells the connector where to find the private key file.
- `PORT=8080`: Specifies the port for the HTTPS server (you can change this if 8080 is in use, but make sure to use the same port in TypingMind configuration).
3. **Run the Modified Command:** Press Enter in the Terminal to execute the full, modified command.
4. **Expected Output:** You should see output indicating the server is running, similar to:*(The IP `0.0.0.0` means it's listening on all available network interfaces on your machine, which is typical).*
```
✓ MCP runner server running on
```
5. **Keep Terminal Running:** This Terminal window *must remain open* with the connector running for TypingMind to connect and use MCP features. If you close it, the connection will break.
### Step 7: Configure and Connect TypingMind
1. Go back to the TypingMind "Setup MCP Connector" window (where you selected "Remote Server").
2. **Server URL:** In the "Server URL" field, enter:*(Use the same port number as in your Terminal command if you changed it from 8080).*
```
```
3. **Authentication Token:** Ensure the "Authentication Token" field still contains the correct token that matches the one used in your Terminal command.
4. Click the **Connect** button.
### Step 8: Finalize Setup
1. **Connection Confirmation:** TypingMind should display a success message, such as:
```
✓ Connected to remote server!
```
2. Click **Get started**.
3. The MCP settings screen will now show the connected URL (`https://localhost:8080`) and status. You can optionally click "Click to check" again to re-verify the connection.
4. Click **Done**.
Your TypingMind application is now successfully connected to the MCP connector running locally over a secure HTTPS connection. You can proceed to add MCP servers (as described in ``) and use MCP-powered features. Remember to keep the Terminal window with the connector running in the background while using TypingMind.
### Platform Information
1. **Program Status Updates:**
- **Affiliate Program:**
- Status: Temporarily paused
- Effective Date: January 1, 2025
- Note: Only reseller program for TypingMind Custom remains active and can be joined at https://custom.typingmind.com/reseller
- **Discord Community:**
- Status: Discontinued
- Date: February 10, 2025
- Reason: Centralization of customer support
- Current Support: support@typingmind.com
4. **SetApp Integration:**
- **Access Methods:**
- Web App: Access through Setapp > TypingMind > "Open Web App"
- Native App: Continued support for existing installations
- **Authentication:**
- Requires Setapp account credentials
- Seamless integration with SetApp ecosystem
### Other Technical Details
1. **URL Parameters and Integration:**
- **Message Prefilling:**
- Format: typingmind.com/?message=your_message_here
- Use Case: Quick access to specific prompts
- Integration: Compatible with Raycast
2. **Data Storage Architecture:**
- **Primary Storage:**
- Local Storage: User preferences and settings
- IndexedDB: Chat history and larger data sets
- **Size Limitations:**
- Chat Sync Limit: 3MB per chat
- Storage Quota: Browser-dependent
- Note: Exceeding limits requires data cleanup
3. **Security and Compliance:**
- **Certifications:**
- SOC 2 Certified
- GDPR Compliant
- HIPAA Compliant
- **Security Features:**
- Data Encryption: In transit and at rest
- API Key Protection: Local storage with encryption options
- Security Documentation: https://trust.typingmind.com/
- **Data Usage Policy:**
- API Data: Not used for model training
- OpenAI Compliance: Adheres to OpenAI's data usage guidelines
4. **Model-Specific Technical Details:**
- **Access Requirements:**
- o1/o3 Models: Usage Tier 3-5 minimum
- Plugin Support: Model-dependent
- Video Processing: Supported by Gemini models
- **API Limitations:**
- o1-preview and o1-mini: No plugin support
- Grok 3: API access pending
- Custom Models: OpenAI-compatible API endpoint required
5. **Performance Optimization:**
- **Sync Optimization:**
- Large File Handling: Break down into smaller components
- Cache Management: Regular cleanup recommended
- Automatic Sync: Size-based exclusion
- **Error Prevention:**
- API Key Formatting: Remove extraneous characters
- Search Queries: Test with simple queries first
- CORS Handling: Use recommended endpoints
## Public Product Knowledge Map (llms.txt)
TypingMind now offers a publicly accessible product knowledge map in a structured text format designed for consumption by Large Language Models (LLMs).
**URL:** `www.typingmind.com/llms.txt`
**Purpose:**
- **LLM-Based Chatbot Development:** Enables developers to build LLM-based chatbots that possess comprehensive knowledge of TypingMind's features and functionalities.
- **User Education:** Provides users with a readily available resource to learn more about TypingMind's capabilities as needed.
**Content Characteristics:**
- **Publicly Available Information:** Contains only information that is already publicly accessible on TypingMind's website and documentation.
- **LLM-Readable Format:** Structured text format optimized for ingestion and understanding by LLMs.
- **Continuously Updated:** The knowledge map will be updated over time to reflect the product's growth and evolution.
**Use Cases:**
- **Training AI Chatbots:** Use the content of `llms.txt` to train AI chatbots to answer user questions about TypingMind, troubleshoot issues, and provide guidance.
- **Enhancing Documentation:** Integrate information from `llms.txt` into existing documentation to ensure accuracy and completeness.
- **Automating Support:** Utilize `llms.txt` to automate support processes by enabling AI agents to access a comprehensive knowledge base.
**Structure and Formatting:**
- The `llms.txt` file is structured using a custom markup language.
- Sections are delineated by tags (e.g., ``, ``).
- Key information is presented in a clear and concise manner, utilizing headings, bullet points, and bold text.
- Last Updated Attribute: The product knowledge map comes with the attribute `lastUpdated="2025-02-24T03:49:02.792Z"` for every product knowledge map to indicate when was the last time it was updated.
## Thinking Mode Feature
The Thinking Mode feature in TypingMind enhances the user experience by providing visibility into the AI's processing steps as it formulates a response. This feature is model-specific, available only with certain AI models that are designed to output their reasoning process.
### Key Functionality
- **Visual Indication of AI Reasoning:** When enabled, Thinking Mode displays an intermediate "thinking" bubble above the AI's final response, revealing the AI's thought process in a human-readable format.
- **Toggle Functionality:** The Thinking Mode can be toggled on or off during the conversation, allowing users to control whether or not they see the AI's reasoning steps.
### Accessing and Activating Thinking Mode
1. **Model Compatibility:** Thinking Mode is only available for specific AI models that support this feature (e.g., Claude 3.7 Sonnet). When using models such as GPT-4 Turbo, the "Toggle thinking mode" icon will disappear.
2. **Locate the "Toggle thinking mode" Button:** In the chat input area, find the icon that represents the Thinking Mode. The icon typically depicts a light bulb.
3. **Click the "Toggle thinking mode" Button:** Click this button to toggle the Thinking Mode on or off.
### Visual Indicators
1. "Thinking" label at the bottom
- Below the input box, the "toggle thinking mode" button's label will change from "Toggle thinking mode" to `Think` (with a light blue background).
2. Thinking Bubble
- Before the AI generates the response, there will be a bubble displaying the number of seconds for AI to start thinking.
- The "thinking" bubble is displayed above the final response.
- The time shows for how long the AI agent thought.
- The bubble also has a dropdown icon that, when clicked, displays a full explanation about the process and reasoning.
3. Models Support
- Currently, Claude 3.7 Sonnet is the only AI Model that supports this function.
### Use Case Example
1. User: "Hello"
2. With Thinking Mode enabled, before the AI sends the regular response, the AI will generate a block:
- Thought for 1 seconds
- The user has just sent a simple greeting "hello". There's no specific request that requires the use of any tools at this point. I should respond with a friendly greeting and perhaps let them know what I can help with.
- And the next block: "Hello! I'm an AI assistant ready to help you today. How can I assist you?"