From d42c0b2312e1c71a906709fc5e7923dfd8943596 Mon Sep 17 00:00:00 2001 From: opaninakuffo Date: Mon, 24 Aug 2026 11:36:11 +0000 Subject: [PATCH 1/7] doc: point Bare consumers at @qvac/inference @qvac/bare-sdk is discontinued after 0.18.1; docs and error copy should send in-process Bare users to the engine instead of the deprecated package. --- docs/architecture/ARCHITECTURE.md | 14 +- docs/repository-layout.md | 3 +- .../docs/configuration/plugins/index.mdx | 10 +- docs/website/content/docs/js-ts-sdk.mdx | 2 +- packages/bare-sdk/README.md | 121 ++---------------- packages/inference/README.md | 2 +- packages/sdk/README.md | 2 +- packages/sdk/src/schemas/sdk-errors-client.ts | 2 +- 8 files changed, 31 insertions(+), 125 deletions(-) diff --git a/docs/architecture/ARCHITECTURE.md b/docs/architecture/ARCHITECTURE.md index 21c5f769a2..d727b9280e 100644 --- a/docs/architecture/ARCHITECTURE.md +++ b/docs/architecture/ARCHITECTURE.md @@ -2,7 +2,7 @@ Author(s): [Yuri Samarin](https://github.com/yuranich) - QVAC Team -Last Update: Aug 14, 2026 +Last Update: Aug 24, 2026 Related Documents & Links @@ -17,7 +17,7 @@ QVAC SDK is a local-first, peer-to-peer AI platform for JavaScript, Bare, and Py - **`@qvac/inference`** is the SDK core: a Bare-only in-process engine with plugin assembly, model loading, request lifecycle, P2P/delegation, registry access, RAG, logging, and profiling. - **`@qvac/sdk`** is the TypeScript convenience layer for Node.js, Bun, Electron, Expo/React Native, Pear, and direct Bare. It owns runtime integration, worker RPC, bundling, platform packaging, and the default all-plugin distribution. -- **`@qvac/bare-sdk`** is a slim Bare distribution generated from the SDK build output. It keeps the SDK API shape but removes the default worker and built-in addon dependencies. +- **`@qvac/bare-sdk`** is deprecated (last release 0.18.1). In-process Bare consumers should use `@qvac/inference`. - **`tetherto-qvac-sdk`** is the generated Python client. It is built from the SDK wire contract and runs against the same Bare worker as TypeScript hosts. The core execution model is the same across packages: @@ -99,7 +99,7 @@ Model types follow an `engine-usecase` naming convention. Backward-compatible al Plugin registration is determined by the package and runtime path: -- `@qvac/inference` and `@qvac/bare-sdk` register no plugins by default. Consumers assemble the engine explicitly with `plugins([...])` or `registerPlugin(...)`. +- `@qvac/inference` registers no plugins by default. Consumers assemble the engine explicitly with `plugins([...])` or `registerPlugin(...)`. - `@qvac/sdk` ships a default worker (`dist/server/worker.js`) that registers every built-in plugin. - `qvac bundle sdk` generates an optimized worker entry for the plugin list in `qvac.config.{json,js,ts}`. @@ -133,7 +133,7 @@ Deployment paths: - Node.js, Bun, and Electron run `@qvac/sdk` in the host process and spawn a Bare subprocess. - Expo/React Native starts the worker bundle inside a BareKit `Worklet`. - Pear uses a generated `qvac/worker.pear.entry.mjs` staged into the app. -- Direct Bare runs in one process through `@qvac/inference`, or through the compatibility path exposed by `@qvac/sdk` / `@qvac/bare-sdk`. +- Direct Bare runs in one process through `@qvac/inference`, or through the compatibility path exposed by `@qvac/sdk`. - Python runs `tetherto-qvac-sdk` in the Python process and starts a Bare worker subprocess. Native addon packaging follows the deployment target: Node/Bun use installed prebuilds, Electron and Expo/RN package native addons with the app, and Bare/Pear builds include the addons selected by the authored or generated worker entry. @@ -160,7 +160,7 @@ Worker-backed clients use the same JSON request/response envelopes over differen - Expo clients use `bare-rpc` over the BareKit worklet IPC bridge. - Python clients use `bare-rpc-python` over loopback TCP (`127.0.0.1:0`) because asyncio has no cross-platform Unix-socket/named-pipe server. -In-process paths (`@qvac/inference`, direct Bare, and `@qvac/bare-sdk`) bypass sockets and call the dispatch layer directly. +In-process paths (`@qvac/inference` and direct Bare) bypass sockets and call the dispatch layer directly. --- @@ -256,7 +256,7 @@ The Python package provides: | Server process OOM | OS kills subprocess; client receives RPC connection error and must restart SDK | | Worker crash during an in-flight request | Client life-signal race rejects pending calls instead of hanging | | Plugin not enabled | Fast-fail with a plugin registration / no-handler error and guidance to configure or register the plugin | -| `@qvac/bare-sdk` call before plugin assembly | Fast-fail with guidance to call `plugins([...])` or `registerPlugin(...)` | +| `@qvac/inference` call before plugin assembly | Fast-fail with guidance to call `plugins([...])` or `registerPlugin(...)` | **Cancellation:** `cancel({ requestId })` is the preferred targeted path for migrated long-running operations, including completion/batch completion, embeddings, transcription, translation, fine-tuning, model loading, asset downloads, RAG, and audio generation. Broad cancellation by `modelId` remains available for shutdown, unload, and admin sweeps. @@ -295,7 +295,7 @@ Most packages live in this monorepo under `packages/`. Integration plugins live | Directory | Package | Purpose | |-----------|---------|---------| | `sdk` | `@qvac/sdk` | TypeScript SDK: public API, worker core, RPC transports, plugins, model registry client, bundling commands | -| `bare-sdk` | `@qvac/bare-sdk` | Slim Bare distribution copied from SDK build output, no built-in addon dependencies, explicit plugin assembly | +| `bare-sdk` | `@qvac/bare-sdk` | Deprecated (last release 0.18.1). Use `@qvac/inference` for in-process Bare | | `inference` | `@qvac/inference` | Implemented SDK core: Bare-only in-process engine, explicit plugin assembly, no worker/RPC/subprocess layer | | `sdk-python` | `tetherto-qvac-sdk` | Generated Python client for the SDK worker contract | | `cli` | `@qvac/cli` | CLI tooling (`qvac bundle sdk`, verification, release helpers) | diff --git a/docs/repository-layout.md b/docs/repository-layout.md index 8fe356269d..2fc8ddc7a3 100644 --- a/docs/repository-layout.md +++ b/docs/repository-layout.md @@ -11,7 +11,8 @@ Legend: | Package | Description | Category | | :--- | :--- | :--- | | sdk | Main entry point to develop AI applications with QVAC | SDK | -| bare-sdk | Bare-targeted slim assembly of the SDK; consumers install only the addons they need and register plugins explicitly | SDK | +| inference | Bare-only in-process engine. Use this instead of `@qvac/bare-sdk` | SDK | +| bare-sdk | Deprecated (last release 0.18.1). Use `@qvac/inference` for in-process Bare | SDK | | ai-sdk-provider | Vercel AI SDK provider exposing the QVAC runtime (chat, embeddings, transcription, translation, speech, OCR, image) | SDK | | bci-whispercpp | Brain-Computer Interface (BCI) neural-signal transcription addon powered by whisper.cpp | Addon | | classification-ggml | Image classification addon (MobileNetV3-Small) on the GGML backend | Addon | diff --git a/docs/website/content/docs/configuration/plugins/index.mdx b/docs/website/content/docs/configuration/plugins/index.mdx index e099296064..03074ef3d1 100644 --- a/docs/website/content/docs/configuration/plugins/index.mdx +++ b/docs/website/content/docs/configuration/plugins/index.mdx @@ -178,16 +178,16 @@ The `plugins` array in `qvac.config.*` is **bundle-time** configuration — it c On Node.js and Expo the SDK spawns a worker that auto-registers the full built-in set, so you never register manually. **Bare runs in-process with no spawned worker**, so nothing auto-registers — register the plugins you use before the first SDK call: ```js -import { plugins } from "@qvac/bare-sdk"; -import { llmPlugin } from "@qvac/bare-sdk/llamacpp-completion/plugin"; +import { plugins } from "@qvac/inference"; +import { llmPlugin } from "@qvac/inference/llamacpp-completion/plugin"; -const sdk = plugins([llmPlugin]); // or registerPlugin(llmPlugin) from "@qvac/bare-sdk/plugins" +const sdk = plugins([llmPlugin]); // or registerPlugin(llmPlugin) from "@qvac/inference/plugins" ``` -Calls made before any plugin is registered raise `WorkerPluginsNotRegisteredError`. +Calls made before any plugin is registered raise `PluginsNotRegisteredError`. -For direct Bare usage we recommend [`@qvac/bare-sdk`](https://github.com/tetherto/qvac/tree/main/packages/bare-sdk) — the slim distribution built for explicit assembly. `@qvac/sdk` also runs on Bare; import the same plugins from `@qvac/sdk//plugin` instead. +For in-process Bare use [`@qvac/inference`](https://github.com/tetherto/qvac/tree/main/packages/inference). `@qvac/sdk` also runs on Bare; import the same plugins from `@qvac/sdk//plugin` instead. `@qvac/bare-sdk` is deprecated; last release is 0.18.1. ## Notes diff --git a/docs/website/content/docs/js-ts-sdk.mdx b/docs/website/content/docs/js-ts-sdk.mdx index 824cada787..00305a2ff3 100644 --- a/docs/website/content/docs/js-ts-sdk.mdx +++ b/docs/website/content/docs/js-ts-sdk.mdx @@ -303,7 +303,7 @@ for await (const token of result.tokenStream) { await unloadModel({ modelId, autoClose: true }); ``` -For running QVAC on Bare in production, we recommend **[@qvac/bare-sdk](https://github.com/tetherto/qvac/tree/main/packages/bare-sdk)** — a slim, Bare-only assembly where you select addons and register plugins explicitly. It also sets up the bare module shims that examples using `fs` and similar modules rely on. +For running QVAC on Bare in production, use **[@qvac/inference](https://github.com/tetherto/qvac/tree/main/packages/inference)** — the Bare-only in-process engine. Select addons and register plugins explicitly. `@qvac/bare-sdk` is deprecated; last release is 0.18.1. ## API reference diff --git a/packages/bare-sdk/README.md b/packages/bare-sdk/README.md index f4d1bf7c7b..51a9134bb9 100644 --- a/packages/bare-sdk/README.md +++ b/packages/bare-sdk/README.md @@ -1,6 +1,6 @@ # @qvac/bare-sdk -Bare-targeted slim distribution of the QVAC SDK. Designed for consumers assembling their own worker entry on the [Bare runtime](https://bare.pears.com) (Pear apps, bare-expo mobile apps, direct Bare scripts). +> **Deprecated.** `@qvac/bare-sdk` is discontinued. Use [`@qvac/inference`](../inference) for in-process Bare. Last release is **0.18.1**. There will not be a 0.19.0 of this package. > *Part of **QVAC** ecosystem* > @@ -9,121 +9,26 @@ Bare-targeted slim distribution of the QVAC SDK. Designed for consumers assembli > [Support](https://discord.com/channels/1425125849346216029/1445400675189264516)  •  > [Discord](https://discord.com/invite/tetherdev) -## Why this exists +## Migrate to `@qvac/inference` -The default `@qvac/sdk` package ships with the full set of built-in plugin addons so Node and Expo consumers can call any capability out of the box. `@qvac/bare-sdk` exposes the same SDK surface with no built-in addon dependencies, so consumers install only the addons their worker actually registers. Paired with `bare-pack`'s static bundle analysis, the resulting native binary scales with the plugins explicitly assembled in the worker entry. - -## Install - -```bash -npm install @qvac/bare-sdk @qvac/translation-nmtcpp -``` - -Replace `@qvac/translation-nmtcpp` with whichever addon packages match the plugins you want to register. - -## Worker entry example (NMT-only) - -```js -import { plugins } from "@qvac/bare-sdk"; -import { nmtPlugin } from "@qvac/bare-sdk/nmtcpp-translation/plugin"; - -const sdk = plugins([nmtPlugin]); - -const result = await sdk.translate({ - modelId: "my-model", - text: "Hello world", - sourceLang: "en", - targetLang: "fr", -}); -``` - -## Capability to addon package - - -| Plugin subpath | Addon package | -| ------------------------------------------------ | -------------------------------- | -| `@qvac/bare-sdk/llamacpp-completion/plugin` | `@qvac/llm-llamacpp` | -| `@qvac/bare-sdk/llamacpp-embedding/plugin` | `@qvac/embed-llamacpp` | -| `@qvac/bare-sdk/whispercpp-transcription/plugin` | `@qvac/asr-ggml` | -| `@qvac/bare-sdk/parakeet-transcription/plugin` | `@qvac/asr-ggml` | -| `@qvac/bare-sdk/nmtcpp-translation/plugin` | `@qvac/translation-nmtcpp` | -| `@qvac/bare-sdk/tts-ggml/plugin` | `@qvac/tts-ggml` | -| `@qvac/bare-sdk/ggml-ocr/plugin` | `@qvac/ocr-ggml` | -| `@qvac/bare-sdk/sdcpp-generation/plugin` | `@qvac/diffusion-cpp` | -| `@qvac/bare-sdk/audiogen-ggml/plugin` | `@qvac/audiogen-ggml` | -| `@qvac/bare-sdk/ggml-vla/plugin` | `@qvac/vla-ggml` | - - -## Connection lifecycle - -`unloadModel` does not close the SDK's connections. The swarm, registry client, and corestore stay up so long-lived workers survive a routine unload across load/unload cycles. Close explicitly when you're done: - -```js -import { close } from "@qvac/bare-sdk"; - -await unloadModel({ modelId }); -await close(); // tear down swarm + registry client so the process can exit -``` - -Or opt into auto-close on the final unload: - -```js -await unloadModel({ modelId, autoClose: true }); -``` - -## Relationship to `@qvac/inference` and `@qvac/sdk` - -`@qvac/bare-sdk` is a thin re-export of [`@qvac/inference`](../inference), the Bare-only in-process engine. It forwards the same surface (`.`) and per-plugin subpaths, adding only the `@qvac/bare-sdk` package identity and its slim dependency profile — `@qvac/inference` is the sole dependency and does all the work. There is no code of its own beyond the re-exports. - -Use `@qvac/sdk` for Node and Expo apps that want the full default worker over RPC. Use `@qvac/bare-sdk` (or `@qvac/inference` directly) when you assemble your own plugins in-process on Bare. - -## Release history - -`@qvac/bare-sdk` releases in lockstep with `@qvac/inference`. For release notes and version history, see the [`@qvac/inference` changelog](../inference/CHANGELOG.md). - -## Migrating from `@qvac/sdk` - -Existing Bare consumers running a custom worker entry can switch packages without changing call sites. Two edits: - -**1. Swap the dependency** in the package that owns your worker: +`@qvac/inference` is the Bare-only in-process engine. Plugin subpaths match 1:1 except `./commands` and `./worker-core`, which have no inference equivalent (`npx qvac bundle` lives on `@qvac/sdk`). ```diff --"@qvac/sdk": "^0.11.0", -+"@qvac/bare-sdk": "^0.11.0", +-import { plugins } from "@qvac/bare-sdk"; +-import { nmtPlugin } from "@qvac/bare-sdk/nmtcpp-translation/plugin"; ++import { plugins } from "@qvac/inference"; ++import { nmtPlugin } from "@qvac/inference/nmtcpp-translation/plugin"; ``` -**2. Rewrite worker imports** — every `@qvac/sdk/...` subpath maps to the same path under `@qvac/bare-sdk`: - ```diff --import { registerPlugin } from "@qvac/sdk/plugins"; --import { nmtPlugin } from "@qvac/sdk/nmtcpp-translation/plugin"; -+import { registerPlugin } from "@qvac/bare-sdk/plugins"; -+import { nmtPlugin } from "@qvac/bare-sdk/nmtcpp-translation/plugin"; +-"@qvac/bare-sdk": "^0.18.1", ++"@qvac/inference": "^0.18.1", ``` -Two subpaths have no `@qvac/bare-sdk` equivalent. `@qvac/sdk/commands` (the bundler) has no counterpart — bundle from `@qvac/sdk` with `npx qvac bundle`. `@qvac/sdk/worker-core` has no counterpart — bare-sdk has no worker, so register plugins explicitly as shown above. Importing `@qvac/bare-sdk/commands` or `@qvac/bare-sdk/worker-core` throws with this guidance. +See the [`@qvac/inference` README](../inference/README.md) for install, plugin assembly, and the capability-to-addon table. -If your worker previously relied on the default plugin set (i.e. it never called `registerPlugin`), enumerate the plugins it uses via `plugins([...])` or `registerPlugin(...)` — see [Worker entry example](#worker-entry-example-nmt-only). bare-sdk has no implicit defaults. +Use `@qvac/sdk` for Node, Electron, and Expo apps that want the default worker over RPC. -## Behavior differences vs `@qvac/sdk` - -### Explicit plugin assembly - -Consumers register plugins via `plugins([...])` or `registerPlugin(...)`. SDK calls made before any plugin is registered raise `WorkerPluginsNotRegisteredError` with guidance to the assembly API. - -### Pear pre-hook - -`@qvac/sdk` ships a `pear-pre` script that auto-generates `qvac/worker.pear.entry.mjs` from `qvac.config.{json,mjs}`. `@qvac/bare-sdk` follows the explicit-assembly model, so Pear apps using bare-sdk author the entry file directly. - -**Fix:** create `qvac/worker.pear.entry.mjs` in your app root: - -```js -import { registerPlugin } from "@qvac/bare-sdk/plugins"; -import { nmtPlugin } from "@qvac/bare-sdk/nmtcpp-translation/plugin"; - -registerPlugin(nmtPlugin); - -await import("../worker.js"); -``` +## Release history -Then add `"/qvac/worker.pear.entry.mjs"` to `pear.stage.entrypoints` in your `package.json`. A bare-sdk-aware pre-hook is on the roadmap. +Historical notes live in the [`@qvac/sdk` changelog](../sdk/CHANGELOG.md). New Bare engine releases are documented in the [`@qvac/inference` changelog](../inference/CHANGELOG.md). diff --git a/packages/inference/README.md b/packages/inference/README.md index a27adf4069..66e2248747 100644 --- a/packages/inference/README.md +++ b/packages/inference/README.md @@ -11,7 +11,7 @@ The Bare-only engine of the QVAC SDK. It runs inference directly on the [Bare ru ## Why this exists -`@qvac/inference` is the pure-Bare layer of the SDK, written in TypeScript: the client API, the request engine, the plugin system, and the P2P/delegation stack, all running in one Bare process. `@qvac/sdk` builds on top of it to reach Node, Electron, Expo, and Pear by launching this engine as a worker; on Bare you use it directly. +`@qvac/inference` is the pure-Bare layer of the SDK, written in TypeScript: the client API, the request engine, the plugin system, and the P2P/delegation stack, all running in one Bare process. `@qvac/sdk` builds on top of it to reach Node, Electron, Expo, and Pear by launching this engine as a worker; on Bare you use it directly. It replaces the deprecated `@qvac/bare-sdk` package (last release 0.18.1). `@qvac/inference` ships no plugins by default and no addon dependencies. You install only the addon packages your app registers, so the resulting binary scales with the engines you actually assemble. diff --git a/packages/sdk/README.md b/packages/sdk/README.md index b1c1f1cbca..eb53b61274 100644 --- a/packages/sdk/README.md +++ b/packages/sdk/README.md @@ -16,7 +16,7 @@ See [https://docs.qvac.tether.io/sdk/getting-started](https://docs.qvac.tether.i For AI/LLM tools, use [https://docs.qvac.tether.io/llms-full.txt](https://docs.qvac.tether.io/llms-full.txt) as the consolidated plaintext documentation export. -> **Running on Bare directly?** `@qvac/sdk` runs on Bare, but you must register the plugins you use explicitly before the first SDK call (Node and Expo do this automatically). For direct Bare usage we recommend [`@qvac/bare-sdk`](../bare-sdk/README.md) — the same SDK surface with no built-in plugin addons, designed for consumers wiring their own worker entry (Pear apps, bare-expo apps, direct Bare scripts). +> **Running on Bare directly?** `@qvac/sdk` runs on Bare, but you must register the plugins you use explicitly before the first SDK call (Node and Expo do this automatically). For in-process Bare (Pear apps, bare-expo, direct Bare scripts) use [`@qvac/inference`](../inference/README.md). `@qvac/bare-sdk` is deprecated; last release is 0.18.1. ## Supported environments and installation diff --git a/packages/sdk/src/schemas/sdk-errors-client.ts b/packages/sdk/src/schemas/sdk-errors-client.ts index 77252389c5..203a2268ca 100644 --- a/packages/sdk/src/schemas/sdk-errors-client.ts +++ b/packages/sdk/src/schemas/sdk-errors-client.ts @@ -198,7 +198,7 @@ const clientErrorDefinitions: ErrorCodesMap = { [SDK_CLIENT_ERROR_CODES.WORKER_PLUGINS_NOT_REGISTERED]: { name: 'WORKER_PLUGINS_NOT_REGISTERED', message: () => - 'No plugins registered in the worker. On Bare, register the plugins you need with `plugins([...])` (or `registerPlugin(...)`) before the first SDK call — import each from its subpath, e.g. `@qvac/sdk/llamacpp-completion/plugin`. For direct Bare usage we recommend the dedicated `@qvac/bare-sdk` package. See https://docs.qvac.tether.io/configuration/plugins#runtime-registration-on-bare' + 'No plugins registered in the worker. On Bare, register the plugins you need with `plugins([...])` (or `registerPlugin(...)`) before the first SDK call — import each from its subpath, e.g. `@qvac/sdk/llamacpp-completion/plugin`. For in-process Bare use `@qvac/inference`. See https://docs.qvac.tether.io/configuration/plugins#runtime-registration-on-bare' }, [SDK_CLIENT_ERROR_CODES.BUNDLE_VERIFICATION_FAILED]: { name: 'BUNDLE_VERIFICATION_FAILED', From ada354a8e8cd60eb4321cd08d1340e36abc6223f Mon Sep 17 00:00:00 2001 From: opaninakuffo Date: Mon, 24 Aug 2026 12:19:28 +0000 Subject: [PATCH 2/7] doc: import the inference Bare quickstart in the SDK docs packages/sdk/examples/quickstart.bare.ts is gone; the docs site build failed on the leftover file= import. --- docs/website/content/docs/js-ts-sdk.mdx | 29 ++----------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/docs/website/content/docs/js-ts-sdk.mdx b/docs/website/content/docs/js-ts-sdk.mdx index 00305a2ff3..102411ca36 100644 --- a/docs/website/content/docs/js-ts-sdk.mdx +++ b/docs/website/content/docs/js-ts-sdk.mdx @@ -273,34 +273,9 @@ To run an example on Bare: ``` 2. Register the plugins the example uses — Bare runs in-process and nothing auto-registers. See [Runtime registration on Bare](/configuration/plugins#runtime-registration-on-bare). -Here is the quickstart adapted for Bare: +Here is the SDK quickstart adapted for Bare with `@qvac/inference`: -```ts title="quickstart.bare.ts" lineNumbers -// The Bare quickstart. Bare has no `process` global and does not spawn a worker, -// so two setup steps come first: install bare-process as the `process` global, -// then register the plugins this example uses via `plugins([...])`. - -import bareProcess from "bare-process"; -import { plugins, LLAMA_3_2_1B_INST_Q4_0 } from "@qvac/sdk"; -import { llmPlugin } from "@qvac/sdk/llamacpp-completion/plugin"; - -(globalThis as unknown as { process: typeof bareProcess }).process = - bareProcess; - -const { loadModel, completion, unloadModel } = plugins([llmPlugin]); - -// From here it is the same as the Node quickstart. -const modelId = await loadModel({ modelSrc: LLAMA_3_2_1B_INST_Q4_0 }); - -const history = [ - { role: "user", content: "Explain quantum computing in one sentence" }, -]; -const result = completion({ modelId, history, stream: true }); -for await (const token of result.tokenStream) { - process.stdout.write(token); -} - -await unloadModel({ modelId, autoClose: true }); +```ts file=/packages/inference/examples/quickstart-adapted.ts title="quickstart-adapted.ts" lineNumbers ``` For running QVAC on Bare in production, use **[@qvac/inference](https://github.com/tetherto/qvac/tree/main/packages/inference)** — the Bare-only in-process engine. Select addons and register plugins explicitly. `@qvac/bare-sdk` is deprecated; last release is 0.18.1. From a973ecac4c49fcb2c9be7e37abac08eb4e7ae1c8 Mon Sep 17 00:00:00 2001 From: opaninakuffo Date: Mon, 24 Aug 2026 17:38:18 +0000 Subject: [PATCH 3/7] chore: retrigger CI after publish-sdk drop of pull_request_target Empty commit so #4018 re-runs against main after #4026. From 7ae47bee6453698aac6eb4e275d7e1df4fdfc1e0 Mon Sep 17 00:00:00 2001 From: opaninakuffo Date: Tue, 25 Aug 2026 10:30:51 +0000 Subject: [PATCH 4/7] doc: treat in-process Bare as @qvac/inference only Drop the leftover SDK-on-Bare compatibility copy from the deprecation docs. --- docs/architecture/ARCHITECTURE.md | 6 +++--- docs/website/content/docs/configuration/plugins/index.mdx | 4 ++-- docs/website/content/docs/js-ts-sdk.mdx | 6 +++--- packages/sdk/README.md | 4 ++-- packages/sdk/src/schemas/sdk-errors-client.ts | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/architecture/ARCHITECTURE.md b/docs/architecture/ARCHITECTURE.md index d727b9280e..85ae11f085 100644 --- a/docs/architecture/ARCHITECTURE.md +++ b/docs/architecture/ARCHITECTURE.md @@ -16,7 +16,7 @@ Related Documents & Links QVAC SDK is a local-first, peer-to-peer AI platform for JavaScript, Bare, and Python applications. The architecture is split by responsibility: - **`@qvac/inference`** is the SDK core: a Bare-only in-process engine with plugin assembly, model loading, request lifecycle, P2P/delegation, registry access, RAG, logging, and profiling. -- **`@qvac/sdk`** is the TypeScript convenience layer for Node.js, Bun, Electron, Expo/React Native, Pear, and direct Bare. It owns runtime integration, worker RPC, bundling, platform packaging, and the default all-plugin distribution. +- **`@qvac/sdk`** is the TypeScript convenience layer for Node.js, Bun, Electron, Expo/React Native, and Pear. It owns runtime integration, worker RPC, bundling, platform packaging, and the default all-plugin distribution. - **`@qvac/bare-sdk`** is deprecated (last release 0.18.1). In-process Bare consumers should use `@qvac/inference`. - **`tetherto-qvac-sdk`** is the generated Python client. It is built from the SDK wire contract and runs against the same Bare worker as TypeScript hosts. @@ -133,7 +133,7 @@ Deployment paths: - Node.js, Bun, and Electron run `@qvac/sdk` in the host process and spawn a Bare subprocess. - Expo/React Native starts the worker bundle inside a BareKit `Worklet`. - Pear uses a generated `qvac/worker.pear.entry.mjs` staged into the app. -- Direct Bare runs in one process through `@qvac/inference`, or through the compatibility path exposed by `@qvac/sdk`. +- Direct Bare runs in one process through `@qvac/inference`. - Python runs `tetherto-qvac-sdk` in the Python process and starts a Bare worker subprocess. Native addon packaging follows the deployment target: Node/Bun use installed prebuilds, Electron and Expo/RN package native addons with the app, and Bare/Pear builds include the addons selected by the authored or generated worker entry. @@ -160,7 +160,7 @@ Worker-backed clients use the same JSON request/response envelopes over differen - Expo clients use `bare-rpc` over the BareKit worklet IPC bridge. - Python clients use `bare-rpc-python` over loopback TCP (`127.0.0.1:0`) because asyncio has no cross-platform Unix-socket/named-pipe server. -In-process paths (`@qvac/inference` and direct Bare) bypass sockets and call the dispatch layer directly. +In-process `@qvac/inference` bypasses sockets and calls the dispatch layer directly. --- diff --git a/docs/website/content/docs/configuration/plugins/index.mdx b/docs/website/content/docs/configuration/plugins/index.mdx index 03074ef3d1..d72aeff627 100644 --- a/docs/website/content/docs/configuration/plugins/index.mdx +++ b/docs/website/content/docs/configuration/plugins/index.mdx @@ -175,7 +175,7 @@ The Python SDK exposes plugin invocation through the same worker contract: The `plugins` array in `qvac.config.*` is **bundle-time** configuration — it controls which addons get packed into your worker. That is separate from **runtime registration**, which determines the plugins live in the worker process when an SDK call runs. -On Node.js and Expo the SDK spawns a worker that auto-registers the full built-in set, so you never register manually. **Bare runs in-process with no spawned worker**, so nothing auto-registers — register the plugins you use before the first SDK call: +On Node.js and Expo the SDK spawns a worker that auto-registers the full built-in set, so you never register manually. In-process Bare uses `@qvac/inference` with no spawned worker — register the plugins you use before the first call: ```js import { plugins } from "@qvac/inference"; @@ -187,7 +187,7 @@ const sdk = plugins([llmPlugin]); // or registerPlugin(llmPlugin) from "@qvac/in Calls made before any plugin is registered raise `PluginsNotRegisteredError`. -For in-process Bare use [`@qvac/inference`](https://github.com/tetherto/qvac/tree/main/packages/inference). `@qvac/sdk` also runs on Bare; import the same plugins from `@qvac/sdk//plugin` instead. `@qvac/bare-sdk` is deprecated; last release is 0.18.1. +In-process Bare uses [`@qvac/inference`](https://github.com/tetherto/qvac/tree/main/packages/inference). `@qvac/bare-sdk` is deprecated; last release is 0.18.1. ## Notes diff --git a/docs/website/content/docs/js-ts-sdk.mdx b/docs/website/content/docs/js-ts-sdk.mdx index 102411ca36..b6510e3281 100644 --- a/docs/website/content/docs/js-ts-sdk.mdx +++ b/docs/website/content/docs/js-ts-sdk.mdx @@ -137,7 +137,7 @@ Run the quickstart script: QVAC_CONFIG_PATH=./qvac.config.json node quickstart.js ``` -Or with the [Bare](https://bare.pears.com) runtime. Running on Bare needs a little setup — a `process` global and plugin registration — so see [Running on Bare](#running-on-bare) below. +Or on [Bare](https://bare.pears.com) with `@qvac/inference` — see [Running on Bare](#running-on-bare). @@ -146,7 +146,7 @@ Or with the [Bare](https://bare.pears.com) runtime. Running on Bare needs a litt Follow these instructions to run any example in this documentation: - All examples are self-contained, runnable JavaScript scripts. Use the `qvac-examples` workspace created in this quickstart to store and run them as you explore this documentation. -- Run each example with the indicated compatible JavaScript environment. QVAC supports multiple environments (Node.js, Bare, and Expo). The examples are written in Node style and run on Node.js or Bun directly; to run them on Bare, see [Running on Bare](#running-on-bare). +- Run each example with the indicated compatible JavaScript environment. QVAC supports Node.js, Expo, and in-process Bare via `@qvac/inference`. The examples are written in Node style and run on Node.js or Bun directly; to run them on Bare, see [Running on Bare](#running-on-bare). - More examples can be found in the [SDK examples directory](https://github.com/tetherto/qvac/tree/main/packages/sdk/examples). - Some examples need companion files — sample audio, an image, or a config — that aren't part of the embedded code. These can be found in the same examples directory. - Some examples also provide a TypeScript version. If you want to run TS directly, install the required dev dependencies: @@ -266,7 +266,7 @@ export default config; To run an example on Bare: -1. Provide a `process` global. Install `bare-process` and set it before using the SDK: +1. Provide a `process` global. Install `bare-process` and set it before using `@qvac/inference`: ```js import process from "bare-process"; globalThis.process = process; diff --git a/packages/sdk/README.md b/packages/sdk/README.md index eb53b61274..56ec084682 100644 --- a/packages/sdk/README.md +++ b/packages/sdk/README.md @@ -10,13 +10,13 @@ > Support  •  > Discord -**QVAC SDK** is the main entry point for developing applications with QVAC. It is type-safe and exposes all QVAC capabilities through a unified interface. It runs on Node.js, [Bare runtime](https://bare.pears.com), and [Expo](https://expo.dev). +**QVAC SDK** is the main entry point for developing applications with QVAC. It is type-safe and exposes all QVAC capabilities through a unified interface. It runs on Node.js and [Expo](https://expo.dev). See [https://docs.qvac.tether.io/sdk/getting-started](https://docs.qvac.tether.io/sdk/getting-started) for the comprehensive QVAC documentation. For AI/LLM tools, use [https://docs.qvac.tether.io/llms-full.txt](https://docs.qvac.tether.io/llms-full.txt) as the consolidated plaintext documentation export. -> **Running on Bare directly?** `@qvac/sdk` runs on Bare, but you must register the plugins you use explicitly before the first SDK call (Node and Expo do this automatically). For in-process Bare (Pear apps, bare-expo, direct Bare scripts) use [`@qvac/inference`](../inference/README.md). `@qvac/bare-sdk` is deprecated; last release is 0.18.1. +> **In-process Bare:** use [`@qvac/inference`](../inference/README.md). `@qvac/bare-sdk` is deprecated; last release is 0.18.1. ## Supported environments and installation diff --git a/packages/sdk/src/schemas/sdk-errors-client.ts b/packages/sdk/src/schemas/sdk-errors-client.ts index 203a2268ca..220de202c2 100644 --- a/packages/sdk/src/schemas/sdk-errors-client.ts +++ b/packages/sdk/src/schemas/sdk-errors-client.ts @@ -198,7 +198,7 @@ const clientErrorDefinitions: ErrorCodesMap = { [SDK_CLIENT_ERROR_CODES.WORKER_PLUGINS_NOT_REGISTERED]: { name: 'WORKER_PLUGINS_NOT_REGISTERED', message: () => - 'No plugins registered in the worker. On Bare, register the plugins you need with `plugins([...])` (or `registerPlugin(...)`) before the first SDK call — import each from its subpath, e.g. `@qvac/sdk/llamacpp-completion/plugin`. For in-process Bare use `@qvac/inference`. See https://docs.qvac.tether.io/configuration/plugins#runtime-registration-on-bare' + 'No plugins registered in the worker. For in-process Bare use `@qvac/inference` and register plugins with `plugins([...])` (or `registerPlugin(...)`). See https://docs.qvac.tether.io/configuration/plugins#runtime-registration-on-bare' }, [SDK_CLIENT_ERROR_CODES.BUNDLE_VERIFICATION_FAILED]: { name: 'BUNDLE_VERIFICATION_FAILED', From 30e3bd9095ce00060c3a457ed2a8a3b9a63ad2b9 Mon Sep 17 00:00:00 2001 From: opaninakuffo Date: Tue, 25 Aug 2026 12:43:14 +0000 Subject: [PATCH 5/7] doc: drop leftover in-process Bare SDK claims @qvac/sdk always spawns a Bare worker over bare-rpc. Point Bare in-process at @qvac/inference in how-it-works and the deployment diagram. --- docs/architecture/puml/05-deployment.puml | 4 ++-- docs/website/content/docs/about/how-it-works.mdx | 10 +++++----- docs/website/content/docs/js-ts-sdk.mdx | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/architecture/puml/05-deployment.puml b/docs/architecture/puml/05-deployment.puml index 6987ef303b..64ab42c9c4 100644 --- a/docs/architecture/puml/05-deployment.puml +++ b/docs/architecture/puml/05-deployment.puml @@ -41,7 +41,7 @@ Deployment_Node(mobile, "Mobile", "React Native / Expo") { Deployment_Node(bare_direct, "Bare Runtime", "Direct execution, in-process") { Deployment_Node(bare_app, "Bare Application") { - Container(sdk_bare, "@qvac/sdk / @qvac/bare-sdk / @qvac/inference + Plugins", "TypeScript/C++", "In-process dispatch; bare-sdk and inference have no default addons") + Container(inference_bare, "@qvac/inference + Plugins", "TypeScript/C++", "In-process dispatch; no default addons") } ContainerDb(bare_store, "Local Storage", "Models cache + RAG DB") } @@ -52,7 +52,7 @@ Rel(sdk_mobile, barekit, "Native Bridge", "in-process") Rel(subprocess_desktop, desktop_store, "Reads/Writes") Rel(py_worker, py_store, "Reads/Writes") Rel(barekit, mobile_store, "Reads/Writes") -Rel(sdk_bare, bare_store, "Reads/Writes") +Rel(inference_bare, bare_store, "Reads/Writes") Rel(pear_worker, pear_store, "Reads/Writes") @enduml diff --git a/docs/website/content/docs/about/how-it-works.mdx b/docs/website/content/docs/about/how-it-works.mdx index 9cbf7904e8..e61a154bc6 100644 --- a/docs/website/content/docs/about/how-it-works.mdx +++ b/docs/website/content/docs/about/how-it-works.mdx @@ -6,7 +6,7 @@ schemaType: TechArticle ## Overview -The SDK supports multiple JS runtimes, but its [underlying components](https://github.com/tetherto/qvac/tree/main/packages) run only on [Bare](https://bare.pears.com). When the SDK runs in a runtime other than Bare, it spawns a Bare worker where all AI operations will take place. The worker is started lazily on the first RPC call and can be explicitly shut down with `close()`. +The SDK supports multiple JS runtimes, but its [underlying components](https://github.com/tetherto/qvac/tree/main/packages) run only on [Bare](https://bare.pears.com). The SDK spawns a Bare worker where all AI operations take place, talking to it over `bare-rpc`. The worker is started lazily on the first RPC call and can be explicitly shut down with `close()`. For in-process Bare with no worker, use [`@qvac/inference`](https://github.com/tetherto/qvac/tree/main/packages/inference). ## Phase 1: initialization @@ -19,13 +19,13 @@ sequenceDiagram App->>SDK: Call loadModel() (or any API) SDK->>RPC: getRPC() (create runtime-specific RPC client) - RPC->>Worker: Spawn worker (Node/Expo) or connect in-process (Bare) + RPC->>Worker: Spawn worker RPC->>Worker: Send __init_config (first call only) Worker->>Worker: Store config in memory Worker->>RPC: Init ack ``` -The first time you call `loadModel()` (or any function other than `close()`), the SDK performs a complete initialization sequence. It initializes a runtime-specific RPC client and sends configuration to the worker via the internal `__init_config` message. The worker process is spawned once and reused for subsequent calls until you explicitly close it. In Bare runtime, no separate worker process is spawned; requests are handled in-process. +The first time you call `loadModel()` (or any function other than `close()`), the SDK performs a complete initialization sequence. It initializes a runtime-specific RPC client and sends configuration to the worker via the internal `__init_config` message. The worker process is spawned once and reused for subsequent calls until you explicitly close it. ## Phase 2: model loading @@ -81,12 +81,12 @@ sequenceDiagram App->>SDK: Call close() SDK->>RPC: Close RPC client - RPC->>Worker: Terminate worker process (Node/Expo) + RPC->>Worker: Terminate worker process Worker->>Worker: Cleanup (unload models, stop swarms, close RAG) Worker->>RPC: Exit ``` -`close()` explicitly shuts down the worker and releases the RPC connection. In Node/Expo, this terminates the worker process; in Bare, the call is a no-op since there is no separate worker process. After `close()`, the next SDK call will reinitialize the RPC client and spawn a fresh worker. +`close()` explicitly shuts down the worker and releases the RPC connection. This terminates the worker process. After `close()`, the next SDK call will reinitialize the RPC client and spawn a fresh worker. `unloadModel()` will automatically close the RPC connection when there are no active models or providers, but `close()` is the explicit way to shut down the SDK instance. diff --git a/docs/website/content/docs/js-ts-sdk.mdx b/docs/website/content/docs/js-ts-sdk.mdx index b6510e3281..0fb3b4d2af 100644 --- a/docs/website/content/docs/js-ts-sdk.mdx +++ b/docs/website/content/docs/js-ts-sdk.mdx @@ -10,7 +10,7 @@ import { TrackCopy } from '@/components/track-copy' ## Overview The JS/TS SDK (`@qvac/sdk` on npm) is the JavaScript/TypeScript client for QVAC. -It runs the worker in-process (there is no separate transport), and drives every +It drives a Bare worker over `bare-rpc`, and exposes every QVAC capability through a unified, type-safe API. ## Requirements From 985255443f7443a25b4db9414c5d9cd6f0656703 Mon Sep 17 00:00:00 2001 From: opaninakuffo Date: Tue, 25 Aug 2026 14:07:45 +0000 Subject: [PATCH 6/7] doc: drop architecture files overlapping #3982 Yury is rewriting ARCHITECTURE.md and the deployment diagram there. Leave those to that PR; keep website, READMEs, and error copy here. --- docs/architecture/ARCHITECTURE.md | 16 ++++++++-------- docs/architecture/puml/05-deployment.puml | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/architecture/ARCHITECTURE.md b/docs/architecture/ARCHITECTURE.md index 85ae11f085..21c5f769a2 100644 --- a/docs/architecture/ARCHITECTURE.md +++ b/docs/architecture/ARCHITECTURE.md @@ -2,7 +2,7 @@ Author(s): [Yuri Samarin](https://github.com/yuranich) - QVAC Team -Last Update: Aug 24, 2026 +Last Update: Aug 14, 2026 Related Documents & Links @@ -16,8 +16,8 @@ Related Documents & Links QVAC SDK is a local-first, peer-to-peer AI platform for JavaScript, Bare, and Python applications. The architecture is split by responsibility: - **`@qvac/inference`** is the SDK core: a Bare-only in-process engine with plugin assembly, model loading, request lifecycle, P2P/delegation, registry access, RAG, logging, and profiling. -- **`@qvac/sdk`** is the TypeScript convenience layer for Node.js, Bun, Electron, Expo/React Native, and Pear. It owns runtime integration, worker RPC, bundling, platform packaging, and the default all-plugin distribution. -- **`@qvac/bare-sdk`** is deprecated (last release 0.18.1). In-process Bare consumers should use `@qvac/inference`. +- **`@qvac/sdk`** is the TypeScript convenience layer for Node.js, Bun, Electron, Expo/React Native, Pear, and direct Bare. It owns runtime integration, worker RPC, bundling, platform packaging, and the default all-plugin distribution. +- **`@qvac/bare-sdk`** is a slim Bare distribution generated from the SDK build output. It keeps the SDK API shape but removes the default worker and built-in addon dependencies. - **`tetherto-qvac-sdk`** is the generated Python client. It is built from the SDK wire contract and runs against the same Bare worker as TypeScript hosts. The core execution model is the same across packages: @@ -99,7 +99,7 @@ Model types follow an `engine-usecase` naming convention. Backward-compatible al Plugin registration is determined by the package and runtime path: -- `@qvac/inference` registers no plugins by default. Consumers assemble the engine explicitly with `plugins([...])` or `registerPlugin(...)`. +- `@qvac/inference` and `@qvac/bare-sdk` register no plugins by default. Consumers assemble the engine explicitly with `plugins([...])` or `registerPlugin(...)`. - `@qvac/sdk` ships a default worker (`dist/server/worker.js`) that registers every built-in plugin. - `qvac bundle sdk` generates an optimized worker entry for the plugin list in `qvac.config.{json,js,ts}`. @@ -133,7 +133,7 @@ Deployment paths: - Node.js, Bun, and Electron run `@qvac/sdk` in the host process and spawn a Bare subprocess. - Expo/React Native starts the worker bundle inside a BareKit `Worklet`. - Pear uses a generated `qvac/worker.pear.entry.mjs` staged into the app. -- Direct Bare runs in one process through `@qvac/inference`. +- Direct Bare runs in one process through `@qvac/inference`, or through the compatibility path exposed by `@qvac/sdk` / `@qvac/bare-sdk`. - Python runs `tetherto-qvac-sdk` in the Python process and starts a Bare worker subprocess. Native addon packaging follows the deployment target: Node/Bun use installed prebuilds, Electron and Expo/RN package native addons with the app, and Bare/Pear builds include the addons selected by the authored or generated worker entry. @@ -160,7 +160,7 @@ Worker-backed clients use the same JSON request/response envelopes over differen - Expo clients use `bare-rpc` over the BareKit worklet IPC bridge. - Python clients use `bare-rpc-python` over loopback TCP (`127.0.0.1:0`) because asyncio has no cross-platform Unix-socket/named-pipe server. -In-process `@qvac/inference` bypasses sockets and calls the dispatch layer directly. +In-process paths (`@qvac/inference`, direct Bare, and `@qvac/bare-sdk`) bypass sockets and call the dispatch layer directly. --- @@ -256,7 +256,7 @@ The Python package provides: | Server process OOM | OS kills subprocess; client receives RPC connection error and must restart SDK | | Worker crash during an in-flight request | Client life-signal race rejects pending calls instead of hanging | | Plugin not enabled | Fast-fail with a plugin registration / no-handler error and guidance to configure or register the plugin | -| `@qvac/inference` call before plugin assembly | Fast-fail with guidance to call `plugins([...])` or `registerPlugin(...)` | +| `@qvac/bare-sdk` call before plugin assembly | Fast-fail with guidance to call `plugins([...])` or `registerPlugin(...)` | **Cancellation:** `cancel({ requestId })` is the preferred targeted path for migrated long-running operations, including completion/batch completion, embeddings, transcription, translation, fine-tuning, model loading, asset downloads, RAG, and audio generation. Broad cancellation by `modelId` remains available for shutdown, unload, and admin sweeps. @@ -295,7 +295,7 @@ Most packages live in this monorepo under `packages/`. Integration plugins live | Directory | Package | Purpose | |-----------|---------|---------| | `sdk` | `@qvac/sdk` | TypeScript SDK: public API, worker core, RPC transports, plugins, model registry client, bundling commands | -| `bare-sdk` | `@qvac/bare-sdk` | Deprecated (last release 0.18.1). Use `@qvac/inference` for in-process Bare | +| `bare-sdk` | `@qvac/bare-sdk` | Slim Bare distribution copied from SDK build output, no built-in addon dependencies, explicit plugin assembly | | `inference` | `@qvac/inference` | Implemented SDK core: Bare-only in-process engine, explicit plugin assembly, no worker/RPC/subprocess layer | | `sdk-python` | `tetherto-qvac-sdk` | Generated Python client for the SDK worker contract | | `cli` | `@qvac/cli` | CLI tooling (`qvac bundle sdk`, verification, release helpers) | diff --git a/docs/architecture/puml/05-deployment.puml b/docs/architecture/puml/05-deployment.puml index 64ab42c9c4..6987ef303b 100644 --- a/docs/architecture/puml/05-deployment.puml +++ b/docs/architecture/puml/05-deployment.puml @@ -41,7 +41,7 @@ Deployment_Node(mobile, "Mobile", "React Native / Expo") { Deployment_Node(bare_direct, "Bare Runtime", "Direct execution, in-process") { Deployment_Node(bare_app, "Bare Application") { - Container(inference_bare, "@qvac/inference + Plugins", "TypeScript/C++", "In-process dispatch; no default addons") + Container(sdk_bare, "@qvac/sdk / @qvac/bare-sdk / @qvac/inference + Plugins", "TypeScript/C++", "In-process dispatch; bare-sdk and inference have no default addons") } ContainerDb(bare_store, "Local Storage", "Models cache + RAG DB") } @@ -52,7 +52,7 @@ Rel(sdk_mobile, barekit, "Native Bridge", "in-process") Rel(subprocess_desktop, desktop_store, "Reads/Writes") Rel(py_worker, py_store, "Reads/Writes") Rel(barekit, mobile_store, "Reads/Writes") -Rel(inference_bare, bare_store, "Reads/Writes") +Rel(sdk_bare, bare_store, "Reads/Writes") Rel(pear_worker, pear_store, "Reads/Writes") @enduml From 03f46f42d305f566ad65e3f1f535d7fdc3b0c0c3 Mon Sep 17 00:00:00 2001 From: opaninakuffo Date: Wed, 26 Aug 2026 23:38:41 +0000 Subject: [PATCH 7/7] doc: set last @qvac/bare-sdk release to 0.18.2 The lockstep patch shipped; last npm version is 0.18.2, not 0.18.1. --- docs/repository-layout.md | 2 +- docs/website/content/docs/configuration/plugins/index.mdx | 2 +- docs/website/content/docs/js-ts-sdk.mdx | 2 +- packages/bare-sdk/README.md | 6 +++--- packages/inference/README.md | 2 +- packages/sdk/README.md | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/repository-layout.md b/docs/repository-layout.md index 0a5c096341..9fbd9c73b6 100644 --- a/docs/repository-layout.md +++ b/docs/repository-layout.md @@ -12,7 +12,7 @@ Legend: | :--- | :--- | :--- | | sdk | Main entry point to develop AI applications with QVAC | SDK | | inference | Bare-only in-process engine. Use this instead of `@qvac/bare-sdk` | SDK | -| bare-sdk | Deprecated (last release 0.18.1). Use `@qvac/inference` for in-process Bare | SDK | +| bare-sdk | Deprecated (last release 0.18.2). Use `@qvac/inference` for in-process Bare | SDK | | ai-sdk-provider | Vercel AI SDK provider exposing the QVAC runtime (chat, embeddings, transcription, translation, speech, OCR, image) | SDK | | bci-whispercpp | Brain-Computer Interface (BCI) neural-signal transcription addon powered by whisper.cpp | Addon | | classification-ggml | Image classification addon (MobileNetV3-Small) on the GGML backend | Addon | diff --git a/docs/website/content/docs/configuration/plugins/index.mdx b/docs/website/content/docs/configuration/plugins/index.mdx index d72aeff627..ed6306e091 100644 --- a/docs/website/content/docs/configuration/plugins/index.mdx +++ b/docs/website/content/docs/configuration/plugins/index.mdx @@ -187,7 +187,7 @@ const sdk = plugins([llmPlugin]); // or registerPlugin(llmPlugin) from "@qvac/in Calls made before any plugin is registered raise `PluginsNotRegisteredError`. -In-process Bare uses [`@qvac/inference`](https://github.com/tetherto/qvac/tree/main/packages/inference). `@qvac/bare-sdk` is deprecated; last release is 0.18.1. +In-process Bare uses [`@qvac/inference`](https://github.com/tetherto/qvac/tree/main/packages/inference). `@qvac/bare-sdk` is deprecated; last release is 0.18.2. ## Notes diff --git a/docs/website/content/docs/js-ts-sdk.mdx b/docs/website/content/docs/js-ts-sdk.mdx index 0fb3b4d2af..d6a742173a 100644 --- a/docs/website/content/docs/js-ts-sdk.mdx +++ b/docs/website/content/docs/js-ts-sdk.mdx @@ -278,7 +278,7 @@ Here is the SDK quickstart adapted for Bare with `@qvac/inference`: ```ts file=/packages/inference/examples/quickstart-adapted.ts title="quickstart-adapted.ts" lineNumbers ``` -For running QVAC on Bare in production, use **[@qvac/inference](https://github.com/tetherto/qvac/tree/main/packages/inference)** — the Bare-only in-process engine. Select addons and register plugins explicitly. `@qvac/bare-sdk` is deprecated; last release is 0.18.1. +For running QVAC on Bare in production, use **[@qvac/inference](https://github.com/tetherto/qvac/tree/main/packages/inference)** — the Bare-only in-process engine. Select addons and register plugins explicitly. `@qvac/bare-sdk` is deprecated; last release is 0.18.2. ## API reference diff --git a/packages/bare-sdk/README.md b/packages/bare-sdk/README.md index 51a9134bb9..9f167eb637 100644 --- a/packages/bare-sdk/README.md +++ b/packages/bare-sdk/README.md @@ -1,6 +1,6 @@ # @qvac/bare-sdk -> **Deprecated.** `@qvac/bare-sdk` is discontinued. Use [`@qvac/inference`](../inference) for in-process Bare. Last release is **0.18.1**. There will not be a 0.19.0 of this package. +> **Deprecated.** `@qvac/bare-sdk` is discontinued. Use [`@qvac/inference`](../inference) for in-process Bare. Last release is **0.18.2**. There will not be a 0.19.0 of this package. > *Part of **QVAC** ecosystem* > @@ -21,8 +21,8 @@ ``` ```diff --"@qvac/bare-sdk": "^0.18.1", -+"@qvac/inference": "^0.18.1", +-"@qvac/bare-sdk": "^0.18.2", ++"@qvac/inference": "^0.18.2", ``` See the [`@qvac/inference` README](../inference/README.md) for install, plugin assembly, and the capability-to-addon table. diff --git a/packages/inference/README.md b/packages/inference/README.md index 03a9d15f4a..f2f63d79d9 100644 --- a/packages/inference/README.md +++ b/packages/inference/README.md @@ -11,7 +11,7 @@ The Bare-only engine of the QVAC SDK. It runs inference directly on the [Bare ru ## Why this exists -`@qvac/inference` is the pure-Bare layer of the SDK, written in TypeScript: the client API, the request engine, and the plugin system, all running in one Bare process. `@qvac/sdk` builds on top of it to reach Node, Electron, Expo, and Pear by launching this engine as a worker; on Bare you use it directly. It replaces the deprecated `@qvac/bare-sdk` package (last release 0.18.1). +`@qvac/inference` is the pure-Bare layer of the SDK, written in TypeScript: the client API, the request engine, and the plugin system, all running in one Bare process. `@qvac/sdk` builds on top of it to reach Node, Electron, Expo, and Pear by launching this engine as a worker; on Bare you use it directly. It replaces the deprecated `@qvac/bare-sdk` package (last release 0.18.2). `@qvac/inference` ships no plugins by default and no addon dependencies. You install only the addon packages your app registers, so the resulting binary scales with the engines you actually assemble. diff --git a/packages/sdk/README.md b/packages/sdk/README.md index 7bccbc4429..ba8c149b24 100644 --- a/packages/sdk/README.md +++ b/packages/sdk/README.md @@ -16,7 +16,7 @@ See [https://docs.qvac.tether.io/sdk/getting-started](https://docs.qvac.tether.i For AI/LLM tools, use [https://docs.qvac.tether.io/llms-full.txt](https://docs.qvac.tether.io/llms-full.txt) as the consolidated plaintext documentation export. -> **In-process Bare:** use [`@qvac/inference`](../inference/README.md). `@qvac/bare-sdk` is deprecated; last release is 0.18.1. +> **In-process Bare:** use [`@qvac/inference`](../inference/README.md). `@qvac/bare-sdk` is deprecated; last release is 0.18.2. ## Supported environments and installation