All notable changes to PipesHub — the workplace AI platform for enterprise search and agent workflows — documented in one place, newest first.
This file is the release registry: each entry is a condensed summary linking to the detailed per-release changelog in changelog/ (full PR-level accounting and author credits) and to the raw GitHub release. Versioning follows semver; Stable releases are recommended for production, Beta/Alpha channels preview the next stable.
| Version | Date | Channel | Theme |
|---|---|---|---|
| 0.7.0 | Aug 26, 2026 | Stable | PATs, GitHub connector, Bedrock, one-command installer |
| 0.6.0 | Aug 10, 2026 | Stable | New agent loop ships stable; query service ~1.8× faster |
| 0.6.0-beta | Aug 1, 2026 | Beta | New agent loop, standalone parsing & extraction, OpenSearch |
| 0.5.0 | Jul 1, 2026 | Stable | Atlassian Data Center, agent action tools, open model layer |
| 0.4.5 | May 20, 2026 | Stable | GitLab self-managed (EE), slimmer deployments |
| 0.4.4 | May 18, 2026 | Stable | Jira & Confluence Data Center connectors |
| 0.4.3 | May 16, 2026 | Stable | Production Helm chart, chat attachments, Vertex AI |
| 0.4.0 | May 5, 2026 | Stable | Next.js frontend; GitLab, Salesforce, Zoom connectors |
| 0.4.0-beta.2 | May 2, 2026 | Beta | Preview of the 0.4.0 cycle |
| 0.3.0 | Mar 20, 2026 | Stable | Agent toolsets, MCP server, Slack bot platform, Neo4j |
| 0.2.0 | Feb 11, 2026 | Stable | 15+ new connectors, multi-instance, OAuth2 provider |
| 0.1.0 | Dec 23, 2025 | Stable | First stable release |
| 0.1.0-beta | Dec 9, 2025 | Beta | Connector filters, five new sources, security sweep |
| 0.1.2-alpha | Dec 2, 2025 | Alpha | Confluence & SharePoint connectors, Azure AI models |
| 0.1.1-alpha | Nov 5, 2025 | Alpha | BookStack & ServiceNow connectors, SAML JIT |
| 0.1.0-alpha | Oct 28, 2025 | Alpha | Founding release |
Changes merged to main since the last release: v0.7.0...HEAD.
- Indexing no longer collapses to a few records once a Jira/Confluence sync hits its attachments. The consumers' read-ahead cap was one number shared by both document tiers, so attachments (heavy: PDF, Office, images) queued for minutes on the heavy index gate filled it and light pages and issues were never dispatched although the light pool sat idle — throughput dropped to the heavy-parse rate after the first few hundred records, with CPU and memory unused. Dispatch admission is now per tier: heavy may queue only
max(8, 2 × its current index limit)tasks under the unchanged total (MAX_PENDING_INDEXING_TASKSstill pins the total), the fair-scheduling key gains a tier level below(orgId, connectorId)so a connector's heavy and light records are sibling queues the scheduler can alternate between, and reads pause only when no tier can spawn a task. Same behaviour on Kafka and Redis Streams; the broker-order path (fair scheduling off) keeps the shared total. New gaugepipeshub_indexing_gate_waiters{broker,tier}and adispatchblock on the indexing service's/health. Full write-up indocs/indexing-service.md§5. - A cancelled graph transaction now rolls back instead of leaking its Neo4j connection.
asyncio.CancelledErroris aBaseException, so theexcept Exceptionaround the transaction context manager let the record-processing timeout (and the lost-lease guard) cancel a record mid-transaction with neither rollback nor commit; the session stayed registered and its pooled connection was never returned. Under load this exhausted the 100-connection pool roughly 25 minutes into a run (failed to obtain a connection from the pool within 60s), which slowed every query, tripped more timeouts, and cascaded into Redis lease and retry-counter failures. Both the transaction context manager and the explicit transaction in the entity handler now roll back on any interruption. - Indexing in-flight width is now bounded by what downstream can absorb, and adapts to downstream health, on both Kafka and Redis Streams. The resource governor already derived the parse and index ceilings from the container's CPU quota, but the index ceilings alone could reach 512 records per tier (352 in flight on 16 CPUs) with nothing about Neo4j's 100-connection driver pool, the lease Redis pool or the parsing/embedding services bounding them. The total index budget is now
6 × CPUbetween 24 and 96 (heavy sized first, light keeping a reserve),MAX_CONCURRENT_INDEXINGstill overrides it, and each parse ceiling is held to its index tier. Downstream symptoms — a 429, an exhausted Neo4j or Redis connection pool, an unreachable service, repeated request timeouts, or a rising per-record hold time — now feed the governor, which halves (or trims) the index pools within one sample and holds growth until two clean samples have passed. Both consumers read the same gates, so Kafka pauses partitions and Redis stops reading at the same width. The read-ahead cap (pending_task_ceiling) follows the live limits instead of the fixed ceilings. No new environment variables: the thresholds are constants, andMAX_CONCURRENT_PARSING/MAX_CONCURRENT_INDEXINGremain optional caps that should normally be left unset. - Failure amplifiers under a downstream stall are removed. The parsing client's read timeout is derived from
RECORD_PROCESSING_TIMEOUT(80% of it, at most 40 min; it was a flat 40 min, longer than the record budget, so it could never fire) and a retry is only scheduled when it can finish inside that budget; blob-storage uploads share the pooledaiohttpsession with a per-read stall timeout instead of opening an unbounded session per call; transient blob-storage failures (connection resets, gateway 502/503/504, socket timeouts) are retried up to three times with jittered backoff on the idempotent requests (record fetch, signed-URL fetch, signed upload) so one blip no longer fails a record into a full re-parse, while placeholder creation is retried only when the connection was never established; a cancelled record no longer cancels the XACK/commit/requeue already in flight on the main loop (each cancellation tore down a Redis connection and forced a reconnect against a starved pool); and leases lost because renewals kept failing are no longer released one by one against the Redis that is failing. The Neo4j client retries a lost connection on its existing pool before rebuilding the driver, rebuilds at most once per 30s, ensures the database exists once rather than on every rebuild, fails pool acquisition after 30s instead of 60s, and reaps transaction sessions nobody committed or aborted.NEO4J_MAX_CONNECTION_POOL_SIZE(default 100) is the one new setting, for deployments whose Neo4j bolt thread pool is sized differently. - Real Neo4j transactions, behind
NEO4J_EXPLICIT_TRANSACTIONS=true(off by default). What the graph layer called a transaction was a session on which every query auto-committed, so a rollback could not undo anything and a record cancelled mid-write left partial graph state. With the flag on,begin_transactionopens a real transaction (120s server-side timeout), abort rolls it back, and a transaction block that hits a deadlock or lock timeout is re-run up to three times. It ships off for one release because explicit transactions hold node locks until commit, which changes contention on nodes many records write to (departments, categories); enable it on a staging deployment first and watch forDeadlockDetectedin the indexing logs. - Waiting for a parse slot no longer eats a record's processing budget. Each index tier admits twice its parse slots by design, so a heavy record routinely queues for a slot behind Docling conversions that take many minutes; that wait was charged to
RECORD_PROCESSING_TIMEOUT, and three such timeouts dead-lettered a record that had never reached the parsing service. The record clock now pauses while queued, the wait is bounded separately (by the same value), a record that is not admitted in time is re-queued without counting an attempt, waits over 5s are logged with their duration, and the admission gate hands out permits in arrival order instead of waking every waiter to race for them. - A document the parsing service cannot parse now returns 422, not 500. Only
UNSUPPORTED_FORMATandINVALID_INPUTwere 422; every otherParseErrorwas a 500, which the indexing service's HTTP client treated as a service outage: it retried the document, counted it against the parsing circuit breaker, and five unparseable files in a row opened the breaker so every other record in flight failed fast for 30s and was re-queued to the back of its lane with a retry attempt spent. The client reads the error code from the body on any non-2xx, so the record now fails as a document error on the first attempt and the breaker only opens for real outages. - Dead-lettering is more robust on both brokers. The retry counter's
INCRandEXPIREare one transaction (a failure between them left a counter with no TTL); a Redis error while acknowledging an abandoned message leaves it pending for the next drain instead of dispatching it as healthy; and the Kafka consumer gains the delivery-count backstop the Redis consumer already had, so a message that crashes its consumer before the failure counter is written is abandoned afterREDIS_MAX_DELIVERIESdeliveries rather than redelivered forever. - Connector deletion is now "an administrator, or whoever created it", for both team and personal connectors. Previously a team connector could only be removed by an admin (not its creator) and a personal one only by its creator (not an admin) — so a connector whose creator had left the org could not be deleted by anyone. Reading and updating are unchanged: an admin still cannot open or alter another user's personal connector.
- Connector access is now scoped to the caller's organization. Instances were looked up by id with no org filter, so for a team connector t 8000 he check reduced to "is an admin" — an admin of one org who learned an id from another would have passed it.
- MD5 deduplication is now scoped to a single organization. It previously matched across every org in the deployment, so two orgs uploading byte-identical content shared one
virtualRecordId, onesummaryDocumentId, and a copied set of graph relationships. On upgrade, content that was deduplicated across orgs re-indexes once per org: expect a one-off rise in indexing volume and vector-store size proportional to how much content your orgs genuinely share. Existing records are not rewritten, and no migration is required. - New
VECTOR_COLLECTION_STRATEGYsetting (defaultsingle, which is the existing behaviour;per_connector_typegroups records into one collection per connector type). It is read only on the first startup that finds nothing persisted; after that the stored value wins, and a value that contradicts it fails startup rather than silently resolving to collections that hold no data. Changing it on a live deployment is the embedding-rebuild procedure, not a config edit. - Redis connections are now built by a single provider per backend (
IRedisConnectionProviderin Node.js and Python), in preparation for AWS MemoryDB / Redis Cluster support.REDIS_MODE(defaultstandalone, unchanged behaviour) selects the wire protocol;clustertalks Redis Cluster / MemoryDB instead of a single node, and any other value is dispatched throughREDIS_PROVIDER_MODULEfor enterprise-only backends. TLS is now honoured everywhere a Redis client is created — previously onlyredis.service.tsandbuild_redis_url()readREDIS_TLS; the KV store, accessible-records cache, Redis Streams producer/consumer, and the migration service silently ignored it. A deployment currently runningREDIS_TLS=trueagainst a plaintext Redis will now actually enforce TLS and fail to connect; verify your Redis endpoint supports TLS (or unsetREDIS_TLS) before upgrading.REDIS_DBis deprecated: still honoured underREDIS_MODE=standalone, but rejected at startup for any other mode, since neither Redis Cluster nor MemoryDB supportSELECT. UseREDIS_KEY_NAMESPACEfor key isolation instead (it covers the config KV store and its cache-invalidation channel, the session/app cache, the accessible-records cache, retry counters, distributed leases and the crawling queue). It does not cover Redis Streams topic or consumer-group names, soREDIS_KEY_NAMESPACEtogether withMESSAGE_BROKER=redisis rejected at startup — two deployments sharing one endpoint would otherwise consume each other's messages. Give the stream broker its own Redis per deployment, or useMESSAGE_BROKER=kafka. REDIS_TLS_ENABLED/REDIS_TLS_REJECT_UNAUTHORIZEDaccepttrue/1/yes/onandfalse/0/no/off(case-insensitive, whitespace trimmed); any other non-empty value now fails startup instead of being silently treated asfalse. Previously only the literaltruewas recognised, soREDIS_TLS_ENABLED=1produced a plaintext connection still carrying the Redis password, andREDIS_TLS_REJECT_UNAUTHORIZED=yessilently disabled certificate verification.REDIS_TLS_REJECT_UNAUTHORIZED=falseis now refused when Redis credentials are configured. Disabling certificate verification leaves the connection encrypted but unauthenticated, so the password is exposed to anyone who can intercept it. SetREDIS_TLS_CA_PATHto the CA that signed your Redis certificate instead. Deployments without TLS, or with TLS and no credentials, are unaffected.REDIS_TLS_ENABLEDis now OR-ed with the TLS flag stored in the admin-UI Redis config, so a deployment that enabled TLS through the UI (and never set the env var) keeps negotiating TLS rather than silently dropping to plaintext.REDIS_TLS_CA_PATHis now read as a file and its contents passed to the client; a path that cannot be read fails at startup instead of being quietly ignored.- The crawling queue moved from BullMQ's default
bullkey prefix to the hash-tagged{crawling}, required so BullMQ's multi-key Lua scripts stay within one Redis Cluster / MemoryDB slot. Jobs written under the old prefix are invisible to both the queue and the worker, so the connector-sync scheduled-jobs backfill re-runs once on the first boot after upgrade (under a new/migrations/connector_sync_scheduled_jobs_v2flag), re-creating every schedule from the connector's persistedsyncblock and sweeping the strandedbull:*keys. No action required; expect one extra migration pass in the startup logs. VECTOR_DB_TYPE=redisis now gated onVECTOR_REDIS_MODE(defaulting toREDIS_MODE) rather than onREDIS_MODEalone.FT.HYBRIDneeds Redis ≥ 8.4 in standalone mode, which MemoryDB does not provide — but the vector store keeps its ownREDIS_VECTOR_*connection, so running the app against MemoryDB with the vector index on a standalone Redis is valid: setVECTOR_REDIS_MODE=standalone.
Personal access tokens, a GitHub connector, AWS Bedrock, and a one-command installer · Stable · v0.7.0 · Full changelog
~100 PRs since 0.6.0. PipesHub opens up to external tooling: scoped personal access tokens for the API and MCP server, an MCP server on the new agent loop, and a one-command Docker installer for self-hosting, alongside a GitHub teams connector, a code parser, multimodal embeddings, and AWS Bedrock.
- Personal access tokens: scoped, revocable,
phpat_-prefixed credentials any member can mint for MCP and API access (#2933, #2971). - GitHub teams connector (#2989), HackerNews datasource (#3060), and a code parser with correct citations into source files (#3014).
- Multimodal embeddings and an EPUB parser (#2919), AWS Bedrock as a model provider (#3062), and pasted text as a chat attachment (#2889).
- One-command Docker installer (
curl | bashor./install.sh) with image refresh, host checks, and clearer first-run failures (#2634).
- MCP server runs on the new agent loop (#2830); Docling processing split into stateless services with adaptive parsing (#2950, #2980).
- Query service throughput phase two: cached accessible-record IDs, batched graph/storage lookups, optional direct provider transports; p50 turn latency 34.4 s → 27.9 s, Node gateway p50 2,738 ms → 573 ms (#2963).
- Vector cleanup no longer lost on record delete when the broker publish fails (#3013); Drive/Gmail record streaming covers all permissioned users (#2965); Gmail shared-mailbox links point at the right account (#3011).
- Notion reindexing and API resilience, MCP tool-argument schema loss, streamed-table flicker, and a long tail of parsing and UI fixes.
x-is-adminheader injection closed; admin status derives from the JWT role (#2985). Prompt-injection guard on sub-agent execution (#2987).
- Admin privilege migrates from admin user groups to
User.roleon first boot; users without a role in their JWT must re-login (#2939). A storage-recordorgIdbackfill also runs at startup (#3059). - Compose containers are recreated and renamed to
{project}-{service}-1;docker exec pipeshub-aibecomesdocker compose -p pipeshub-ai exec -T pipeshub-ai …(#2634). - MCP is toggled from Labs only (
PIPESHUB_ENABLE_MCPremoved), code execution is env-only, and Actions sit behind a newENABLE_ACTIONSflag (#3044, #3045). Legacy Docling PDF/block endpoints were removed (#2950).
The new agent loop ships stable, and the query service gets ~1.8× faster · Stable · v0.6.0 · Full changelog
Finalizes 0.6.0-beta with ~50 additional hardening PRs (~195 total since 0.5.0). The rewritten agent runtime becomes the sole execution mode, and a query-service performance overhaul roughly doubles chat throughput.
- The new agent loop is now the only agent execution mode (#2702, #2879), with tuned prompts, the Slack bot migrated onto it, and its navigate/lookup tools exposed over HTTP for MCP (#2937). Reasoning-effort support runs through agents, indexing, and the OpenAPI spec.
- Omnigent integration for the PipesHub MCP server under
integrations/omnigent/(#2902); MCP server updated to v2.2.0. - DOCX and CSV chat attachments (#2894); bulk user invites from CSV/Excel now include a pre-send review step (#2912).
- Query-service performance overhaul: ~1.8× throughput, p50 turn latency halved (36 s → 17.8 s), SSE traffic down 28× (#2872).
- Redis Streams producer no longer gets permanently poisoned after a
disconnect()— the client is recreated on reconnect (#2867). - OpenAI Responses API compatibility: correct token-limit truncation detection and normalization of structured responses (#2876, #2917).
- GitLab connector fixes, AQL
coalesce→not_null, chat markdown with$signs, citation popover, artifact creation, and a long tail of UI and indexing fixes.
- Knowledge-base record groups migrate to connectors on upgrade (#2650).
- Parsing and extraction run as separate flag-gated services (#2541, #2734).
GRAPH_DB_TYPEremoved; Helm chart defaults the message broker to Redis with Kafka/ZooKeeper conditional (#2887).- Atlassian site URL removed from connector configuration (#2693); Docker image RAM limit raised (#2853).
New agent loop, standalone parsing & extraction services, OpenSearch arrives · Beta · v0.6.0-beta · Full changelog · Finalized as 0.6.0
Roughly 140 PRs reworking two core engines: the agent runtime gets its new loop implementation, and document parsing/data extraction split out of indexing into their own services.
- New agent loop implementation (#2702).
- Standalone parsing and extraction services behind a deployment flag (#2541), with health checks, concurrency hardening, and base64-free PDF transport to Docling.
- OpenSearch as a supported search backend (#2547); web connectors rebuilt on crawl4ai (#2641).
- Bulk user invites via CSV/Excel upload (#2715); Slack personal connector (#2801); Box shared-files sync; Google Drive shared-drive and folder filters.
- Jira DC and Confluence DC agent toolsets (#2661, #2667).
- Docling is the default PDF parser with OCR fallback (#2724, #2672); OCR page caps, per-call VLM-OCR instances, memory/latency optimizations, and batched table-indexing LLM calls.
- Retrieval context enriched with related records from graph edges (parent/child/attachment metadata) (#2596).
- MongoDB deployment stability, message-broker retry support, EMFILE file-descriptor limits, indexing-failure propagation to MD5 duplicates, reliable PPT/PPTX preview with CJK fonts, and Outlook long-lived-connection transport.
Jira & Confluence go Data Center, agents get real tools, model providers open up · Stable · v0.5.0 · Full changelog
A large stable release: 230+ PRs since 0.4.5. Enterprise self-hosted reach, agents that act rather than just answer, and an open model layer.
- Full Jira and Confluence Data Center support — roles, groups, permissions, comments, attachments, audit logs, retries (#2435, #2528).
- Agent action tools: Salesforce (e.g. pricebook updates), Google Drive files, upload/fetch storage, and an ask-user-question tool for mid-run clarification (#2223, #2210, #2299, #2238).
- First-class OpenRouter, LiteLLM proxy, and LM Studio providers (#2621, #2628); per-function model roles; a dedicated local embedding service (#2466).
- New parsers: MarkItDown, pdfplumber, selectolax; code-file indexing from knowledge bases; an in-app notification service over Kafka → Node.js → WebSockets (#2431).
- One-command installation script for self-hosting (#2590); Linear API-token auth.
- Confluence content pipeline rebuilt on ADF → blocks (comments included) instead of raw HTML pass-through (#2497).
- GitLab connector matured: incremental sync, repo-tree pagination, batch code-file fetching, and a major sync speedup (#2438, #2443).
- Memory leaks across services (#2408); new ArangoDB indexes; Qdrant delete-points API for embedding deletion; Redis deadlock on unparseable messages; etcd watcher leak; OAuth errors now surface to the frontend.
GitLab self-managed (EE) support and slimmer deployments · Stable · v0.4.5 · Full changelog
A ~20-PR patch release.
- GitLab connector support for self-managed Enterprise Edition instances (#2337).
- Multiple authentication mechanisms per org side by side (#2341).
- Slimmer Docker image (#2325); port 3001 exposed directly and the separate connector public URL removed (#2326).
- SAML JIT provisioning, Arango cleanup on connector-instance deletion, deep-agent conversation bleed, and Redis consumers dropping unparsable messages instead of retrying forever (#2335).
Jira and Confluence Data Center connectors · Stable · v0.4.4 · Full changelog
A quick ~20-PR patch bringing on-prem Atlassian into PipesHub search.
- Docker image optimized for size and build time (#2304).
- PPTX format detection, Mermaid rendering, chat image overflow, forgot-password error display, and connector-filter pruning.
Production-ready Kubernetes deploys, chat attachments, and Vertex AI · Stable · v0.4.3 · Full changelog
First patch series on 0.4.x, ~90 PRs.
- Production-grade Helm chart: StatefulSets, horizontal pod autoscaling, Kind-based dev flow (#2179).
- Chat attachments (PDF/JPG/PNG) from the UI and Slack (#2190); Google Vertex AI provider (#2279); Exa web-search engine (#2241).
- PipesHub CLI for environment setup and configuration (#1772); SharePoint toolset.
- Search and conversation APIs made SDK-ready with an OpenAPI spec cleaned up to match reality (#2267).
- Secrets masked in configuration API responses (#2293); deletion guards for models/connectors that agents depend on; proactive token refresh; knowledge-hub memory-exceed fix; broad connector, citation, and UI fixes.
Next.js frontend replaces the React UI; GitLab, Salesforce, and Zoom connectors land · Stable · v0.4.0 · Full changelog
A very large release — 380+ PRs since 0.3.0.
- Coding sandbox with artifacts and an image-generation model type (#2031); speech-to-text and text-to-speech model types; web search for the assistant (#1903); deep-agent critic + reflector loop (#1739).
- Connectors: GitLab v1 (#1857), Salesforce connector + toolset (#1787, #1862), Zoom connector + toolset, personal Outlook (#1756).
- First-class toolset pages plus Redshift, OneDrive, and Lumos toolsets; developer-settings page for OAuth 2.0 apps (#1913).
- Indexing reconciliation and SQL connectors (#1568); MiniMax provider; agent service accounts.
- Deployment: Redis as an optional Kafka replacement (#1823), Windows support, hot-reloading dev composes, log rotation, S3-compatible internal blob storage.
- The React SPA was rewritten as a Next.js application (#1882).
- Word-by-word answer streaming replaces large chunks (#2141); indexing throughput improved in two rounds; config reads no longer served from cache.
- Reset-password hardened against account enumeration (#2041); blocked-user cooling period; ArangoDB deadlock retries; frontend OOM prevention; hundreds of UI, citation, and connector fixes; unit-test coverage pushed above 90%.
- Legacy React frontend removed — Next.js is the only UI (#2169).
- Python services moved to Python 3.12 (#1755); single backend URL; SMTP step removed from onboarding; backend switched to the new custom MCP server (#2185); dev compose defaults to Neo4j.
Next.js frontend previews; GitLab, Salesforce, and Zoom connectors arrive · Beta · v0.4.0-beta.2 · Full changelog · Finalized as 0.4.0
The pre-release cut of the 0.4.0 cycle (350+ PRs). Previews the Next.js frontend alongside the legacy UI (removed in stable) and carries the same connector, sandbox, web-search, and deployment additions finalized in 0.4.0 above.
Agents get toolsets and MCP, Slack becomes a real bot platform, Neo4j joins as a graph option · Stable · v0.3.0 · Full changelog
150+ PRs; squarely an AI-platform release.
- Agent toolsets — Jira, ClickUp, MariaDB, Microsoft Teams, Outlook, GitHub — and a deep-agent mode (#1506, #1642).
- MCP server bundled with the main service (#1611) on a matured OAuth2 stack (RFC 9728 resource metadata, developer settings, Cursor support).
- Neo4j as an alternative graph database alongside ArangoDB, including optional Helm support (#1427).
- Seven new datasources: RSS, ClickHouse, Lattice, Databricks, Lumos, ClickUp, personal GitHub.
- JIT SAML SSO (#1502); AWS Bedrock IAM-role credentials from EC2; OpenCV + PyMuPDF parser.
- Slack bot: streamed answers via the chat stream API, multiple bots per deployment, multi-user threads with @mention resolution (#1526, #1538, #1593).
- Web connector reliability overhaul: generator-based crawling, retries, domain scoping, better HTML cleaning.
- Cross-connector record leakage from identical
virtualIds (#1699); Knowledge Hub search/filter latency; async connector-instance deletion; SharePoint Graph API pagination.
- Deprecated endpoints and the signed-URL download route removed (#1470);
connector_disabled/pausedindexing statuses removed; manual-sync connectors no longer sync on startup.
The connector fleet goes wide: 15+ new sources, multi-instance connectors, and a built-in OAuth2 provider · Stable · v0.2.0 · Full changelog
260+ PRs turning the connector layer into a real platform.
- 15+ connectors/datasources: Jira, Box, S3, MinIO, GCS, Azure Blob, Azure Files, Nextcloud, Notion, Linear, Zammad, Zoom, dedicated Google Drive personal/enterprise, plus Monday, Snowflake, and Salesforce clients.
- Multi-instance connectors with per-instance credentials and sync filters (#1151).
- PipesHub as an OAuth2.0 provider with JIT account provisioning (#1321, #1347).
- Knowledge Hub API unifying browse and search (#1232); VLM-based OCR; LLM header detection for spreadsheets; Helm chart; Kafka SASL; Redis TLS.
- Knowledge bases re-architected as connectors (renamed "Collections") with automated migration (#1371).
- New graph-database abstraction layer:
IGraphDBProvider, fully async ArangoDB, Node.js API's direct Arango dependency removed (#1145, #1455). - Citations overhauled: filenames, grouping, and correct numbering across streaming and overflow cases.
- Token invalidation on logout, captcha on auth flows, user-enumeration fix, and the MongoDB "Mongobleed" CVE-2025-14847 fix (#1252).
- KB → connector migration runs on upgrade; "Public connector URL" setting removed; individual account creation removed; new env vars for rate limiting and token lifetimes.
First stable release: security hardening and connector filters mature · Stable · 0.1.0 · Full changelog
Finalizes the beta and alpha series; 23 PRs on top of the beta, focused on production readiness.
- Connector filters extended to Outlook and Confluence with manually triggered filtered syncs (#1122, #1132).
- SharePoint page indexing (#1129); Google Slides/Docs/Sheets on the unified blocks pipeline (#1130); Trello datasource.
- Configurable JWT expiry, stack traces stripped from API responses, stricter validation middleware (#1153, #1155, #1157).
Connector filters, five new data sources, and a security hardening sweep · Beta · 0.1.0-beta · Full changelog · Finalized as 0.1.0
40 PRs pushing toward stable.
- Connector filters scoping what gets synced (#1058); Dropbox, NextCloud, Trello, Bitbucket, and Workday data sources; MD5-checksum file version control (#1091); team management UI; Opik LLM observability.
- HTTP connections dying after ~a day of uptime (#1099); a sustained dependency-security sweep.
Confluence and SharePoint connectors land, Azure AI models, indexing pipeline overhaul · Alpha · 0.1.2-alpha · Full changelog
The largest point release of the alpha line (72 PRs).
- Confluence (#1017) and SharePoint (#1018) connectors; Azure-hosted OpenAI/Claude/Grok/DeepSeek models (#1048); OpenAI-compatible embedding endpoints; platform settings page.
- Indexing pipeline overhauled: reordered stages, batched embedding writes, faster Qdrant operations, more formats on the blocks schema (#975, #996).
BookStack and ServiceNow connectors arrive, SAML gets JIT provisioning · Alpha · v0.1.1-alpha · Full changelog
27 PRs one week after the founding release.
- BookStack (#887) and ServiceNow Knowledge Base (#894) connectors; SAML just-in-time user provisioning (#959); modality-aware LLM health checks.
The founding release: enterprise search platform, RAG pipeline, and a fleet of connectors from zero · Alpha · v0.1.0-alpha · Full changelog
PipesHub's first public release — nearly 700 PRs standing up the entire platform: a Node.js Express API (auth, users, knowledge bases), Python FastAPI microservices (connectors, indexing, query/RAG), a React frontend, and a stateful backbone of ArangoDB, Qdrant, MongoDB, Redis, Kafka, and etcd, shipped as self-hostable Docker Compose under Apache 2.0.
Highlights: a full RAG pipeline with token-level streaming and normalized citations; 10+ LLM and embedding providers (bring-your-own-model); 25+ connectors and datasources with an OpenAPI-driven client generator and connector registry; a unified blocks parsing schema with Docling for complex PDFs; the first agent tools and no-code agent builder; SAML SSO; and per-org knowledge bases with in-app viewers and citation highlighting.
Maintained with the release-changelog skill (.claude/skills/release-changelog/SKILL.md). Detailed per-release changelogs live in changelog/.