
Security News
GPT-6 Astra Attempts Supply Chain Attacks Against Open Source Maintainers in Testing
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.
locusdb-client
Advanced tools
Node.js client for Locus — typed access to the differentiator verbs (geo, sketches, CAS, secondary index) plus the reactive changefeed and live geofencing that a plain Redis driver can't surface.
The Node.js client for Locus. Any Redis driver works against Locus for standard commands — this package adds the two things a plain driver can't give you ergonomically:
redis.call(...).ioredis doesn't
model, so the client owns a dedicated connection and parses the frames for you.It wraps ioredis (exposed as .redis) — it does not reimplement RESP.
npm install locusdb-client ioredis
import { LocusClient } from "locusdb-client";
const locus = new LocusClient({ host: "127.0.0.1", port: 6379 });
// Standard Redis: the raw ioredis connection is right there.
await locus.redis.set("hello", "world");
// Differentiator verbs, typed:
await locus.geoSet("driver:7", 13.36, 38.11, { status: "free" });
const hits = await locus.geoSearch({
fromLonLat: [13.4, 38.1],
byRadius: [50, "km"],
withDist: true,
where: { status: "free" }, // attribute filter
});
// hits -> [{ key: "driver:7", dist: 3.67 }]
await locus.bfAdd("seen", "msg-42"); // 1 new, 0 probably-duplicate
await locus.cas("flag", "old", "new"); // atomic check-and-set
await locus.idxCreate("by_status", "status");
await locus.idxGet("by_status", "paid"); // -> ["order:1"]
const feed = locus.changefeed("user:"); // optional key prefix
feed.on("ready", ({ count, offset }) => console.log("snapshot done", count));
feed.on("change", (c) => console.log(c.op, c.key, c.value)); // write | del | expire
// ...later
feed.close();
const fence = locus.geofence(13.4, 38.1, 5, "km");
fence.on("enter", (m) => console.log("entered", m.key, m.value)); // "lon,lat"
fence.on("move", (m) => console.log("moved", m.key, m.value));
fence.on("leave", (m) => console.log("left", m.key));
Both run on their own connection; the snapshot ("snapshot" events, then
"ready") precedes live updates, so there's no gap or duplicate.
let since = 0;
for (;;) {
const batch = await locus.clusterCdcMerge(since, 100); // global HLC order
for (const c of batch) { handle(c); since = c.hlc; }
if (!batch.length) await new Promise((r) => setTimeout(r, 250));
}
cdcRead) and consumer groups work over the normal
connection and need server retention (LOCUS_CDC_MAXLEN). The push API above
does not.tls option; the subscription connection honors it too.Run the example against a local server: node examples/quickstart.cjs (after
npm run build).
FAQs
Node.js client for Locus — typed access to the differentiator verbs (geo, sketches, CAS, secondary index) plus the reactive changefeed and live geofencing that a plain Redis driver can't surface.
We found that locusdb-client demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.

Product
Socket can now send alerts and supply chain attack notifications to Microsoft Teams, with filters that route the right updates to each channel.

Security News
pnpm 12 rewrites the package manager in Rust, cutting install times by up to 90% while preserving pnpm 11 workflows and lockfiles.