QVAC

QVAC lets you run AI workloads locally using open models across Linux, macOS, Windows, Android, and iOS.

Verified

Core facts

Read by a script from the official API, not rewritten by a model.

License
Apache-2.0
Languages
TypeScript
Maintainer
tetherto
Verified

What it is

QVAC lets you run AI workloads locally using open models across Linux, macOS, Windows, Android, and iOS. QVAC provides an SDK for building local-first AI applications and systems in JavaScript/TypeScript and Python. QVAC also provides an HTTP server for using QVAC as a local model provider. The HTTP server's OpenAI-compatible API lets you connect AI tools such as OpenCode and OpenClaw.

Main features

  1. Text generation provides LLM inference for text generation and chat via Fabric LLM.

  2. Text embeddings provide vector embedding generation for semantic search, clustering, and retrieval.

  3. Fine-tuning adapts LLMs to domain-specific tasks via LoRA.

  4. Image generation provides text-to-image and image-to-image generation via a Diffusion backend.

  5. Video generation provides text-to-video and image-to-video generation via a Diffusion backend.

  6. Translation provides neural machine translation via Fabric LLM and Bergamot.

Getting started

  1. You can run a first example using the JS/TS SDK.

  2. You can also run a first example using the Python SDK.

  3. The Python SDK package is self-contained: it bundles the QVAC worker and Bare runtime, and Node.js is not required.

  4. To use the HTTP server, launch the server with the CLI, then use QVAC as a model provider for OpenAI-compatible tools like OpenCode and OpenClaw.

  5. Setup varies by tool, and the project ships dedicated plugins for some tools, such as OpenCode and OpenClaw, that run the server for you.

  6. In the HTTP server quickstart, the model downloads on first start and is preloaded into memory.

From the README · bash
npm i @qvac/sdk
From the README · js
import { loadModel, LLAMA_3_2_1B_INST_Q4_0, completion, unloadModel } from '@qvac/sdk';
try {
  const modelId = await loadModel({
    modelSrc: LLAMA_3_2_1B_INST_Q4_0,
    onProgress: (p) => {
      const mb = (n) => (n / 1e6).toFixed(1);
      const line = `▸ Downloading ${p.percentage.toFixed(0)}% (${mb(p.downloaded)}/${mb(p.total)} MB)`;
      process.stderr.write(process.stderr.isTTY ? `\r${line}` : `${line}\n`);
      if (p.percentage >= 100) process.stderr.write('\n');
    },
  });
  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 });
} catch (error) {
  console.error('✖', error);
  process.exit(1);
}
From the README · bash
QVAC_CONFIG_PATH=./qvac.config.json node quickstart.js
From the README · bash
# Replace <version> with the release you want, e.g. sdk-v0.17.0:
pip install tetherto-qvac-sdk \
  -f https://github.com/tetherto/qvac/releases/expanded_assets/sdk-v<version>
From the README · python
import asyncio
import sys

from tetherto.qvac_sdk import Client, completion, load_model, unload_model
from tetherto.qvac_sdk.models import LLAMA_3_2_1B_INST_Q4_0

def print_progress(p):
    line = f"▸ Downloading {p.percentage:.0f}% ({p.downloaded / 1e6:.1f}/{p.total / 1e6:.1f} MB)"
    print(line, end="\r" if sys.stderr.isatty() else "\n", file=sys.stderr)
    if p.percentage >= 100:
        print(file=sys.stderr)

async def main():
    async with Client() as client:
        t = client.transport
        try:
            model_id = await load_model(
                t, model_src=LLAMA_3_2_1B_INST_Q4_0, on_progress=print_progress
            )
            run = completion(
                t,
                model_id=model_id,
                history=[
                    {"role": "user", "content": "Explain quantum computing in one sentence"},
                ],
            )
            async for event in run.events:
                if event.type == "contentDelta":
                    sys.stdout.write(event.text)
                    sys.stdout.flush()
            print()
            await unload_model(t, model_id)
        except Exception as error:
            print(f"✖ {error}", file=sys.stderr)
            return 1
    return 0

if __name__ == "__main__":
    sys.exit(asyncio.run(main()))
From the README · bash
python quickstart.py

Who it is for

In the JavaScript and Python quickstart examples, QVAC streams the response tokens and prints them to the terminal. In the curl example of the HTTP server quickstart, the response comes back as a single JSON payload with the model's answer. Multimodal provides LLM inference over text, images, and other media in one context.

VLA provides vision-language-action for robot control via a GGML backend. OCR extracts text from images via ONNX Runtime or GGML backends. BCI provides brain–computer interface transcription via a Whisper backend.

The FFmpeg audio decoder has streaming PCM output and a default 64 MiB decoded-output limit. Image classification and embeddings classify images with MobileNet or generate MegaLoc descriptors for image retrieval via a GGML/Fabric backend. QVAC's model fetching downloads AI models directly from peers through a distributed model registry, removing the need for centralized model hosting and distribution.

The model registry also serves weightless descriptions of models, their settings and tensor list without the weights, so whether a model fits in memory can be assessed before it is downloaded. Blind relays route traffic through relay peers when devices cannot connect directly across NATs and firewalls, keeping the network connected without centralized infrastructure. The project describes local-first as running AI offline with inference optimized for commodity hardware, from consumer apps and embedded systems to on-premises deployments.

The project lists cross-platform as one codebase for Linux, macOS, Windows, Android, and iOS, using JavaScript/TypeScript or Python. The Examples resource offers sample apps and PoCs built with QVAC SDK. The Blog resource offers tutorials, deep dives, engineering notes, and announcements.

Sources

This page is written from the official sources below. Open them to check the original text.

Verified ·

This page is written by AI from the official sources above and checked automatically. This site has not tested it. Found a mistake? Tell us.