CoderHelm Docs
Concepts

Knowledge sources

Bring pages in from Notion, Confluence, Google Drive, Sanity, GitHub and websites, and keep them up to date on their own.

A knowledge base can hold pages from the apps your team already writes in, next to the files you upload. You pick what to bring in once; Coderhelm keeps it up to date, removes what is deleted, and Chat and the agents cite each page with a link back to where it lives.

Adding a source

On the Knowledge page, choose New knowledge base (or Add on an existing one):

  1. Pick the app: Notion, Confluence, Google Drive, Sanity, GitHub, a website, or Upload files.
  2. If the app isn't connected yet, choose Connect and sign in to it. You come back to the same step.
  3. Tick what to bring in. Ticking a page, space or folder includes everything inside it, including what is added there later.
  4. A new knowledge base is named after what you picked; change the name if you like. It is readable by your whole team unless you change that.

The pages start arriving right away, and the dialog shows each one as it comes in. You can close it; the import keeps going.

What each app brings in

AppYou pickBrought inConnects with
NotionPages and databasesEach page's text, nested blocks and a database row's propertiesA Notion sign-in, or the Notion token saved on the Integrations page
ConfluenceSpaces or page treesEach current page's bodyAn Atlassian sign-in, or the Confluence email and API token saved on the Integrations page
Google DriveFolders (with their subfolders) or single filesDocs, Sheets and Slides as text; PDF, Word, Excel, Markdown, CSV, HTML and text filesA Google sign-in with read-only access to Drive
SanityA dataset, or document types in itEach published document's text (drafts never)The Sanity token and project id saved on the Integrations page (a Viewer token is enough)
GitHubRepositories, folders or filesMarkdown, MDX, text, reStructuredText and AsciiDoc files on the default branchThe Coderhelm GitHub App
WebsitePage addresses or a sitemapEach page's readable textNothing: public pages only

A source keeps up to 1,000 pages. Coderhelm only ever reads: nothing is changed, created or deleted in the app.

Sanity: turning documents into text

By default a document's title is its first title, name, heading or label field and its body is every text field, with Portable Text read as paragraphs and headings. A source's settings can set, per type, which field is the title, which fields are the body, and a link template such as https://example.com/blog/{slug.current} so citations open the published page. With studio_url set, citations open the document in your Studio instead.

Staying up to date

AppChanges arriveScheduled check
SanityThe moment they are published (Coderhelm adds the webhook itself when the token may manage webhooks; otherwise the dialog shows the address and secret to add)Every 6 hours
NotionWithin moments, when your install has Notion webhooks set upEvery hour, or every 6 hours with webhooks
GitHubOn every push to the default branchEvery 6 hours
Confluence, Google Drive, websitesAt the scheduled checkEvery hour

Check for changes on a source checks right away, even while it is paused. Pause updates stops scheduled checks and webhooks until you resume.

Each check is as small as the change:

  • A page whose edit time (or revision) is unchanged is not read again.
  • A page that was read but whose text is the same is not indexed again.
  • A changed page re-indexes only the passages whose text changed.
  • A page that was deleted, moved out of what you picked, or is no longer shared with the connection is removed, with its passages.

Where a source stands

Each source on a knowledge base's page shows one line: Up to date, checked 5 minutes ago, Bringing in 12 of 40, Paused, or what to do when something is wrong, with a button that does it:

What happenedWhat you see
The sign-in expired or was revokedReconnect Notion
What you picked was moved or deletedChoose pages again
The app asked Coderhelm to slow down, or didn't answerTry again (it also retries on its own)

A page that couldn't be read says why in the list of pages, and is tried again on the next check.

Who can read it

Pages from an app follow the knowledge base's own setting, exactly like uploaded files: everyone who can read the knowledge base can read every page brought into it, even if they can't open that page in the app. The dialog says so when you add a source. Pick what you bring in with that in mind, or set the knowledge base to admins only.

  • Only people whose role includes managing knowledge add, change, pause and remove sources.
  • Connections belong to the team, not to the person who signed in, so syncs keep working when that person is away. The page shows who connected each app.
  • Sign-ins are sealed with your install's encryption key for one team and one connection, renewed before they expire, revoked when you disconnect, and never sent to the browser or to a model.

Citations

A passage from a synced page is cited like one from an uploaded file, with its place in the page and the page's last edit date, and the citation links to the original page in Notion, Confluence, Drive, GitHub or on your site.

Cost

Indexing uses Titan embeddings and is recorded on your usage page like every other model call. Because only changed passages are indexed again, keeping a large source up to date costs a small fraction of the first import.

For developers

Every source type implements one interface with three calls: list what can be picked one level at a time (with a search box), list every item a selection covers with the app's version marker (or, from a cursor, what changed and what was deleted), and fetch one item as text with its title, link and edit time. The sync engine does the rest: comparing, hashing, indexing only what changed, deleting, scheduling, status and citations.

A plugin can add a source type by shipping a connector that answers those three calls; nothing else changes. The endpoints the dashboard uses are under /api/knowledge/connectors and /api/knowledge/{kb_id}/sources, and providers post change events to POST /webhooks/knowledge/{token} (see the API reference).

Running your own install? One-click sign-in for Notion, Confluence and Google Drive, and Notion webhooks, need OAuth apps of your own: see Knowledge sources in the self-hosting guide.

Edit on GitHub

On this page