A source is one place your content lives: a docs site, a repository, a Notion workspace, a folder of files. Kelu indexes each source into a knowledge base, and answers cite the page, ticket or file they came from.
Add a source
Open the knowledge base
Go to Knowledge Bases, open one, and stay on its Sources tab.
Pick a type
Click Add source. Every type is listed, grouped by category. Search by name (try “Zendesk”, “Swagger” or “PDF”) to narrow the list. Click a type to see what it does, then click Continue.
Fill in the form
Work through the three steps: Name (a Display name, and optionally a Group and Version label), Connect and Review, then click Add source. Zendesk Tickets uses its own wizard instead: Connect, then Configure, then click Deploy. The first sync starts right away.
You need the Sources permission on the knowledge base to add, edit or delete sources. See Roles & Permissions.
On the Free plan you can add Website, File Upload, Custom Answers, OpenAPI Spec and YouTube sources. Every other type needs Pro. See Billing.
Source types
Refresh is how often Kelu checks each source for changes. See Keeping content fresh.
Documentation & content
| Source | What it indexes | Refresh |
|---|
| Website | A documentation site | Every 24 hours |
| Confluence | Pages in Confluence Cloud spaces | Every 10 minutes |
| Notion | Notion pages and databases | Every 5 minutes |
| GitHub Files | Markdown, READMEs and docs in a repository | Every hour |
| GitHub Code | Source code you pick by language, folder and pattern | Every hour |
| YouTube | Video transcripts from a channel and playlists | Every 24 hours |
| Custom Answers | Questions and answers you write by hand | When you save |
| Source | What it indexes | Refresh |
|---|
| Discourse | Forum topics and replies, public or private | Every 10 minutes |
| GitHub Discussions | Community discussions on a repository | Every hour |
| Stack Overflow for Teams | Your private Teams instance, not the public site | Every hour |
Issues & tickets
| Source | What it indexes | Refresh |
|---|
| GitHub Issues | Issues and their comments | Every 5 minutes |
| GitHub Pull Requests | Pull request descriptions and reviews | Every 5 minutes |
| Jira | Project issues and their comments | Every 10 minutes |
| Linear | Completed issues and documents | Every 10 minutes |
Customer support
| Source | What it indexes | Refresh |
|---|
| Zendesk Help Center | Published Help Center articles | Every 10 minutes |
| Zendesk Tickets | Resolved Zendesk tickets, filtered the way you choose | Every 5 minutes |
| Jira Service Management | Resolved service desk requests | Every 10 minutes |
| Salesforce Knowledge | Published Knowledge articles | Every hour |
| Salesforce Cases | Support cases, with comments and email threads | Every 10 minutes |
Storage & files
| Source | What it indexes | Refresh |
|---|
| File Upload | PDF, Word, Excel, CSV, Markdown, HTML and text files | When you upload |
| Google Drive | The Drive folders and files you pick | Every 10 minutes |
| OneDrive | One person’s OneDrive, through Microsoft 365 | Every 10 minutes |
| S3 Bucket | Any S3-compatible bucket: AWS, MinIO, R2, Wasabi | Every 10 minutes |
Developer & API
| Source | What it indexes | Refresh |
|---|
| OpenAPI Spec | API reference answers from an OpenAPI spec URL | Every hour |
Five types read a GitHub repository. GitHub Files takes the documentation, GitHub Code takes the code you pick, and Issues, Pull Requests and Discussions take the conversations. Add as many as you need side by side.
The browser extension can also save a page, or a passage you highlight, into a File Upload source called “Web clips”.
Keeping content fresh
Every source syncs on its own fixed schedule, shown in the tables above. There is nothing to configure. A sync only re-processes content that changed.
- Click Sync Now on a source’s page to sync it right away. File Upload and Custom Answers have no Sync Now: upload again, or edit the answer.
- A GitHub source can also re-index on every push. See GitHub Files.
- Changes to a source’s Configuration apply on its next sync.
- Kelu stores a source’s tokens and keys encrypted. If a sync, or adding or re-crawling a page, fails saying the stored credential could not be decrypted, nothing was fetched and no document was removed. Open the source’s Configuration tab, click Edit and enter the credential again. A Google Drive source you connected by signing in to Google has no credential to type: remove it and add it again. If the message says Kelu has no encryption key configured, the credential is intact and there is nothing to re-enter: contact support.
- Slack and Discord can no longer be added as sources from the dashboard. Ones added earlier keep syncing, every 6 hours and every 2 hours.
Remove a document
Open the source’s Documents tab (Extracted on a YouTube source) and click Remove from the index. The document is deleted and its address is added to the Excluded tab, so later syncs skip it. An address ending in / covers everything beneath it. A source can exclude up to 500 addresses.
For a File Upload source the document is simply deleted. For Custom Answers, turn the answer off instead. On a Zendesk Tickets source a removed ticket comes back on the next sync. Use the source’s tag filters to keep tickets out.
Visibility
Visibility is set on the knowledge base, not on the source. Every source in it follows the knowledge base’s type:
- External knowledge base: every document is Public, except a Salesforce Knowledge article that is not on a public channel. It answers on the widget, the SDKs, the public API and MCP clients that use a client key.
- Internal knowledge base: every document is Restricted. It has no public surface. It answers only your team (on Ask, in the browser extension, through Internal MCP servers and in the agent sidebar) and any Slack or Teams bot connected to it. The Add bot dialog lists only external knowledge bases, so such a bot was connected before the knowledge base was made internal.
See Document visibility.
The first sync starts as soon as you add a source. Content that must never be public, such as an internal wiki, a private repository, support tickets or a Slack channel, belongs in an internal knowledge base. Added to an external one, it answers on your widget.
When a sync changes a lot
Kelu holds a sync for review instead of deleting documents when:
- it would remove more than 45% of the source’s documents, or
- (websites only) more than 45% of the pages are new, changed or gone, or
- (websites only) the crawl stopped at its Max pages limit with pages left to visit, and the sync would remove any document. A crawl that stops at Max pages is marked failed with
page_limit_reached either way. Raise Max pages or narrow the crawl.
A banner on the source page shows what would go. Click Remove N documents to apply the removals, or Keep them to keep the documents. When the sync would remove nothing, there is only Dismiss. New and changed content from the sync is already live either way. Scheduled syncs pause until you decide.