Data Connections¶
This guide helps you quickly enable conversation history storage with a backend that matches your environment.
Choose a Backend¶
SMG supports these history backends via --history-backend:
memory(default): in-process, non-persistentnone: disable history storagepostgres: durable relational storageredis: fast key-value storage with optional retentionoracle: enterprise Oracle backend
Quick Start Commands¶
Memory (default)¶
smg \
--worker-urls http://worker:8000 \
--history-backend memoryNo history¶
smg \
--worker-urls http://worker:8000 \
--history-backend nonePostgreSQL¶
smg \
--worker-urls http://worker:8000 \
--history-backend postgres \
--postgres-db-url "postgres://user:password@localhost:5432/smg" \
--postgres-pool-max-size 16On a new database, also set DB_AUTO_MIGRATE=true for the first start; see Schema migrations.
Redis¶
smg \
--worker-urls http://worker:8000 \
--history-backend redis \
--redis-url "redis://localhost:6379" \
--redis-pool-max-size 16 \
--redis-retention-days 30Set --redis-retention-days=-1 for persistent retention. Keep the =: the Rust CLI rejects -1 as a separate argument.
Oracle¶
smg \
--worker-urls http://worker:8000 \
--history-backend oracle \
--oracle-wallet-path /path/to/wallet \
--oracle-tns-alias mydb_high \
--oracle-user admin \
--oracle-password "$ORACLE_PASSWORD"Schema migrations¶
PostgreSQL and Oracle track a schema version and refuse to start while migrations are pending, printing the SQL to apply by hand. A new database has pending migrations, so set DB_AUTO_MIGRATE=true (or 1) to let SMG apply them at startup:
DB_AUTO_MIGRATE=true smg launch \
--worker-urls http://worker:8000 \
--history-backend postgres \
--postgres-db-url "postgres://user:password@localhost:5432/smg"A --schema-config file can set auto_migrate instead. See Chat History.
Required Flags by Backend¶
| Backend | Required flags |
|---|---|
memory |
none |
none |
none |
postgres |
--postgres-db-url |
redis |
--redis-url |
oracle |
--oracle-user, --oracle-password, and one of (--oracle-dsn) or (--oracle-wallet-path + --oracle-tns-alias) (omit user/password when --oracle-external-auth is set) |
Environment Variables¶
You can provide Oracle credentials via environment variables (both the Rust binary and the Python launcher read them):
ATP_WALLET_PATHATP_TNS_ALIASATP_DSNATP_USERATP_PASSWORDATP_EXTERNAL_AUTHATP_POOL_MINATP_POOL_MAXATP_POOL_TIMEOUT_SECS
The Rust smg binary reads no environment variables for PostgreSQL or Redis. Only the Python launcher reads POSTGRES_DB_URL, POSTGRES_POOL_MAX, REDIS_URL, REDIS_POOL_MAX, and REDIS_RETENTION_DAYS, as defaults for its flags.
Verify¶
curl http://localhost:30000/healthIf startup fails, SMG returns a config validation error (for example missing DB URL or Oracle credentials). PostgreSQL and Oracle also connect at startup to create tables and check migrations, so an unreachable database or pending migrations stop startup. Redis connects on first use, so a Redis problem shows up on the first request that stores or reads history.
Next Steps¶
- Chat History Concepts — backend architecture and tradeoffs
- Configuration Reference — full storage flag reference