DEV Community

Cover image for I gave my memory system 24 unlabeled NASA sensor channels and zero configuration
VAAS-X
VAAS-X

Posted on

I gave my memory system 24 unlabeled NASA sensor channels and zero configuration

I've been building a persistent memory layer for AI agents and connected devices — vaas-x, pip install vaas-x — and the claim I make about it that's easiest to be skeptical of is "zero configuration." No schema, no field mapping, no telling it what the data means. It just looks at a stream and figures out what's actually carrying information.

So instead of demoing it on my own data, I pointed it at something I had no hand in designing: NASA's CMAPSS turbofan degradation dataset, with every column identifier stripped out first.

The setup

CMAPSS FD001 is a public benchmark — 100 turbofan engines run to failure under one operating condition, logged as one row per engine-cycle. Each row has 3 operating-condition settings and 21 sensor readings. I know which three columns are the operating settings and which 21 are sensors. The classifier doesn't — I renamed everything to channel_00 through channel_23 before it ever saw the data.

import pandas as pd

columns = ["unit", "cycle", "op_setting_1", "op_setting_2", "op_setting_3"] + [f"sensor_{i}" for i in range(1, 22)]
df = pd.read_csv("CMAPSSData/train_FD001.txt", sep=r"\s+", header=None, names=columns)

measurement_cols = [c for c in columns if c not in ("unit", "cycle")]
df_blind = df[measurement_cols].rename(columns={c: f"channel_{i:02d}" for i, c in enumerate(measurement_cols)})
Enter fullscreen mode Exit fullscreen mode

24 anonymous channels. No sensor names, no units, no hint that this is even turbofan.

Feed it in

from vaasx import Bootstrap

brain = Bootstrap(api_key="YOUR_API_KEY", device_id="cmapss_fd001")

records = df_blind.to_dict(orient="records")
for i in range(0, len(records), 1000):
    batch = records[i:i+1000]
    brain.ingest([{"payload": r} for r in batch])
Enter fullscreen mode Exit fullscreen mode

Ask it what it found

from vaasx.bootstrap import StatisticalProfiler, SchemaClassifier

profiler = StatisticalProfiler(device_id="cmapss_fd001")
for row in records:
    profiler.observe(row)

result = SchemaClassifier().classify(profiler.snapshot())
print("stable channels:", sorted(result["stable_channels"]))
print("significant channels:", sorted(result["significant_channels"]))
Enter fullscreen mode Exit fullscreen mode

Compute the ground truth straight from the data with plain pandas, independent of anything the SDK told you, and compare the two sets directly. When I ran this, they matched — the classifier correctly separated the 3 near-constant operating columns from the 21 channels actually carrying signal, having never been told which was which.

I want to be precise about what this does and doesn't show: it's not "the system understood this is an engine." It's "the system correctly told apart columns that carry real information from columns that don't, on data it had never seen a schema for, and an independent variance check agrees." For a zero-config claim, that's the actual bar to clear.

Try it on your own data

The whole thing — data, code, verification step — is a public reproduction guide, same steps as above, runnable against your own free-tier API key (vaasx.com/pricing, no card required, 10,000 episodes free). If you've got a sensor stream, a log file, or anything structured you've been meaning to give some form of memory to, I'd genuinely like to know what you find when you point it at your own data instead of mine.

Top comments (0)