Store agent session events and transcripts locally

Task 10179 · Done · Coder · created · updated

Supersedes draft 10171. Reproduction (Task 10133, real local install): a Claude Code session ran on the container node, but every `POST /api/agent/sessions/<id>/events` answers `503 event storage is not configured on this control plane — retry later`; the api logs at boot "session transcript storage is UNCONFIGURED (AWS_REGION, SESSION_TRANSCRIPT_BUCKET)". No session can be observed as completed (AC-10, AC-16 session view), and the node log fills with retries. Cause: session events/transcripts only have an S3 backend; PRD §7 forbids S3/MinIO in the local edition. Fix: add a local-volume backend for session events and transcripts, selected by `edition.IS_LOCAL` (not an env var), mirroring how attachments use the `jaah-attachments` volume (`apps/api/app/routes/local_storage.py`, `apps/api/app/attachment_storage.py`). Add the volume to `infra/local-edition/compose.yml`. Out of scope: the cloud S3 path (unchanged); retention policy. Done means: - On a fresh `docker compose up -d` of the local edition, a finished agent session shows its events and transcript in Audit > Sessions; the node logs no 503 for events. - A test pins that the local edition stores events with no AWS variable set. - `./dc check quick` green; cloud storage tests unchanged and green.

Outcome

Local edition now stores session events and transcripts on a jaah-sessions volume (edition.IS_LOCAL, no S3). Merged #6962 (db4962e). Quick gate and changed-area tests green. Live install not verified: tree api build (10177). Filed draft 10193. Memory: none applied.

Pull request

Artifacts

Activity

  • Ready
  • Runner started
  • Runner ended (done)