Backup and Disaster Recovery#

Antics stores analytics in DuckDB, control-plane records in redb, and usage counters in a separate redb store. Treat those files and any attention-model artifacts as one operational dataset.

Managed Antics#

TurtleTech operates service backups for managed accounts. Customers do not need file-level access to the service. Contact support@turtletech.us for recovery requests or for the retention and processing terms that apply to an account.

Self-hosted snapshots#

Antics writes a consistent snapshot sibling beside each live store. The snapshot interval is configured with SNAPSHOT_INTERVAL_SECS and defaults to 3600 seconds. A value of 0 disables the snapshot task.

Live store

Snapshot sibling

antics.duckdb

antics.snapshot.duckdb

antics.redb

antics.snapshot.redb

antics_usage.redb

antics_usage.snapshot.redb

The DuckDB sibling is a logical copy (COPY FROM DATABASE), not a byte copy of the live file. Daily retention DELETE then rewrite so deleted 90-day raw rows and 365-day hourly scratch do not stay in the snapshot. Do not add the snapshot byte size to billed storage.

The paths are derived from ANTICS_DUCKDB_PATH, ANTICS_CONTROL_PATH, and ANTICS_USAGE_PATH. Include the snapshot files and the directory named by ANTICS_ATTENTION_MODEL_DIR in the external backup system. Copying only the container image does not preserve customer data or fitted attention models.

Verify a recovery point#

The /api/health response includes snapshot status for DuckDB, control redb, and usage redb. For every enabled store, verify:

  • last_success_unix is recent enough for the configured interval;

  • last_bytes is non-zero;

  • success_count increases; and

  • last_error_unix and error_count do not show an unresolved failure.

An external backup should record the same snapshot set together so that analytics, account configuration, and usage counters describe a consistent recovery point.

Restore a self-hosted deployment#

  1. Stop the Antics service so no process writes to the data directory.

  2. Preserve the current live stores separately for diagnosis and rollback.

  3. Copy each recovered snapshot to its corresponding live-store path.

  4. Restore the attention-model directory when it is configured.

  5. Start Antics with the same store-path configuration.

  6. Check /api/health, sign in, and verify site metadata, usage, rollups, and recent events for a representative site.

Keep the recovered snapshot files until the restored service has been validated. Store migrations run during startup and are designed to be idempotent.