npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@veristamp/nqql-edge

v0.5.0

Published

Local QQL execution for Node.js with qdrant-edge and FastEmbed.

Readme

nqql-edge

Node N-API bindings for local QQL: qdrant-edge + FastEmbed, no remote Qdrant.

Proposition

Same language as @veristamp/nqql, executed in-process (qdrant-edge 0.8). Cluster features (custom SHARD, GROUP BY … LOOKUP FROM, SHOW QUOTAS / SET QUOTA, …) return explicit QQL-EDGE-UNSUPPORTED-* errors. Sparse PARAMS (idf = …), ACORN search params, GROUP BY, and HNSW/optimizer ALTER COLLECTION are supported offline.

Install

npm install @veristamp/nqql-edge

Node ≥ 18. Platforms: Linux x64, Linux arm64, macOS arm64, Windows x64 (not macOS Intel).

Quick start

const {
  localExecutor, listEmbeddingModels, parse, injectFilter, version,
} = require("@veristamp/nqql-edge");

// Model load (and first-use download) runs off the JS thread — await it.
const client = await localExecutor("./qql-data", {
  model: "bge-small-en-v1.5",
  onDiskPayload: true,
});

await client.execute("CREATE COLLECTION docs HYBRID");
await client.execute('UPSERT INTO docs VALUES {id: 1, text: "hello from edge"}');
const report = await client.execute(
  "QUERY TEXT 'hello' FROM docs USING dense LIMIT 5"
);

const [stmt] = parse("QUERY TEXT 'hello' FROM docs USING dense LIMIT 10");
stmt.injectFilter("tenant_id", "=", "acme");
// No custom SHARD on edge — use remote Qdrant for SHARD / CREATE SHARD KEY

await client.close();
console.log(version, listEmbeddingModels().length);

WAL footprint

qdrant-edge pre-allocates each write-ahead-log segment (default 32 MiB), which dominates the on-disk footprint of small embedded shards. Pass whole MiB to walSegmentMb to shrink it; the resolved capacity persists in the shard's edge_config.json:

const client = await localExecutor("./qql-data", { walSegmentMb: 8 });

When unset, the 32 MiB engine default applies. Zero, negative, fractional, or overflowing values fail closed with QQL-VALIDATION-CONFIG.

API

| Export | Role | |--------|------| | localExecutor(dataDir, options) → Promise<Client> | FastEmbed + edge (model load runs off the JS thread) | | httpExecutor(dataDir, url, key, model, dim) → Promise<Client> | Edge + HTTP embedder | | listEmbeddingModels() | ONNX model catalog (multi / image flags included) | | parse / parseJson / isValid / tokenize | Frontend | | injectFilter | Isolation | | stmt.shardKey | AST property; edge rejects SHARD at execute | | bind(query, params) | Substitute :name (object) or ? (array) | | compile / explain / execute | Plan / run (options.params same as bind) | | Client.scrollCursor / scrollCursor, Client.scrollStream / scrollStream | Lazy async scroll iteration + pull-driven WHATWG stream |

Quotas and custom sharding require remote Qdrant; GROUP BY runs offline (including SIZE / LIMIT / OFFSET, but not LOOKUP FROM). Offline sparse IDF works: PARAMS (idf = 'global') or PARAMS (idf = WHERE tenant_id = 'acme').

There is deliberately no HttpEmbedder class here: the edge SDK configures its embedder at construction through localExecutor (on-device ONNX / BM25) or httpExecutor (OpenAI-compatible endpoint), not per Client. Server-only options — url, apiKey/api_key, useGrpc/use_grpc, routeAffinity/route_affinity, embedder — are rejected with a TypeError pointing at @veristamp/nqql instead of being silently ignored.

Docs