GitHub links require repository access.

# Operations

Run `./scripts/setup_developer.sh` from the repository or extracted kit.
It verifies the classifier, creates local credentials, starts Docker and rehearses the demo.

## Everyday commands

```sh
docker compose ps
docker compose logs --since=15m api worker
curl http://localhost:8000/ready
uv run python scripts/rehearse_demo.py
```

`/health` checks the API process. `/ready` checks the database, queue, replay files and model.
The API and database bind to localhost. Keep `DEMO_MODE=replay` for the demo.

## Configuration

Set local values in `.env`; the template is [.env.example](https://github.com/wysh3/saga/blob/main/.env.example).
Replay uses stored model responses. Live mode enables public collectors and configured model providers.
`SAGA_API_KEY` protects the web-to-API connection; it is not user login.
The team selector filters records and does not provide access control.

Before sharing a deployment, arrange user authentication, TLS, source permissions, monitoring and
an operational owner. Keep secrets out of logs and Git. Never bypass a failed evidence check.

## Backup and restore

```sh
scripts/backup_database.sh /absolute/private/path/saga.dump
scripts/verify_restore.sh
```

Restore only when replacing the database is intended:

```sh
scripts/restore_database.sh --confirm-replace-saga /absolute/private/path/saga.dump
docker compose restart api worker
```

## Review records

Export a discard sample with `uv run python scripts/discard_review.py export /path/review.csv`.
After a reviewer completes it, import it with the same command using `import`.
Simulated reviews remain separate; a measured false-discard rate needs at least 30 real reviews.

For tests and release checks, see [Development](https://github.com/wysh3/saga/blob/main/docs/development.md).
