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.
About LaserData
LaserData provides data infrastructure and an SDK for working with durable streams, memory, context, and state on Apache Iggy. This node uses its Laser SDK memory primitive as a shared, durable store for agents.
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.
As a tool
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.
Profiles
Default: Your own Apache Iggy server (local).
| Profile | Deployment | Context |
|---|---|---|
local (default) | Your own Apache Iggy server | Uses the local connection-string field |
cloud | LaserData Cloud | Uses the cloud connection-string field |
SDK contract provenance
Pinned to laser-sdk==0.1.1 (PyPI, in requirements.txt); the contract below was verified
against 0.0.1rc21 and has not been re-checked on 0.1.1. 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.
Configuration
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.
Notes
Deferred scope
context(id) assembly, kv get/set/delete, and fork(id) copy-on-write
state are not exposed. The node is deliberately a request-driven memory/state
provider rather than an event-stream source.
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.1.1