- How do I expire old agent memory automatically instead of writing a cron?
- Store memory as typed rows with an `expires_at` timestamp in a real database, and expiry becomes a `WHERE expires_at < now()` predicate rather than a service you build. Today you run that cutoff `DELETE` on your own schedule through the SDK or a signed-in `POST /v1/run`; a managed server-run sweep is landing so you won't have to. On a hand-rolled table you own the whole retention job yourself.
- Does nlqdb delete expired memory for me yet?
- Not automatically yet — be honest about the state. The deterministic sweep core (a bound-cutoff `DELETE FROM facts`, per-database failure isolation) is written and tested, but the scheduled Worker that fires it nightly is still landing. Until then, expiry is a `DELETE` you trigger yourself on the schedule you choose; the storage shape makes it one line instead of a bespoke job.
- Can I query which agent memories are about to expire?
- Yes — because `expires_at` is a typed column, 'memories expiring in the next 7 days, soonest first' is a normal query. Ask it in English and nlqdb compiles the `WHERE` + `ORDER BY`, runs it, and shows the SQL. A JSON blob or vector store has no such grain to filter or sort on.
- What does a DIY retention cron cost me later?
- The `DELETE` statement is the easy part. The expensive part is scheduling it reliably, isolating one failed run so it doesn't wedge the rest, and remembering to filter expired-but-not-yet-deleted rows out of every read path. Miss the last one and your agent recalls memory you meant to forget. nlqdb is moving that into the engine so you don't hand-maintain it.