
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
Embeddable AI chatbot widget. Add a chat widget to any website with one line of code.
Site | NPM Module | GitHub Repo
Chatsy is an embeddable AI chatbot widget. Add intelligent customer support to any website with one line of code.
Go to chatsy.ai/dashboard/agents/new to create your AI agent. Configure your brand info, knowledge base, response style, and welcome message. Copy the Agent ID when you're done.
Script tag (no build tools needed):
<script
src="https://cdn.jsdelivr.net/npm/chatsy@latest/dist/chatsy.min.js"
data-agent-id="YOUR_AGENT_ID"
></script>
A chat button appears in the bottom-right corner. Click it to open the chat.
NPM (for React, Vue, Next.js, etc.):
npm install chatsy
import Chatsy from 'chatsy';
const chat = new Chatsy('YOUR_AGENT_ID');
| Attribute | Default | Description |
|---|---|---|
data-agent-id | required | Your agent ID from the dashboard |
data-button-background-color | #297bf7 | Button background color |
data-button-text-color | #FFFFFF | Button icon color |
data-button-position | bottom-right | bottom-right or bottom-left |
data-button-type | round | Button shape: round or square |
data-button-icon | default | Icon style: default, material, or rounded |
Note: User data (
user,context) is not supported via script tag attributes. Use the JavaScript API withsetUser()for dynamic user identification.
const chat = new Chatsy('YOUR_AGENT_ID', {
settings: {
button: {
backgroundColor: '#297bf7', // Button background color
textColor: '#FFFFFF', // Button icon color
position: 'bottom-right', // 'bottom-right' or 'bottom-left'
type: 'round', // 'round' or 'square'
icon: 'default', // 'default', 'material', or 'rounded'
},
},
user: {
id: 'user-123', // Unique user ID
firstName: 'Jane', // First name (avatar initials, sent to AI)
lastName: 'Smith', // Last name (avatar initials, sent to AI)
email: 'jane@example.com', // Sent to AI as context
photoURL: 'https://...', // Profile picture URL (replaces initials avatar)
// ...any other scalar fields are sent to the AI
},
context: {
// page.url, page.referrer, page.title are auto-collected
tags: ['vip', 'enterprise'], // Labels for filtering conversations
metadata: { planId: 'pro' }, // Arbitrary key/values (scalars only)
},
});
| Method | Description |
|---|---|
chat.open() | Open the chat window |
chat.close() | Close the chat window |
chat.toggle() | Toggle open/close |
chat.send('Hello!') | Send a message programmatically |
chat.setUser({ id, firstName, ... }) | Update user identity (e.g., after auth state change) |
chat.getMessages() | Get all messages as an array |
chat.destroy() | Remove the widget from the page |
chat.on('ready', () => { /* Widget loaded */ });
chat.on('open', () => { /* Chat opened */ });
chat.on('close', () => { /* Chat closed */ });
chat.on('message', (msg) => { /* New message received */ });
chat.on('error', (err) => { /* Error occurred */ });
Each instance is independent, so you can run multiple widgets on the same page:
const support = new Chatsy('support-agent-id');
const sales = new Chatsy('sales-agent-id', {
settings: { button: { position: 'bottom-left', backgroundColor: '#10B981' } },
});
Configure your agent at chatsy.ai/dashboard:
| Setting | What It Does |
|---|---|
| Brand info | Company name, website, phone, description |
| Knowledge base | Products, services, and additional context the agent should know |
| Processes | Cancellation, refund, return, and shipping policies |
| Response style | Tone (professional, friendly, casual) and custom instructions |
| Welcome message | First message visitors see when opening chat |
| AI model | Standard (GPT-4o Mini) or Advanced (GPT-4o) |
npm start # Watch mode - rebuilds on file changes
npm run build # One-time build (ESM, CJS, UMD)
npm test # Run tests
| File | Format | Use Case |
|---|---|---|
dist/index.mjs | ESM | import in modern bundlers (webpack, Vite, etc.) |
dist/index.js | CJS | require() in Node.js |
dist/chatsy.min.js | IIFE (minified) | <script> tag / CDN |
Open test/browser.html in your browser to test the widget locally.
MIT
FAQs
Embeddable AI chatbot widget. Add a chat widget to any website with one line of code.
The npm package chatsy receives a total of 154 weekly downloads. As such, chatsy popularity was classified as not popular.
We found that chatsy demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.