Deployment
Das KnowledgeSDK kann auf verschiedene Arten betrieben werden: als NPM-Paket in einer eigenen Anwendung, als Docker-Container oder lokal ueber die ProcessCube CLI (pc knowledge).
Als NPM-Paket
Die einfachste Integration: Das SDK wird als Abhaengigkeit in eine bestehende Node.js-Anwendung eingebunden.
Installation
npm install @processcube-io/knowledge-sdkIndex erstellen
import { createIndexer, filesystemSource, githubSource } from '@processcube-io/knowledge-sdk';
const indexer = createIndexer({
dbPath: './data/index.sqlite',
collections: [
{
name: 'docs',
path: './content',
pattern: '**/*.md',
context: 'Projekt-Dokumentation',
group: 'Allgemein',
},
],
plugins: [filesystemSource, githubSource],
});
await indexer.run();Server starten
import { createSearchStore } from '@processcube-io/knowledge-sdk';
import { startServer } from '@processcube-io/knowledge-sdk/adapters/standalone';
const store = await createSearchStore({ dbPath: './data/index.sqlite' });
await startServer(store, { port: 3001 });
// GET /api/search?q=... — Suche
// GET /api/collections — Collections auflisten
// GET /health — Health-CheckWeitere Details: Getting Started | Framework-Adapter (Next.js, Express, Hono)
Docker-Images
Zwei Docker-Images fuer den Standalone-Betrieb ohne eigene Anwendung.
Voraussetzungen
Fuer den Zugriff auf die Docker-Images ist ein Login am ProcessCube Marketplace erforderlich:
echo "IHR_API_KEY" | docker login marketplace.processcube.io -u processcube --password-stdinDen API-Key finden Sie in Ihrer ProcessCube-Rechnung. Details siehe Docker-Images aus dem Marketplace beziehen.
Such-Server
docker run -d \
-v qmd-data:/data \
-p 3001:3001 \
-e QMD_API_KEY=mein-geheimer-key \
marketplace.processcube.io/processcube-io/knowledge-sdk-serverUmgebungsvariablen (Server)
| Variable | Default | Beschreibung |
|---|---|---|
QMD_INDEX_PATH | /data/index.sqlite | Pfad zur Datenbank |
QMD_SEARCH_MODE | fts | fts oder hybrid |
QMD_EMBED_PROVIDER | none | none, openai, voyage |
QMD_API_KEY | (leer) | API-Key fuer Auth (leer = kein Auth) |
QMD_MCP_ENABLED | false | MCP-Endpoint aktivieren |
PORT | 3001 | Server-Port |
Indexer
Der Indexer erstellt und aktualisiert den Such-Index. Die Konfiguration erfolgt ueber eine JSON-Datei.
docker run --rm \
-v ./config.json:/app/config.json \
-v qmd-data:/data \
-e GITHUB_TOKEN=$GITHUB_TOKEN \
marketplace.processcube.io/processcube-io/knowledge-sdk-indexerconfig.json
{
"collections": [
{
"name": "docs",
"path": "/content/docs",
"pattern": "**/*.md",
"context": "Projekt-Dokumentation",
"group": "Allgemein"
}
],
"contentSources": [
{
"plugin": "github",
"config": {
"collection": "changelogs",
"files": [
{
"owner": "org",
"repo": "repo",
"branch": "main",
"path": "CHANGELOG.md",
"outputName": "repo.md"
}
]
}
}
]
}Umgebungsvariablen (Indexer)
| Variable | Default | Beschreibung |
|---|---|---|
QMD_CONFIG | /app/config.json | Pfad zur Config |
QMD_INDEX_PATH | /data/index.sqlite | Pfad zur Datenbank |
QMD_EMBED_PROVIDER | none | Embedding-Provider |
SKIP_EMBED | false | Embeddings ueberspringen |
GITHUB_TOKEN | (leer) | Fuer GitHub-Plugin |
Env-Var-Syntax in der Config (${GITHUB_TOKEN}) wird beim Laden aufgeloest.
ProcessCube CLI (pc knowledge)
Fuer den lokalen Betrieb ohne Node.js oder Docker wird keine eigene KnowledgeSDK-Binary mehr gebaut.
Das SDK ist in die ProcessCube CLI integriert und wird ueber pc knowledge bedient — das pc-Binary
bringt SQLite ueber bun:sqlite mit, ein nativer better-sqlite3-Build ist damit nicht mehr noetig.
Installation
Linux / macOS
curl -fsSL https://marketplace.processcube.io/cli/install | bashDetails und Binaries pro Plattform: CLI-Installation.
Befehle
Index erstellen
pc knowledge init
pc knowledge add-source filesystem ./docs
pc knowledge indexIm pc-Binary laeuft die Suche als FTS5 + bm25 mit optionalem LLM-Reranking (Voyage/Cohere).
Der Vektor-Hybrid (sqlite-vec) ist Node-only — dafuer die Docker-Images oder
das NPM-Paket verwenden.
Die vollstaendige Befehlsreferenz inklusive entfernter REST-/MCP-Quellen und Wiki-Layer steht unter Knowledge-Befehle.
Kubernetes
Fuer den produktiven Betrieb in Kubernetes werden der Indexer als CronJob und der Server als Deployment betrieben. Beide teilen sich ein PersistentVolumeClaim fuer die SQLite-Datenbank.
CronJob (Indexer)
Der Indexer laeuft regelmaessig als CronJob und aktualisiert den Such-Index:
apiVersion: batch/v1
kind: CronJob
metadata:
name: qmd-indexer
spec:
schedule: "*/30 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: indexer
image: marketplace.processcube.io/processcube-io/knowledge-sdk-indexer
env:
- name: GITHUB_TOKEN
valueFrom:
secretKeyRef:
name: github-token
key: token
volumeMounts:
- name: index
mountPath: /data
- name: config
mountPath: /app/config.json
subPath: config.json
volumes:
- name: index
persistentVolumeClaim:
claimName: qmd-index
- name: config
configMap:
name: qmd-config
restartPolicy: OnFailureDeployment (Server)
apiVersion: apps/v1
kind: Deployment
metadata:
name: knowledge-sdk
spec:
replicas: 1
template:
spec:
containers:
- name: server
image: marketplace.processcube.io/processcube-io/knowledge-sdk-server
ports:
- containerPort: 3001
env:
- name: QMD_API_KEY
valueFrom:
secretKeyRef:
name: qmd-secret
key: api-key
volumeMounts:
- name: index
mountPath: /data
readOnly: true
livenessProbe:
httpGet:
path: /health
port: 3001
readinessProbe:
httpGet:
path: /health
port: 3001
volumes:
- name: index
persistentVolumeClaim:
claimName: qmd-indexPersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qmd-index
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1GiDa SQLite keine gleichzeitigen Schreibzugriffe unterstuetzt, muss das PVC im ReadWriteOnce-Modus betrieben werden.
Der Server mountet das Volume als readOnly, sodass Indexer und Server auf demselben Node laufen koennen.
Bei Bedarf kann eine podAffinity sicherstellen, dass der CronJob auf demselben Node wie das Deployment laeuft.