Skip to main content

Sync anything to Open WebUI Knowledge Bases

Project description

📚 oikb

Keep your Open WebUI Knowledge Bases in sync. Point it at a local directory, a GitHub repo, a Confluence space, an S3 bucket, or any of 30+ supported sources. Only new and modified files are uploaded via incremental SHA-256 diffing.

[!IMPORTANT] Requires Open WebUI 0.9.6+

Quick Start

pip install oikb

export OPEN_WEBUI_URL=http://localhost:3000
export OPEN_WEBUI_API_KEY=sk-your-api-key

# Sync a directory to a Knowledge Base
oikb sync ./docs --kb-id your-kb-id

# Or watch for changes and auto-sync continuously
oikb watch ./docs --kb-id your-kb-id

Or with Docker:

docker run --rm \
  -e OPEN_WEBUI_URL=http://host.docker.internal:3000 \
  -e OPEN_WEBUI_API_KEY=sk-your-key \
  -v ./docs:/data \
  ghcr.io/open-webui/oikb watch /data --kb-id your-kb-id

Commands

Command Description
oikb sync <source> Incremental sync to a Knowledge Base
oikb watch <source> Watch for changes and auto-sync
oikb diff <source> Preview what a sync would do
oikb ls List files in a Knowledge Base
oikb status Show KB info and file count
oikb reset Delete all files in a Knowledge Base
oikb config Manage saved URL and API key

30+ Connectors

Beyond local directories, oikb can sync from remote sources using the same oikb sync <source> interface.

Category Sources
Code Repos GitHub, GitLab, Bitbucket
Cloud Storage S3, GCS, Azure Blob, Dropbox, R2, Google Drive, SharePoint
Wikis & KBs Confluence, Notion, BookStack, Discourse, GitBook, Guru
Ticketing Jira, Linear, Zendesk, Freshdesk, Asana, ClickUp, Airtable
Messaging Slack, Discord, Microsoft Teams, Gmail
Sales & CRM Salesforce, HubSpot
Web Website / Sitemap crawler
oikb sync github:owner/repo --kb-id your-kb-id
oikb sync confluence:ENG --kb-id your-kb-id
oikb sync s3://bucket/prefix --kb-id your-kb-id
oikb sync slack:C0123ABC --kb-id your-kb-id

Some connectors need an optional extra: pip install oikb[gdrive], pip install oikb[s3], or pip install oikb[all] for everything.

Configuration

Resolved in order (highest priority wins):

  1. CLI flags (--url, --token)
  2. Environment variables (OPEN_WEBUI_URL, OPEN_WEBUI_API_KEY)
  3. Config file (~/.config/oikb/config.yaml)

Multi-source (.oikb.yaml)

Define multiple sources in a single config file:

sync:
  - source: ./docs
    kb-id: project-docs
  - source: github:owner/wiki
    kb-id: team-wiki
    branch: main
  - source: confluence:ENG
    kb-id: eng-handbook
oikb sync              # Sync all entries
oikb sync --name docs  # Sync a specific entry

Docker Compose

Run as a sidecar alongside Open WebUI:

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "3000:8080"

  oikb:
    image: ghcr.io/open-webui/oikb:latest
    environment:
      - OPEN_WEBUI_URL=http://open-webui:8080
      - OPEN_WEBUI_API_KEY=${OPEN_WEBUI_API_KEY}
    volumes:
      - ./docs:/data
    command: watch /data --kb-id ${KB_ID}
    depends_on:
      - open-webui
    restart: unless-stopped

GitHub Actions

- name: Sync docs to Open WebUI
  uses: docker://ghcr.io/open-webui/oikb:latest
  with:
    args: sync /github/workspace/docs --kb-id ${{ secrets.KB_ID }}
  env:
    OPEN_WEBUI_URL: ${{ secrets.OPEN_WEBUI_URL }}
    OPEN_WEBUI_API_KEY: ${{ secrets.OPEN_WEBUI_API_KEY }}

How It Works

  1. Scan source, compute checksums
  2. Send manifest to Open WebUI /sync/diff
  3. Delete stale files, create missing directories
  4. Upload only new and modified files

License

MIT. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oikb-0.1.3.tar.gz (35.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oikb-0.1.3-py3-none-any.whl (64.2 kB view details)

Uploaded Python 3

File details

Details for the file oikb-0.1.3.tar.gz.

File metadata

  • Download URL: oikb-0.1.3.tar.gz
  • Upload date:
  • Size: 35.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.0

File hashes

Hashes for oikb-0.1.3.tar.gz
Algorithm Hash digest
SHA256 03b15275a1d06d20b91df12c32e2518bd4895577cbca48433c86c4ab96e02797
MD5 72607c650a6b075d348cdc7b75f2e925
BLAKE2b-256 fa69ac253464e4febe3569900f84d2d4cff1a901be635fb74e3623fa9b54eab9

See more details on using hashes here.

File details

Details for the file oikb-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: oikb-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 64.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.0

File hashes

Hashes for oikb-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bd7f05ff0b68fd7d9e5af9c453085dc4f864c9cc678eb1fe89dd8ded74cb77d8
MD5 0659bc7c61e9b3f18347c81d53ab73f5
BLAKE2b-256 45a62fb06fb2560697fd4e04b3ebb827403d754640fbc119a31ac2d82215e718

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page