> ## Documentation Index
> Fetch the complete documentation index at: https://noesis-32c1d602-cursor-technical-documentation-improvements.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Configure shared episode storage

> Point Noēsis at a shared location via network volumes, S3 sync, Docker mounts, or Kubernetes PVCs.

By default, Noēsis writes episodes under `./.noesis/episodes/<episode-id>/`. In a team or service setting, you usually want a **shared** location so everyone can see/replay the same traces.

This guide shows four common setups:

1. Network volume (NFS/SMB)
2. Local + S3 sync
3. Docker bind mount
4. Kubernetes PersistentVolumeClaim

<Tip>
  Pick one of these patterns for your environment—you don’t need all four.
</Tip>

## A) Shared dev: network volume

```bash theme={null}
# Example: shared volume mounted at /srv/noesis/episodes
ls /srv/noesis/episodes
# (empty or existing runs)
```

Configure your app/runtime to use it as the base runs directory, e.g.:

```bash theme={null}
# pseudo-config
NOESIS_RUNS_DIR=/srv/noesis/episodes
```

Result: `/srv/noesis/episodes/<service>/<episode-id>/` is shared across the team.

## B) Shared dev: local + S3 (or any object store)

Don’t write directly to S3; sync a local directory.

```bash theme={null}
# App writes episodes locally
NOESIS_RUNS_DIR=/var/noesis/episodes

# Periodic sync job (cron/CI)
aws s3 sync /var/noesis/episodes s3://my-bucket/noesis-runs --delete

# Optionally pull shared episodes down
aws s3 sync s3://my-bucket/noesis-runs /var/noesis/episodes
```

Pattern: local path for fast replay/debugging, S3 as central archive.

## C) Docker: bind-mount the runs directory

```bash theme={null}
mkdir -p /srv/noesis/episodes

docker run \
  -v /srv/noesis/episodes:/app/.noesis/episodes \
  -e NOESIS_RUNS_DIR=/app/.noesis/episodes \
  my-noesis-service:latest
```

Inside the container, Noēsis writes to `/app/.noesis/episodes/...`; on the host, you see `/srv/noesis/episodes/...`.

## D) Kubernetes: PersistentVolumeClaim

```yaml theme={null}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: noesis-runs-pvc
spec:
  accessModes: ["ReadWriteMany"]
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-noesis-service
spec:
  template:
    spec:
      containers:
        - name: app
          image: my-noesis-service:latest
          env:
            - name: NOESIS_RUNS_DIR
              value: /var/noesis/episodes
          volumeMounts:
            - name: noesis-runs
              mountPath: /var/noesis/episodes
      volumes:
        - name: noesis-runs
          persistentVolumeClaim:
            claimName: noesis-runs-pvc
```

Each pod writes episodes under `/var/noesis/episodes`, backed by the shared PVC.

***

<Check>
  If you can answer “Where do episodes live in this environment?” and “Who can read them?”, you’re ready to roll Noēsis out beyond your laptop.
</Check>
