Knowledge graph (Neo4j or ArangoDB)
The knowledge graph is how PipesHub stores that a Slack thread, a Drive file, and a person belong together. Permission checks and citations follow those links. You choose one graph database with theDATA_STORE environment variable. Application services talk to a graph abstraction, so the product behaves the same on either backend.
- Neo4j is the default (
DATA_STORE=neo4j). The default install,backend/env.template, and the Helm chart all use Neo4j. - ArangoDB is the other option (
DATA_STORE=arangodb). If an existing install already has an ArangoDB data volume, the installer keeps ArangoDB.
Vector search (Qdrant)
After Indexing parses a document, an embedding model turns each chunk of text into a vector. Qdrant stores those vectors and finds similar text when Query answers a question. A default install uses Qdrant. The application also supports OpenSearch and Redis (VECTOR_DB_TYPE=opensearch or VECTOR_DB_TYPE=redis). Those values apply only when the app container receives VECTOR_DB_TYPE. The default Docker Compose file does not pass that variable, so Qdrant stays in use unless you add it to the service environment.
Application data (MongoDB)
MongoDB stores application data that is not part of the knowledge graph: sessions, file metadata, and similar state.Files
The contents of files are not stored in MongoDB. They live on local disk, S3, or Azure Blob, through the storage module in the API.How services hand work to each other
Connectors publish records, and Indexing consumes them. That path is the event bus in the architecture diagram.- On a local machine, the event bus is Redis Streams (
MESSAGE_BROKER=redis). Kafka is not started. - In a larger deployment, the event bus is Apache Kafka (
MESSAGE_BROKER=kafka).
Cache, configuration, and Redis
Redis always runs. It can do three jobs, depending on how you deploy:- Cache — frequently used data and locks.
- Encrypted configuration — the default key-value store for settings (
KV_STORE_TYPE=redis). - Event bus — Redis Streams, when
MESSAGE_BROKER=redis.
Optional: etcd
etcd is the other place to keep encrypted configuration. A default install uses Redis for this. To use etcd, setKV_STORE_TYPE=etcd and enable the Compose profile kv-etcd.
etcd settings
These environment variables tell PipesHub how to reach etcd. They belong on thepipeshub-ai service, which runs the Python services and the Node.js API; the etcd service doesn’t read them. The Compose files already set ETCD_URL, ETCD_HOST and ETCD_TIMEOUT there, pointing at the bundled etcd service, and leave ETCD_PORT at its default.
When etcd authentication is in use, the Python services renew their login by themselves when etcd’s login token expires (after 5 minutes by default), so they keep working without a restart. The password is never written to the logs.
If the configuration store is down when a service starts and saves its vector collection setting, the service stops with “Could not persist the initial collection strategy to the config store”. The message ends with the next step: check that the config store (Redis or etcd, whichever
KV_STORE_TYPE selects) is running and reachable, then restart the service.