<!-- Full-page Markdown export (rendered HTML → GFM). Source: https://neotoma.io/hi/inspector/settings/retention Generated: 2026-04-27T12:48:46.103Z --> # Inspector, Settings · Retention Retention controls when, if ever, Neotoma drops or tiers data into cold storage. The default for a fresh install is **keep everything**, observations, source files, and timeline events are immutable by design and most operators rely on that for audit and provenance. The Retention panel exists for the cases where you do want to age data out. inspector.neotoma.io/settings#retention Inspector Neotoma Dashboard Conversations Turns Compliance Activity Feedback Entities Observations Sources Relationships Graph Explorer Schemas Timeline Interpretations Agents Agent grants Settings Retention windows | Store | Window | After window | Size | | --- | --- | --- | --- | | Observations | keep all | \- | 84.2 MB | | Source files | 180 days | tier → cold | 412.1 MB | | Timeline events | keep all | \- | 12.6 MB | | Conversation msgs | 365 days | compact | 31.8 MB | | Sandbox writes | 30 days | expire | 0.4 MB | DB size 541 MB hot + cold If applied −226 MB next sweep Last sweep 2d ago manual run Retention panel, per-store windows, cold-tier toggles, and projected size impact. ## Stores - **Observations**, immutable row-per-write. Default is keep-all; any retention here is destructive and compounds, the reducer can no longer reconstruct prior states for affected entities. - **Source files**, the biggest store by bytes. Tier-to-cold-storage moves the bytes out of the SQLite blob columns to a configured cold path while preserving the metadata row, so observations still link to a known source even when the file is offline. Expire drops the bytes outright. - **Timeline events**, append-only event log. Default keep-all; expire is mostly used in CI / sandbox. - **Conversation messages**, chat turns. `compact` rewrites old turns to a summary row that preserves who-talked-to-whom-when without the full body. - **Sandbox writes**, only present on [sandbox-environment](/inspector/settings/connection) instances. Defaults to a tight 30-day expiry so the public sandbox stays fresh. ◆ ## Sweep semantics 1. Sweeps are **opt-in**, a nightly run can be enabled per store, but you can also kick a one-shot sweep from this panel and review the dry-run impact first. 2. `tier → cold` is reversible: the metadata row stays, the file path moves, and a re-ingest restores it. 3. `expire` and `compact` are **not reversible**, they drop bytes. Run them with backups in place. 4. Affected rows are recorded as a `retention_sweep` timeline event so the audit trail stays intact even after the source data is gone. See the [Timeline](/inspector/timeline) for the running record. ◆ ## Recommendations - **Personal use**, leave everything at keep-all; SQLite handles low-GB workloads comfortably. - **Shared / server**, tier source files older than 6-12 months to cold; keep observations and timeline events forever. - **Sandbox / CI**, expire everything aggressively; the dataset is synthetic.