Join our Discord Β· Website Β· Report Bug Β· Request Feature
Questions?
Book a call with us Β»
Copilot support: We're happy to support your Copilot integration efforts.
You can receive support on our discord
or by booking a call with us.
Bring your own LLM.
π <CopilotChat />:
Build in-app AI chatbots that can "see" the current app state + take action inside your app.
The AI chatbot can talk to your app frontend & backend, and to 3rd party services (Salesforce, Dropbox, etc.) via plugins.
AI "second brain" for your users, on tap.
π <CopilotTextarea />:
AI-assisted text generation. Drop-in replacement for any <textarea />.
Autocompletions + AI editing + generate from scratch. Indexed on your users' content.
Define the following simple entry-points into your application, and the CopilotKitπͺ execution engine takes care of the rest!
- Application state (frontend + backend + 3rd party)
- Application interaction (via plain typescript code, frontend + backend)
- Purpose-specific LLM chains
- and more.
CopilotKit also provides builit-in (fully-customizable) Copilot-native UX components, including:
CopilotChat
, CopilotSidebar
, CopilotPopup
, and CopilotTextarea
.
npm i @copilotkit/react-core @copilotkit/react-ui @copilotkit/react-textarea
See quickstart in the docs
3-min showcase + 3-min implementation tutorial:
CopilotKit_Demo_Jan_zjgjk0.webm
A more comprehensive and up-to-date overview is available in the docs.
But roughtly:
- β
useMakeCopilotReadable
: give frontend state to the copilot - β
useMakeCopilotDocumentReadable
: give document state to the copilot, especially useful with 3rd party state (e.g. Gong call transcript). - β
useMakeCopilotActionable
: frontend application interaction - β
CopilotBackend
: backend application interaction - π§
useCopilotChain
: provide usecase-specific LLM chains
- β
<CopilotSidebar>
: Built in, hackable Copilot UI (optional - you can bring your own UI). - β
<CopilotPopup>
: Built in popup UI. - β
<CopilotChat>
: Standalone chat UI - β
<CopilotTextarea />
: drop-in<textarea />
replacement with Copilot autocompletions. - β
useCopilotChat()
for fully-custom UI component - π§ use custom UX elements inside the chat (coming soon)
import "@copilotkit/react-ui/styles.css"; // add to the app-global css
import { CopilotKit } from "@copilotkit/react-core";
import { CopilotSidebar } from "@copilotkit/react-ui";
function MyAmazingContent() {
const importantInfo = useImportantInfo()
useMakeCopilotReadable("very importnat information: " + importantInfo)
useMakeCopilotActionable(
{
name: `selectDestinations_${toCamelCase(heading)}`,
description: `Set the given destinations as 'selected', on the ${heading} table`,
argumentAnnotations: [
{
name: "destinationNames",
type: "array",
items: {
type: "string",
},
description: "The names of the destinations to select",
required: true,
},
],
implementation: async (destinationNames: string[]) => {
setCheckedRows((prevState) => {
const newState = { ...prevState };
destinationNames.forEach((destinationName) => {
newState[destinationName] = true;
});
return newState;
});
},
},
[],
);
return (
<YourContent />
)
}
export default function App() {
return (
<CopilotKit url="/api/copilotkit/chat"> {/* Global state & copilot logic. Put this around the entire app */}
<CopilotSidebar> {/* A built-in Copilot UI (or bring your own UI). Put around individual pages, or the entire app. */}
<MyAmazingContent />
</CopilotSidebar>
</CopilotKit>
);
}
A drop-in <textarea /> replacement with autocompletions, AI insertions/edits, and generate-from-scratch.
Indexed on data provided to the Copilot.
import "@copilotkit/react-textarea/styles.css"; // add to the app-global css
import { CopilotTextarea } from "@copilotkit/react-textarea";
import { CopilotKit } from "@copilotkit/react-core";
// call ANYWHERE in your app to provide external context (make sure you wrap the app with a <CopilotKit >):
// See below for more features (parent/child hierarchy, categories, etc.)
useMakeCopilotReadable(relevantInformation);
useMakeCopilotDocumentReadable(document);
return (
<CopilotKit url="/api/copilotkit/chat"> {/* Global state & copilot logic. Put this around the entire app */}
<CopilotTextarea
className="p-4 w-1/2 aspect-square font-bold text-3xl bg-slate-800 text-white rounded-lg resize-none"
placeholder="A CopilotTextarea!"
autosuggestionsConfig={{
purposePrompt:
"A COOL & SMOOTH announcement post about CopilotTextarea. Be brief. Be clear. Be cool.",
forwardedParams: {
// additional arguments to customize autocompletions
max_tokens: 25,
stop: ["\n", ".", ","],
},
}}
/>
</CopilotKit>
);
- β
useMakeCopilotReadable
: give frontend state to the copilot - β
useMakeCopilotDocumentReadable
: give document state to the copilot, especially useful with 3rd party state (e.g. Gong call transcript) - β
useMakeCopilotActionable
: Let the copilot interact with the application - π§
useMakeCopilotAskable
: let the copilot ask for additional information when needed (coming soon) - π§
useCopilotChain
: provide usecase-specific chain - π§
useEditCopilotMessage
: edit the (unsent) typed user message to the copilot (coming soon) - π§ copilot-assisted navigation: go to the best page to achieve some objective.
- π§ Copilot Cloud: From hosting, chat history, analytics, and evals, to automatic Copilot personalization and self-improvement.
- β Vercel AI SDK
- β OpenAI APIs
- π§ Langchain
- π§ Additional LLM providers
- β React
- π§ Vue
- π§ Svelte
- π§ Swift (Mac + iOS)
Contributions are welcome! π
atai <at>
copilotkit.ai