Directory / plugin
ChatProjects
v1.3.0 · by chatprojects
Chat with your documents and your site's content in WordPress, using your own OpenAI, Claude, Gemini, DeepSeek or OpenRouter API keys.
About this plugin
ChatProjects brings AI chat into WordPress, grounded in your own documents. Create a project, upload your policies, manuals or notes, and ask questions. Answers come from your files, and each one lists the files it used.
You use your own API keys. Nothing goes through our servers, and there’s no account to create.
What you can do
- Chat with your documents. Each project has its own files, instructions and chat history. Answers name the files they came from.
- Add a chat widget to your website. Visitors ask questions and get answers from a project’s documents. Turn it on per project, then show it on every page or place it with a shortcode.
- Answer from your posts and pages (Auto-RAG). Index your published content into a project. Edited posts are re-indexed, and posts you unpublish or delete are removed.
- Chat with the model you prefer. Switch between OpenAI GPT-5.6, Anthropic Claude Opus 5.5, Google Gemini 3.8, DeepSeek V4 and hundreds of models through OpenRouter, all in one chat screen.
- Keep projects private. Each project belongs to the person who created it, and administrators can see all of them. Give team members the Projects User role.
- Use it your way. Open the full-screen app at
/chatprojects/, or embed it on any page with a shortcode. Light and dark mode included.
What you need
- An OpenAI API key for projects, document chat, the website widget and Auto-RAG. File search runs on OpenAI vector stores.
- Optionally, keys for Anthropic, Google Gemini, Chutes or OpenRouter, to use their models in general chat.
- WordPress 6.6 or later and PHP 8.0 or later.
The plugin is free. You pay your AI provider directly for what you use.
Supported AI providers
- OpenAI: GPT-5.6 Sol, Terra and Luna, GPT-5.5, GPT-5.4, GPT-5.4 Mini and Nano
- Anthropic: Claude Opus 5.5, Sonnet 5.5, Fable 5.1, Opus 5, Sonnet 5, Opus 4.8, Sonnet 4.6, Haiku 4.5
- Google Gemini: Gemini 3.8 Flash, 3.7 Flash, 3.5 Flash, 3.5 Flash Lite, 3.1 Pro (preview)
- Chutes: DeepSeek V4 Flash, DeepSeek V3.2 and the other models Chutes hosts
- OpenRouter: hundreds of models from many providers
Developers can add custom or fine-tuned models with the chatprojects_models filter.
Shortcodes
[chatprojects_main]shows the full app on any page. Adddefault_tab="chat"ordefault_tab="settings"to choose what its main button opens (projects by default).[chatprojects_widget project="123"]shows the website chat widget for project 123.
ChatProjects Pro
ChatProjects Pro adds team sharing, a prompt library, side-by-side model comparison, image generation, transcription and usage analytics. Everything in this plugin is free to use; Pro adds features, it doesn’t unlock this one.
Privacy Policy
ChatProjects stores your API keys encrypted in your WordPress database. The plugin connects directly to AI provider APIs (OpenAI, Anthropic, Google, Chutes, OpenRouter) using your own API keys. No data is sent to our servers.
For more information, see our Privacy Policy.
External services
This plugin connects to the external AI services listed below, using API keys the site owner provides. Nothing is sent until an administrator adds a key for a service.
Data Transmitted
- Chat Messages: Text (and attached images) a logged-in user sends is sent to the AI provider they selected, together with recent conversation history
- Website Widget Messages: Messages typed by site visitors into the
[chatprojects_widget]chat are sent to OpenAI with the project’s instructions - Uploaded Files: File contents are sent to OpenAI when users upload or import a file into a project
- Auto-RAG Content: When an administrator starts indexing, the title, URL, date, author, categories and text of published, public posts and pages are uploaded to the project’s OpenAI vector store in background batches. Edited posts are re-uploaded, and posts that are unpublished or deleted are removed
- System Instructions: Project or chat instructions are included with chat requests
- Chat Titles: The first message and reply of a chat are sent to OpenAI to generate a short title
When Data Is Sent
- When a user or widget visitor sends a chat message
- When a file is uploaded or imported into a project (OpenAI only)
- While Auto-RAG indexing runs, and when an indexed post is edited (OpenAI only)
API Keys
- Site owners supply their own API keys – this plugin does not provide access to any AI service
- Keys are encrypted (libsodium secretbox) and stored locally in the WordPress database
- Keys are never transmitted to chatprojects.com or any third party
Service Providers
OpenAI API
Used for AI chat, file analysis via Responses API, and vector store functionality.
* Service URL: https://api.openai.com/
* Privacy Policy: https://openai.com/privacy/
* Terms of Service: https://openai.com/terms/
Anthropic Claude API
Optional AI provider for chat features.
* Service URL: https://api.anthropic.com/
* Privacy Policy: https://www.anthropic.com/privacy
* Terms of Service: https://www.anthropic.com/terms
Google Gemini API
Optional AI provider for chat features.
* Service URL: https://generativelanguage.googleapis.com/
* Privacy Policy: https://policies.google.com/privacy
* Terms of Service: https://policies.google.com/terms
Chutes API (DeepSeek)
Optional AI provider for chat features using DeepSeek models.
* Service URL: https://llm.chutes.ai/
* Privacy Policy: https://chutes.ai/privacy
* Terms of Service: https://chutes.ai/terms
OpenRouter API
Optional AI provider giving access to 100+ models from various providers.
* Service URL: https://openrouter.ai/api/
* Privacy Policy: https://openrouter.ai/privacy
* Terms of Service: https://openrouter.ai/terms
* Note: When using OpenRouter, your site URL and site name are sent in HTTP headers as required by OpenRouter’s API for attribution and rate limiting purposes.
Your Control
You choose which API providers to configure. Only providers with valid API keys configured will receive any data. Each provider handles transmitted data according to their own privacy policies linked above.
Third-Party Libraries
This plugin includes the following third-party JavaScript libraries:
Alpine.js
- Version: 3.x
- License: MIT
- Source: https://github.com/alpinejs/alpine
- License file: licenses/ALPINE.txt
highlight.js
- Version: 11.x
- License: BSD-3-Clause
- Source: https://github.com/highlightjs/highlight.js
- License file: licenses/HIGHLIGHT.txt
marked
- Version: 16.x
- License: MIT
- Source: https://github.com/markedjs/marked
- License file: licenses/MARKED.txt
DOMPurify
- Version: 3.x
- License: Apache-2.0 (dual licensed Apache-2.0 / MPL-2.0)
- Source: https://github.com/cure53/DOMPurify
- License file: licenses/DOMPURIFY.txt
Development
Source Code
The uncompressed source code for all JavaScript and CSS files is available at:
https://github.com/chatprojects-com/chatprojects
Build Instructions
- Clone the repository:
git clone https://github.com/chatprojects-com/chatprojects.git - Install dependencies:
npm install - Build for production:
npm run build
The source files are located in assets/src/ and compile to assets/dist/.
Technical Notes
Streaming via WordPress HTTP API:
This plugin uses the WordPress HTTP API (wp_remote_post) for AI provider streaming. For real-time SSE chunk handling, it leverages the http_api_curl action hook to attach a CURLOPT_WRITEFUNCTION callback only when the WordPress HTTP API selects the cURL transport. This preserves WordPress compatibility (proxy settings, transport fallback, and security hooks) while still enabling low-latency streaming.
If cURL is not available, the HTTP API will fall back to other transports and the request will still complete (though streaming callbacks are only available when cURL is the active transport).
PHP Configuration:
SSE streaming clears output buffers and turns off output compression for the streaming request only, not globally.