LaserData Memory
Adds durable, shared memory to agents through four tools: laserdata.remember,
laserdata.recall, laserdata.improve, and laserdata.forget.
This is a tool node (classType: ["tool"], invoke capability, no data lanes). Multiple agents
can connect to the same LaserData Memory node and share its namespace-scoped durable memory.
What it does
LaserData is real-time data infrastructure on Apache Iggy: durable event
streams with memory/context/state SDKs on top. This node wraps the Laser SDK's memory primitive.
Every remember appends to a durable memory topic (an auditable event stream), recall folds the
topic back into the current items, improve records a ranking feedback signal, and forget
appends a tombstone. Memory survives pipeline restarts and is shared by every agent pointing at
the same deployment and namespace.
Memory is grouped by namespace (e.g. customer:42). By default the agent may pass a
namespace per call, falling back to the one configured on the node; turn
allow_namespace_override off to lock all calls to the configured namespace. A conversation id
can additionally scope items to one session.
Tools
laserdata.rememberstores a statement verbatim and returns itsmemory_id(a time-ordered ULID).laserdata.recallreturns up tolimititems, most recent first. The topic-backed memory ignores the semanticquery(a vector backend would rank by it); each row carriesid,text, and — when present —score,conversation, andkind.laserdata.improverecords feedback on an item: positiveweightpromotes it in future recalls, negative demotes it.laserdata.forgetdeletes one item by id (the durable audit stream keeps its history).
Bad input raises ValueError; backend and timeout failures raise RuntimeError. There is no
destructive clear/reset tool.
SDK contract provenance
Built against laser-sdk==0.0.1rc21 (PyPI, pinned in requirements.txt). rc20+ speaks only
Apache Iggy's VSR cluster protocol (the upcoming clustering wire format), so the server must be a
VSR-enabled build: LaserData Cloud deployments created on/after 2026-07-31 serve it (older
deployments must be recreated — confirmed with the LaserData team), as does
laserdata/laser-stack locally. The full
remember → recall → improve → forget round-trip was verified live against a LaserData Cloud
free-tier deployment on rc21/VSR (2026-07-31), including TLS auto-attach with the SDK's embedded
root CA. The SDK surface itself was verified by
introspection on 2026-07-29: Laser.connect(connection_string), laser.memory(namespace), and
async Memory.remember/recall/improve/forget. The SDK is a native (PyO3) async client whose
futures must be created on a running event loop, so the node keeps one persistent bridge loop in
a daemon thread (IGlobal) and submits each synchronously-dispatched tool call to it. The
connection opens lazily on the first tool call and closes on pipe teardown.
Setup
The LaserData deployment dropdown selects a connection mode (a preconfig profile, same pattern as the Qdrant node) and switches the visible fields and defaults:
Your own Apache Iggy server (local, the default):
connection_string:user:password@host:port, e.g.iggy:iggy@localhost:8090(Iggy's default dev credentials). Secure field; falls back to theLASER_CONNECTION_STRINGenvironment variable. A containerized engine needs an address reachable from the container (e.g.host.docker.internal). No token exists in this mode.- The server must be a VSR-enabled Iggy build (rc20+ wheels speak only the VSR clustering
protocol): use laserdata/laser-stack
(
./scripts/up, which also prints a readyLASER_CONNECTION_STRING). Stock pre-VSRiggyrs/iggyimages cannot talk to this SDK. foldeddefaults totrue— recall folds the memory topic in-process, which a plain Iggy server (no managed backend) requires.
LaserData Cloud (cloud):
connection_string:user:password@<deployment-domain>:8090— the user/password from the deployment's Credentials tab, the domain and TCP port from its Overview tab (secure; same env fallback). TLS is automatic for*.laserdata.cloudhosts (the SDK ships LaserData's root CA — no certificate file, no extra flags). There is no separate API token — all auth travels in the connection string. The deployment must serve VSR: created on/after 2026-07-31; recreate older ones (all verified against a live Cloud deployment).foldeddefaults totrue— the folded (in-process) recall path is the one verified live against Cloud; turn it off only on a deployment serving a managed KV view.
Shared by both modes:
namespace: default memory scope for all connected agents; required here or per call.stream(advanced): the Iggy stream the memory topics live in, pinned as the connection's default stream at connect. Defaults torocketride-memory; nodes sharing one memory must match.allow_namespace_override(advanced): permit per-call namespaces. Defaults totrue.folded(advanced): overridable per the mode notes above.recall_limit(advanced): default recall result limit, 1–200. Defaults to 10.op_timeout(advanced): per-operation timeout (including first connect), 5–600 seconds. Defaults to 30.
Upstream docs
- LaserData: https://laserdata.com
- LaserData docs: https://docs.laserdata.com
- Laser SDK repo: https://github.com/laserdata/laser-sdk
Schema
| Field | Type | Description | Default |
|---|---|---|---|
laserdata.allow_namespace_override | boolean | Allow namespace override When on (default), the agent may pass a different namespace per call. Turn off to lock every call to the configured namespace. | true |
laserdata.cloud.connection_string | string | Connection string LaserData Cloud endpoint in the form user:password@host:port — the user and password from your deployment's Credentials tab, the domain and TCP port from its Overview tab. TLS is automatic for *.laserdata.cloud hosts (the SDK ships the LaserData root CA). The deployment must serve VSR — created on/after 2026-07-31; recreate older ones. Falls back to the LASER_CONNECTION_STRING environment variable when blank. | "" |
laserdata.folded | boolean | Folded recall When on (default), 'recall' folds the durable memory topic in-process — works against plain Apache Iggy and LaserData Cloud alike (verified live). Turn off only to read a managed KV view on a deployment that serves one. | true |
laserdata.local.connection_string | string | Connection string Apache Iggy connection string in the form user:password@host:port, e.g. iggy:iggy@localhost:8090. The server must be a VSR-enabled Iggy build — use laser-stack (its ./scripts/up prints a ready connection string); stock pre-VSR Iggy images cannot talk to this SDK. A containerized engine needs an address reachable from the container, e.g. host.docker.internal. Falls back to the LASER_CONNECTION_STRING environment variable when blank. | "" |
laserdata.namespace | string | Namespace Memory scope every call reads and writes, e.g. customer:42. Can be passed by the agent per call; a namespace is required on the call or here. | "" |
laserdata.op_timeout | integer | Operation timeout (s) Max seconds any single memory operation (including the first connect) may take before it fails. | 30 |
laserdata.profile | string | LaserData deployment Connect to... | "local" |
laserdata.recall_limit | integer | Recall limit Maximum number of memory items to retrieve per recall. | 10 |
laserdata.show_advanced | boolean | Advanced settings Show advanced options. The defaults work for most cases, leave off for a simple setup. | false |
laserdata.stream | string | Stream The Iggy stream the memory topics live in, pinned as the connection's default stream. All nodes sharing one memory must use the same stream. | "rocketride-memory" |
Dependencies
laser-sdk==0.0.1rc21
Scope
Deferred (see issue #1733): context(id) assembly, kv get/set/delete, fork(id) copy-on-write
state. Out of scope by architect decision: the streaming-transport surface (log/topic,
views, graph, watch, fabric) — RocketRide's engine is request-driven, and LaserData is
integrated here as a memory/state provider, not an event source.