CORE + STORAGERuntime and state paths
| VARIABLE | DEFAULT | PURPOSE |
|---|
| SHREDDAR_ENV | development | Environment label returned by health checks |
| SHREDDAR_DATA_DIR | /tmp/shreddar-dev | Base directory for local state |
| SHREDDAR_DATABASE_PATH | $DATA_DIR/shreddar.sqlite | SQLite policy, receipt, and Vault store |
| SHREDDAR_KEY_FILE | $DATA_DIR/vault.key | Vault master key path |
| SHREDDAR_MAX_TEXT_CHARS | 100000 | Maximum characters accepted per text or chat message |
| SHREDDAR_ACCESS_LOG | false | HTTP access-log switch; raw request bodies are never intended telemetry |
ACCESS CONTROLPublic mode must fail closed
| VARIABLE | DEFAULT | RULE |
|---|
| SHREDDAR_PUBLIC_MODE | false | When true, at least one API credential is mandatory |
| SHREDDAR_API_KEYS | empty | Comma-separated direct values; secret-file form is preferred |
| SHREDDAR_API_KEYS_FILE | empty | Root-controlled credential file, mode 0600 or stricter |
| SHREDDAR_ALLOWED_ORIGINS | localhost origins | Exact CORS allowlist; wildcard is rejected in public mode |
VAULT + MAINTENANCEBound the lifetime of reversible state
| VARIABLE | DEFAULT | BOUND |
|---|
| SHREDDAR_SESSION_TTL_SECONDS | 86400 | Default mapping lifetime; at least 60 seconds |
| SHREDDAR_MAX_SESSION_TTL_SECONDS | 604800 | Maximum accepted lifetime in production Compose |
| SHREDDAR_CLEANUP_INTERVAL_SECONDS | 900 | Expired-state cleanup interval; 60 to 86400 seconds |
UPSTREAM MODELRemote inference is operator-configured
| VARIABLE | DEFAULT | PURPOSE |
|---|
| SHREDDAR_DEMO_MODE | true | Use deterministic demo responses instead of a remote upstream |
| SHREDDAR_UPSTREAM_BASE_URL | empty | Operator-selected OpenAI-compatible service root |
| SHREDDAR_UPSTREAM_API_KEY | empty | Direct upstream credential |
| SHREDDAR_UPSTREAM_API_KEY_FILE | empty | Preferred secret-file form |
| SHREDDAR_UPSTREAM_TIMEOUT_SECONDS | 60 | Bound the upstream request duration |