Skip to main content
Released August 26, 2026 · Stable · View on GitHub 0.7.0 opens PipesHub up to external tooling and new deployment shapes. Any member can now mint a scoped, revocable personal access token to connect an external agent or script to the API and MCP server, and the MCP server itself runs on the new agent loop. A GitHub teams connector and a HackerNews datasource join the connector catalog, a code parser makes source files searchable with correct citations, and multimodal embeddings, an EPUB parser, and AWS Bedrock widen the model and content layer. Self-hosting gets a one-command Docker installer that pulls fresh images, checks host resources, and reports clearly when something fails on first run. Roughly 100 merged PRs since 0.6.0. Operators should read the upgrade notes: org admin privilege moves from admin user groups to a role field on users via a boot migration, a storage-record org-ID backfill runs on startup, the installer renames Compose containers, and MCP / Actions are now controlled from Labs feature flags rather than environment variables.

Highlights

Personal access tokens for MCP and API access

Any org member can create a long-lived, scoped, revocable Personal Access Token under Workspace → Developer Settings, for example to connect an external agent to the PipesHub MCP server without borrowing a 24-hour session token or an admin-owned OAuth app that ignores per-user permissions. PATs are minted through the existing OAuth access-token machinery via an auto-created per-org system app, carry a phpat_ prefix so secret scanners recognize them, and default to a 30-day expiry (#2933 — @shekharkadyan). They are documented in the OpenAPI spec (#2940), and a follow-up fixed PATs failing on any route that forwards the auth header to a downstream service (#2971).

MCP server on the new agent loop, gated from Labs

The MCP server now runs its tools through the new agent loop (#2830 — @tushar1245). MCP is enabled from the Labs settings page rather than an environment variable, and code execution is now env-only via PIPESHUB_ENABLE_CODE_EXECUTION (#3044). Actions and toolsets sit behind a new ENABLE_ACTIONS platform flag, enabled by default, so admins can hide them from the navigation, agent builder, and chat (#3045). A schema-loss bug that broke MCP tool arguments was fixed (#3078).

GitHub teams connector, HackerNews datasource, and a code parser

A GitHub teams connector lands, with the personal GitHub connector refactored to share its methods (#2989 — @darshangodase). A HackerNews API client and datasource were contributed (#3060 — @igennova). Source files are now parsed by a dedicated code parser (#3014 — @jatingaur18) and citations into code files were fixed (#3064).

Multimodal embeddings, EPUB, AWS Bedrock, and pasted text

Multimodal embeddings and an EPUB parser were added (#2919 — @abhishekgml1991), with support for multimodal OpenAI-compatible embedding endpoints (#2952 — @TatshSiow) and image context-engineering changes so images reach the model with better surrounding context (#3084). AWS Bedrock joins the supported model providers (#3062 — @abhishekgml1991). In chat, long pasted text becomes an attachment chip with a preview dialog instead of flooding the input (#2889). Model access on an agent is now optional (#2960).

Query service throughput, phase two

Building on the 0.6.0 overhaul, this round targets CPU in the query path: a read-through Redis cache of each user’s accessible record IDs, invalidated from the connector and indexing services; batched graph and storage lookups with a bounded process-wide HTTP session and Redis client; optional direct provider-SDK transports for Azure OpenAI, OpenAI, Anthropic, and Gemini behind PIPESHUB_AGENT_TRANSPORT; and a fix for the Node gateway building a public key on every JWT verify (#2963 — @shrikantNemiwal1). Measured at 4 workers / 32 users: steady-state throughput up from 37.8 to 43.0 req/min, p50 turn latency 34.4 s → 27.9 s, and Node gateway p50 2,738 ms → 573 ms. The accessible-records cache is on by default and can be disabled with PIPESHUB_ACCESSIBLE_RECORDS_CACHE=0; a loadtest harness ships alongside.

Admin role moves to the user record

Org admin privilege now lives on User.role (admin | member) instead of membership in a legacy admin user group. A one-time boot migration promotes admin-group members, defaults everyone else to member, and soft-deletes the admin groups only if at least one admin remains. Access tokens carry the role, role changes force a logout, and last-admin demotion is blocked (#2939 — @Pranjal-wq, integration tests in #2981). Follow-ups let members invite other members (#3023), confirm role changes and show Groups as an Enterprise placeholder (#3005), and allow changing the role on a pending invite (#3056).

One-command Docker installer

A new install.sh at the repo root installs PipesHub with a single curl | bash or ./install.sh from a clone. It checks Docker, RAM, and disk, offers slim vs full and a choice of graph database, broker, and KV store, writes a .env with random secrets, pulls fresh app and sandbox images, and waits until the app is reachable on the host. First-run failures are clearer: crash-loop detection distinguishes exit 137 from 139, a stale COMPOSE_PROFILES is repaired, and indexing model loaders try the local cache first so air-gapped hosts don’t hang (#2634 — @shekharkadyan). The installer now tells you where to re-run it after a curl or clone (#3083), and CI tests a first-run install against Docker Hub images (#3076).

Stateless Docling processing and adaptive parsing

Docling document processing was separated into stateless services, with batched PDF processing for large documents and lightweight table enrichment when advanced enrichment is unavailable; legacy PDF-processing and block-creation endpoints were removed (#2950 — @kaushal1999). An adaptive parsing strategy picks the parse path per document (#2980 — @kaushalwaghela-art), vector-graphics-heavy PDFs no longer stall pdfplumber (#3007), and image-heavy PDF pages are routed to OCR (#3033 — @TatshSiow).

Breaking changes & upgrade notes

  • Admin role migration. On first boot, admin user-group members are promoted to role=admin and the admin groups are soft-deleted; user JWTs without a valid role are rejected, so users re-login once. Admin checks now read the role from the database (#2939).
  • Org-ID backfill for storage records. A startup migration backfills orgId on storage documents in MongoDB (#3059 — @vishwjeet-pawar03).
  • Compose container names change. Existing Docker Compose installs recreate every container on the next ./install.sh; names become {project}-{service}-1 (default pipeshub-ai-pipeshub-ai-1), so docker exec pipeshub-ai must become docker compose -p pipeshub-ai exec -T pipeshub-ai …. Data volumes are unchanged (#2634).
  • Feature flags move. ENABLE_MCP is now controlled only from Labs (the PIPESHUB_ENABLE_MCP env override is gone); code execution is env-only via PIPESHUB_ENABLE_CODE_EXECUTION and its Labs toggle was removed (#3044). Actions/toolsets are gated by a new ENABLE_ACTIONS platform flag, default on (#3045).
  • New query-path defaults. The accessible-records cache is enabled by default (PIPESHUB_ACCESSIBLE_RECORDS_CACHE); direct LLM transports (PIPESHUB_AGENT_TRANSPORT=direct) and signed-URL caching (PIPESHUB_SIGNED_URL_CACHE_SECONDS) are opt-in (#2963).
  • Docling API surface. Legacy PDF-processing and block-creation endpoints were removed from the Docling service (#2950).
  • Embedding cleanups are now behind a feature flag (#3077 — @vishwjeet-pawar03).

Connectors

  • GitHub — new teams connector; personal connector refactored onto shared methods (#2989 — @darshangodase).
  • HackerNews — new API client and datasource (#3060 — @igennova).
  • Jira Data Center / Confluence Data Center — placeholder handling and custom hierarchy support (#2878 — @darshangodase); spacing fix in action names (#3034).
  • Linear — placeholder handling (#2880 — @darshangodase).
  • Notion — reindexing fix and API resilience (#3022 — @shrikantNemiwal1); placeholder handling (#3085).
  • Google Drive / Gmail — record streaming now iterates over all permissioned users instead of only the first (#2965 — @R0gue-one); Gmail shared-mailbox search links no longer always point at the synced owner’s account (#3011 — @aesp2008).
  • GitLab — connector fixes (#3058 — @darshangodase).
  • Web — S3 storage for the web connector fixed (#2983 — @kaushalwaghela-art).
  • RSS — record preview no longer fails with “File URL not available” (#3079 — @uncleSlayer).
  • Mail — conversation index on mail records (#2972 — @shrikantNemiwal1).
  • A broad sync of accumulated changes across the Node.js API — Slack bot integration, configuration manager, mail templates, storage, and user management (#3028 — @vishwjeet-pawar03).

Agents & AI

  • Structured JSON output is recovered from validation errors instead of failing the turn (#2948 — @TatshSiow).
  • A prompt-injection guard was added to the sub-agent execution rules (#2987 — @abdul-5844).
  • Toolset actions for the assistant agent were fixed (#2977 — @vishwjeet-pawar03); dedicated prompts for internal search and web search were removed in favour of the agent loop’s defaults (#3031).
  • Reindexing embeddings was fixed (#3080 — @jatingaur18); Qdrant gains off-disk storage support (#2995 — @abhishekgml1991).
  • The webSearch schema description is now endpoint-neutral (#2968 — @uncleSlayer).

Fixes

  • Chat mode selection fixed (#2966 — @vishwjeet-pawar03); streamed markdown tables and citations no longer flicker (#3082 — @tushar1245).
  • The skills section was removed and the agent sidebar can now expand (#2978); model names display correctly in the UI (#3063); the search UI option was fixed (#3067 — @abhishekgml1991).
  • A red dot now flags when default filters have been changed (#2974 — @darshangodase).
  • Record preview skips streamRecord when the record is not preview-renderable (#2979 — @Pranjal-wq).
  • Korean and Chinese (Taiwan and Singapore) UI languages added (#3051 — @rish664).
  • A users-controller route had its HTTP method type corrected (#2986 — @vanshg685).
  • A batch of OSS bug fixes (#3072 — @jatingaur18).

Performance & reliability

  • Vector cleanup is no longer lost on record delete when the broker publish fails (#3013 — @aesp2008).
  • Telemetry pushes no longer hit HTTP 413 (#3073 — @rish664).
  • Noisy logs were dropped to debug level across services (#3066, #3070 — @abhishekgml1991), with tests updated to match (#3071 — @igennova).

Security & authentication

  • An x-is-admin header injection path was closed; admin status now comes from the JWT role (#2985 — @Pranjal-wq).
  • The uuid package was replaced with crypto.randomUUID() in the Node.js backend (#3020 — @rish664).
  • Dependency bumps: cryptography 48 → 50, authlib, urllib3, idna, setuptools, langchain-classic in integration tests (#2898, #2268, #2253, #2346, #2755, #2271); ip-address / express-rate-limit, undici, fast-uri, engine.io, body-parser in the Node.js API (#2953, #2954, #2957, #2804, #2746); nanoid, tar / electron-builder / app-builder-lib / builder-util-runtime, nodemailer / monocart-reporter in the frontend (#2934, #2806, #2805, #2803, #2730).

Developer experience & infrastructure

  • AGENTS.md documents the repo for coding agents (#2984 — @shekharkadyan); Windows npm setup clarified (#2998 — @mdakram2002).
  • A unified system health-check script (#3048 — @Saneajayy) and a changelog CI job (#3061 — @rish664).
  • OpenAPI / SDK generation: agent-capability default values (#2949), a duplicate oauth2 requirement that blocked SDK generation (#2956), review-comment descriptions (#2967), and usesOrgDefault / userOrgDefault in the create-agent response (#2964, #3026) — all @uncleSlayer.
  • Integration tests: enterprise-search ITs fixed to cut LLM cost (#2924), x-request-id propagated (#2970), Notion added to the workflow (#3042 — @shrikantNemiwal1), timeout raised from 180 to 300 minutes (#3075 — @siddhantota).
  • Unit tests: RSS tests no longer make real network calls (#2982); test updates (#3050 — @jatingaur18).
  • Cleanup: the logs directory (#3019 — @rish664) and an unused test script (#3029 — @kaushalwaghela-art) were removed.

New contributors

  • @kaushalwaghela-art made their first contribution in #2980
  • @abdul-5844 made their first contribution in #2987
  • @mdakram2002 made their first contribution in #2998
  • @aesp2008 made their first contribution in #3011
  • @Saneajayy made their first contribution in #3048
  • @igennova made their first contribution in #3060
  • @siddhantota made their first contribution in #3075

Full commit-level detail: GitHub release · Compare view