v1.2.0

konvajs/konvav1.2.0Jul 10, 2026by leseb

AI Summary

This release introduces significant enhancements to multi-tenancy, file processing, and container management while fixing critical compatibility issues with vector databases and AI providers.

Key Highlights

  • Added multi-tenancy isolation as a hard partition key independent of ABAC.
  • Expanded Files API to achieve OpenAI spec parity.
  • Introduced Containers API surface under /v1alpha.
  • Implemented Trivy security scanning in CI workflows.
  • Fixed Milvus 3.0 compatibility and Qdrant/Elasticsearch collection initialization.

Breaking Changes

  • Moved rerank code to sentence_transformers

New Features

  • Added GPU-enabled self-hosted runners for vLLM recording.
  • Added inline::unstructured file processor.
  • Added remote::unstructured-api file provider.
  • Added async/fallback support to docling-serve.

Full Release Notes

## What's Changed
* fix(vertexai): use structured logging key-value style by @major in https://github.com/ogx-ai/ogx/pull/6081
* chore: bump fallback_version to 1.1.1.dev0 by @cdoern in https://github.com/ogx-ai/ogx/pull/6084
* chore: Limit payload-bearing logs to debug (vector search, rerank, guardrails) by @franciscojavierarceo in https://github.com/ogx-ai/ogx/pull/6086
* docs: add Skills API to README, ARCHITECTURE, and provider docs by @varshaprasad96 in https://github.com/ogx-ai/ogx/pull/6087
* fix(milvus): use explicit output_fields in query_vector for milvus-lite 3.0 compatibility by @derekhiggins in https://github.com/ogx-ai/ogx/pull/6091
* fix(file_processor): offload sync parsing to thread pool by @derekhiggins in https://github.com/ogx-ai/ogx/pull/6095
* chore: dummy gpu ec2 runner workflow by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6102
* fix(vertexai): prevent RuntimeError from stale client after startup event loop by @goingforstudying-ctrl in https://github.com/ogx-ai/ogx/pull/6072
* docs: Adding OGX Paper by @franciscojavierarceo in https://github.com/ogx-ai/ogx/pull/6042
* fix(ci): make ci-status wait for flaky test re-runs by @leseb in https://github.com/ogx-ai/ogx/pull/6079
* fix(vector_io): propagate search errors instead of returning empty results by @derekhiggins in https://github.com/ogx-ai/ogx/pull/6093
* fix(containers): embed distribution configs as OCI labels on published images by @cdoern in https://github.com/ogx-ai/ogx/pull/6121
* chore(python-deps): bump pyjwt from 2.12.1 to 2.13.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6122
* chore: bump fallback_version to 1.1.2.dev0 by @cdoern in https://github.com/ogx-ai/ogx/pull/6119
* chore(python-deps): bump pytest-socket from 0.7.0 to 0.8.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6112
* chore(api-deps): bump openai from 2.41.0 to 2.41.1 in /src/ogx_api by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6110
* feat(ci): add Trivy security scanning by @nathan-weinberg in https://github.com/ogx-ai/ogx/pull/6074
* chore(python-deps): bump pypdf from 6.11.0 to 6.12.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6106
* fix(conversations): cascade delete orphaned conversation items by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6059
* feat(files): fix Files API gaps for OpenAI spec parity by @leseb in https://github.com/ogx-ai/ogx/pull/6127
* feat(multi-tenancy): add tenant isolation as a hard partition key independent of ABAC by @leseb in https://github.com/ogx-ai/ogx/pull/6126
* chore(python-deps): bump starlette from 1.1.0 to 1.3.1 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6125
* chore(github-deps): bump actions/cache from 4.2.3 to 5.0.5 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6108
* fix(file_processor): add ZIP decompression limits to MarkItDown processor by @derekhiggins in https://github.com/ogx-ai/ogx/pull/6100
* chore(github-deps): bump sigstore/gh-action-sigstore-python from 3.3.0 to 3.4.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6109
* chore(python-deps): bump cryptography from 48.0.0 to 48.0.1 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6124
* chore(deps): remove upper bound constraint on pydantic by @mattf in https://github.com/ogx-ai/ogx/pull/6131
* chore(python-deps): bump pypdf from 6.12.0 to 6.13.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6132
* fix(api-docs): Move vector stores docs to top-level tag by @franciscojavierarceo in https://github.com/ogx-ai/ogx/pull/6137
* chore(python-deps): bump python-multipart from 0.0.28 to 0.0.31 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6123
* chore: bump fallback_version to 1.1.3.dev0 by @cdoern in https://github.com/ogx-ai/ogx/pull/6138
* refactor(vector-io): Convert Qdrant, Milvus, Elasticsearch to eager collection initialization by @mattf in https://github.com/ogx-ai/ogx/pull/6144
* docs: document nimble web search provider in guides and starter distro by @wildcard in https://github.com/ogx-ai/ogx/pull/6082
* chore(ci): change CI to use ogx_open_client by @aegeiger in https://github.com/ogx-ai/ogx/pull/6016
* docs(blog): add guardrails Responses API post by @leseb in https://github.com/ogx-ai/ogx/pull/6029
* ci: record the bedrock inference suite in record workflow by @cdoern in https://github.com/ogx-ai/ogx/pull/6165
* fix(tests): add Bedrock replay recordings by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6166
* fix(bedrock): preserve bearer token env compatibility by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6167
* feat(ci): update pip_packages in registry specs during Dependabot PRs by @leseb in https://github.com/ogx-ai/ogx/pull/6156
* fix(vertexai): walk into routing tables to reset provider clients by @Artemon-line in https://github.com/ogx-ai/ogx/pull/6148
* refactor(core): replace bespoke DFS topological sort with graphlib.TopologicalSorter by @mattf in https://github.com/ogx-ai/ogx/pull/6157
* feat(containers): add Containers API surface under /v1alpha by @cdoern in https://github.com/ogx-ai/ogx/pull/5913
* refactor(server): decouple stack.initialize from authn and tenancy middleware by @mattf in https://github.com/ogx-ai/ogx/pull/6171
* fix(pgvector): ensure vector extension exists before creating connection pool by @Artemon-line in https://github.com/ogx-ai/ogx/pull/6168
* chore: bump fallback_version to 1.1.4.dev0 by @cdoern in https://github.com/ogx-ai/ogx/pull/6179
* fix(core)!: move rerank code to sentence_transformers by @zy1o in https://github.com/ogx-ai/ogx/pull/5882
* fix(tests): allow slower Bedrock chat completion recordings by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6175
* ci: support refreshing integration recordings via dispatch on main by @cdoern in https://github.com/ogx-ai/ogx/pull/6185
* fix(vertexai): pin google-genai below 2 by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6186
* fix(tests): re-key responses recordings broken by reranker provider rename (#5882) by @cdoern in https://github.com/ogx-ai/ogx/pull/6187
* feat: add GPU-enabled self-hosted runners for vLLM recording (#5793) by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6101
* refactor(server): move route-to-API map construction to lazy first-request build by @mattf in https://github.com/ogx-ai/ogx/pull/6173
* refactor: extract ZstdDecompressionMiddleware out of create_app() by @mattf in https://github.com/ogx-ai/ogx/pull/6174
* feat: add inline::unstructured file processor by @sahana-sreeram in https://github.com/ogx-ai/ogx/pull/6159
* fix: temporarily pin nodejs image version to avoid Premature Close errors by @rhdedgar in https://github.com/ogx-ai/ogx/pull/6213
* fix(responses): normalize empty function tool parameters to valid JSON Schema by @derekhiggins in https://github.com/ogx-ai/ogx/pull/6021
* fix: support developer chat messages by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6077
* feat(file_processors): add remote::unstructured-api provider by @sahana-sreeram in https://github.com/ogx-ai/ogx/pull/6076
* feat(file-processors): add async/fallback support to docling-serve by @sahana-sreeram in https://github.com/ogx-ai/ogx/pull/6014
* chore(github-deps): bump actions/cache from 5.0.5 to 6.1.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6201
* chore(python-deps): bump joserfc from 1.6.5 to 1.6.7 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6216
* fix(deps): bump urllib3 and python-dotenv constraints for multiple CVEs by @EleanorWho in https://github.com/ogx-ai/ogx/pull/6184
* chore(github-deps): bump actions/setup-python from 6.2.0 to 6.3.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6200
* chore(github-deps): bump actions/setup-java from 5.2.0 to 5.4.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6202
* fix: require replay checks in ci status gate by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6188
* chore(api-deps): bump opentelemetry-exporter-otlp-proto-http from 1.42.1 to 1.43.0 in /src/ogx_api by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6204
* chore(python-deps): bump python-socketio from 5.16.1 to 5.16.2 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6217
* fix(letsgo): use single asyncio.run() in run_letsgo_cmd for clean event loop lifecycle by @mattf in https://github.com/ogx-ai/ogx/pull/6206
* fix(file_processors): allow owner-encrypted PDFs in pypdf processor by @Artemon-line in https://github.com/ogx-ai/ogx/pull/6182
* fix: honor file_search ranking_options.weights by @Mykelxu in https://github.com/ogx-ai/ogx/pull/6198
* chore(api-deps): bump opentelemetry-sdk from 1.42.1 to 1.43.0 in /src/ogx_api by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6203
* docs: add June 30 blog for `ogx connect codex` by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6118
* chore(api-deps): bump openai from 2.41.1 to 2.43.0 in /src/ogx_api by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6153
* chore(github-deps): bump github/codeql-action from 4.36.0 to 4.36.2 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6154
* chore(python-deps): bump pydantic-settings from 2.14.1 to 2.14.2 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6150
* chore(python-deps): bump msgpack from 1.1.2 to 1.2.1 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6151
* chore(python-deps): bump pypdf from 6.13.0 to 6.13.3 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6142
* chore: update `ogx stack run` references to `ogx run` by @nathan-weinberg in https://github.com/ogx-ai/ogx/pull/6115
* fix(deps): bump aiohttp and pyjwt constraints for CVE-2026-34993 and CVE-2026-48526 by @EleanorWho in https://github.com/ogx-ai/ogx/pull/6183
* chore(python-deps): bump langgraph-sdk from 0.3.14 to 0.3.15 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6190
* fix(cli): resolve env var templates before validation in list-deps by @nathan-weinberg in https://github.com/ogx-ai/ogx/pull/5914
* feat(cli): support OGX_WORKERS env var to override worker count by @derekhiggins in https://github.com/ogx-ai/ogx/pull/6221
* fix(ci): include ogx-open-client in unified release pipeline by @aegeiger in https://github.com/ogx-ai/ogx/pull/6205
* ci(bedrock): enable OIDC web identity recording by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6169
* fix: pin vLLM metrics routing dependency by @skamenan7 in https://github.com/ogx-ai/ogx/pull/6220
* feat(security)!: strict TLS mode by @rhdedgar in https://github.com/ogx-ai/ogx/pull/5603
* feat(telemetry): expose OTel metrics via a Prometheus scrape endpoint by @cdoern in https://github.com/ogx-ai/ogx/pull/6034
* fix(docs): remove stale inline_transformers sidebar reference by @leseb in https://github.com/ogx-ai/ogx/pull/6229
* fix(docs): escape angle bracket in unstructured-api provider doc by @leseb in https://github.com/ogx-ai/ogx/pull/6230
* refactor(core): move async startup to lifespan and remove temp-loop workaround code by @mattf in https://github.com/ogx-ai/ogx/pull/6161
* feat: Add Responses memory read path by @franciscojavierarceo in https://github.com/ogx-ai/ogx/pull/6162
* fix(letsgo): add insecure to stack_args to avoid AttributeError by @mattf in https://github.com/ogx-ai/ogx/pull/6232
* feat: Add Responses memory write path by @franciscojavierarceo in https://github.com/ogx-ai/ogx/pull/6163
* fix(inference): lazily initialize asyncio locks in embedding mixin by @franciscojavierarceo in https://github.com/ogx-ai/ogx/pull/6244
* feat(skills): inject skill instructions into Responses API system prompt by @varshaprasad96 in https://github.com/ogx-ai/ogx/pull/6146
* chore(refactor, responses): pass `CreateResponseRequest` object directly through the call chain instead of unpacking individual fields by @mattf in https://github.com/ogx-ai/ogx/pull/6227
* feat(client-sdks): add env variable support and api_key to client SDK by @aegeiger in https://github.com/ogx-ai/ogx/pull/6228
* chore(github-deps): bump docker/login-action from 4.2.0 to 4.4.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6238
* chore(python-deps): bump joserfc from 1.6.7 to 1.6.8 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6250
* chore(github-deps): bump dorny/paths-filter from 4.0.1 to 4.0.2 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6234
* chore(github-deps): bump docker/build-push-action from 7.2.0 to 7.3.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6235
* chore(python-deps): bump aiohttp from 3.13.5 to 3.14.0 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6015
* fix(nvidia): log when dynamic model listing fails instead of silently returning empty by @yashanil98 in https://github.com/ogx-ai/ogx/pull/6249
* docs(client-sdks): add migration guide for ogx_client by @aegeiger in https://github.com/ogx-ai/ogx/pull/6207
* feat(file_processors): wire all providers into inline::auto dispatcher by @alinaryan in https://github.com/ogx-ai/ogx/pull/6218
* feat: Add --insecure flag to letsgo and auto-generate self-signed TLS certificate by @mattf in https://github.com/ogx-ai/ogx/pull/6243
* fix(watsonx): apply network config to IAM token and model spec requests by @yashanil98 in https://github.com/ogx-ai/ogx/pull/6254
* feat(benchmarks): add contextual chunking support to RAG benchmarks by @franciscojavierarceo in https://github.com/ogx-ai/ogx/pull/6253
* feat: add resource attributes to distinguish by namespace and cluster by @rhdedgar in https://github.com/ogx-ai/ogx/pull/6255
* chore(python-deps): bump tornado from 6.5.5 to 6.5.6 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6107
* chore(python-deps): bump langsmith from 0.8.3 to 0.8.18 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6149
* chore(python-deps): bump python-engineio from 4.13.1 to 4.13.2 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6215
* fix(responses): return error to model on hallucinated tool calls instead of silently exiting by @matteo-grimaldi in https://github.com/ogx-ai/ogx/pull/6231
* feat(telemetry): add agentic depth and RAG depth metrics by @EleanorWho in https://github.com/ogx-ai/ogx/pull/6252
* fix(vector_io): align Milvus, ChromaDB, and SQLite-vec to upsert semantics by @jakub-walaszczyk in https://github.com/ogx-ai/ogx/pull/6260
* fix(auth): recurse into sub-routers when building route auth table by @derekhiggins in https://github.com/ogx-ai/ogx/pull/6266
* refactor: route Anthropic messages through InferenceProvider instead of hardcoded provider paths by @mattf in https://github.com/ogx-ai/ogx/pull/6264
* docs: fix remote-hosted endpoint URLs broken by the rename by @yashanil98 in https://github.com/ogx-ai/ogx/pull/6248
* feat: Add default memory vector store by @franciscojavierarceo in https://github.com/ogx-ai/ogx/pull/6267
* feat(file_processors): route docling VLM processing through stack inference API by @alinaryan in https://github.com/ogx-ai/ogx/pull/6225
* chore(github-deps): bump github/codeql-action/init from 4.36.2 to 4.36.3 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6236
* chore(python-deps): bump langgraph-checkpoint from 4.1.0 to 4.1.1 by @dependabot[bot] in https://github.com/ogx-ai/ogx/pull/6191
* fix(vector_io): use pool factory in PGVectorIndex to survive server restarts by @r3v5 in https://github.com/ogx-ai/ogx/pull/6261
* fix(deps): bump pillow, nltk, and langchain-core for multiple CVEs by @EleanorWho in https://github.com/ogx-ai/ogx/pull/6272

## New Contributors
* @goingforstudying-ctrl made their first contribution in https://github.com/ogx-ai/ogx/pull/6072
* @Mykelxu made their first contribution in https://github.com/ogx-ai/ogx/pull/6198
* @yashanil98 made their first contribution in https://github.com/ogx-ai/ogx/pull/6249
* @matteo-grimaldi made their first contribution in https://github.com/ogx-ai/ogx/pull/6231

**Full Changelog**: https://github.com/ogx-ai/ogx/compare/v1.1.3...v1.2.0