# AIStor Memory (aimem) RELEASE.2026-09-22T17-32-56Z

Released: 2026-09-22

Mounts can now record which agent session wrote each file, and can start the
telemetry sidecar that captures an agent's activity. A file that is deleted or
renamed while it is open stays readable through that open descriptor, as POSIX
requires, and `git`'s lock-file pattern no longer loses the file it renames.

---

## Downloads

### Binaries

| Platform | Architecture | Download                                                                                                                             |
| -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| Linux    | amd64        | [aimem.RELEASE.2026-09-22T17-32-56Z](https://dl.min.io/aistor/aimem/release/linux-amd64/archive/aimem.RELEASE.2026-09-22T17-32-56Z) |
| Linux    | arm64        | [aimem.RELEASE.2026-09-22T17-32-56Z](https://dl.min.io/aistor/aimem/release/linux-arm64/archive/aimem.RELEASE.2026-09-22T17-32-56Z) |

The setuid `aimem-fusermount` mount helper, the `aimem-bio` binary that
`aimem bio` runs, and the Kubernetes CSI node driver are published beside it:

| Binary             | Architecture | Download                                                                                                                                                   |
| ------------------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `aimem-fusermount` | amd64        | [aimem-fusermount.RELEASE.2026-09-22T17-32-56Z](https://dl.min.io/aistor/aimem/release/linux-amd64/archive/aimem-fusermount.RELEASE.2026-09-22T17-32-56Z) |
| `aimem-fusermount` | arm64        | [aimem-fusermount.RELEASE.2026-09-22T17-32-56Z](https://dl.min.io/aistor/aimem/release/linux-arm64/archive/aimem-fusermount.RELEASE.2026-09-22T17-32-56Z) |
| `aimem-bio`        | amd64        | [aimem-bio.RELEASE.2026-09-22T17-32-56Z](https://dl.min.io/aistor/aimem/release/linux-amd64/archive/aimem-bio.RELEASE.2026-09-22T17-32-56Z)               |
| `aimem-bio`        | arm64        | [aimem-bio.RELEASE.2026-09-22T17-32-56Z](https://dl.min.io/aistor/aimem/release/linux-arm64/archive/aimem-bio.RELEASE.2026-09-22T17-32-56Z)               |
| `aimem-csi-driver` | amd64        | [aimem-csi-driver.RELEASE.2026-09-22T17-32-56Z](https://dl.min.io/aistor/aimem/release/linux-amd64/archive/aimem-csi-driver.RELEASE.2026-09-22T17-32-56Z) |
| `aimem-csi-driver` | arm64        | [aimem-csi-driver.RELEASE.2026-09-22T17-32-56Z](https://dl.min.io/aistor/aimem/release/linux-arm64/archive/aimem-csi-driver.RELEASE.2026-09-22T17-32-56Z) |

Each binary has `.sha256sum`, `.minisig`, and `.asc` files at the same path.
These links point into `archive/`, where a release's files stay after a newer
release ships, so they always serve this build. The unversioned
`…/linux-{arch}/aimem` path serves whatever release is newest.

### Packages

`.deb`, `.rpm`, and `.apk` install the `aimem` client, the setuid
`aimem-fusermount` mount helper (`/usr/bin/aimem-fusermount`, mode 4755), and
`aimem-bio`. They also install a disabled example `mnt-aimem.mount` systemd
unit and the `/sbin/mount.aimem` helper it needs.

| Format | Architecture | Download                                                                                                                                    |
| ------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| DEB    | amd64        | [aimem\_20260922173256.0.0_amd64.deb](https://dl.min.io/aistor/aimem/release/linux-amd64/archive/aimem_20260922173256.0.0_amd64.deb)       |
| DEB    | arm64        | [aimem\_20260922173256.0.0_arm64.deb](https://dl.min.io/aistor/aimem/release/linux-arm64/archive/aimem_20260922173256.0.0_arm64.deb)       |
| RPM    | amd64        | [aimem-20260922173256.0.0-1.x86_64.rpm](https://dl.min.io/aistor/aimem/release/linux-amd64/archive/aimem-20260922173256.0.0-1.x86_64.rpm)   |
| RPM    | arm64        | [aimem-20260922173256.0.0-1.aarch64.rpm](https://dl.min.io/aistor/aimem/release/linux-arm64/archive/aimem-20260922173256.0.0-1.aarch64.rpm) |
| APK    | amd64        | [aimem\_20260922173256.0.0_x86_64.apk](https://dl.min.io/aistor/aimem/release/linux-amd64/archive/aimem_20260922173256.0.0_x86_64.apk)     |
| APK    | arm64        | [aimem\_20260922173256.0.0_aarch64.apk](https://dl.min.io/aistor/aimem/release/linux-arm64/archive/aimem_20260922173256.0.0_aarch64.apk)   |

The packages depend only on libc (`libc-bin` / `glibc-common`); no `libfuse` is
needed.

### Container Images

```bash
# The aimem client, pinned to this release:
docker pull quay.io/minio/aistor/aimem:RELEASE.2026-09-22T17-32-56Z

# The Kubernetes CSI node driver, pinned to this release:
docker pull quay.io/minio/aistor/aimem-csi-driver:RELEASE.2026-09-22T17-32-56Z
```

`quay.io/minio/aistor/aimem:latest` no longer points at this release; a newer
one has shipped. To verify a build, pin the release tag or a `@sha256:`
digest, never `latest`.

Mounting from a container needs `/dev/fuse` and `CAP_SYS_ADMIN` (or
`--privileged`).

### Verification

Each binary is signed with minisign (preferred) and GPG, and has a sha256sum
file.

```bash
BASE=https://dl.min.io/aistor/aimem/release/linux-amd64/archive
curl -fsSLO $BASE/aimem.RELEASE.2026-09-22T17-32-56Z
curl -fsSLO $BASE/aimem.RELEASE.2026-09-22T17-32-56Z.minisig
curl -fsSLO $BASE/aimem.RELEASE.2026-09-22T17-32-56Z.sha256sum

# minisign
minisign -Vm aimem.RELEASE.2026-09-22T17-32-56Z \
  -P RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav

# sha256: the checksum file names the versioned binary, so keep that file name
sha256sum -c aimem.RELEASE.2026-09-22T17-32-56Z.sha256sum
```

The minisign public key above is the MinIO release-signing key, used across the
AIStor product line.

---

## Changes since RELEASE.2026-09-04T23-47-52Z

### New Features

- **Record the agent session on each file it writes.** The new
  `--session-file <FILE>` mount option names a file that holds the current
  session id. The mount reads it when a file is first written to and stores
  it on that version of the object as `x-amz-meta-aimem-session-id`, so the AIStor Memory console can show
  which files a session changed. Whatever launches the agent must keep that file
  up to date; aimem does not write it. (#198)
- **Capture an agent's telemetry from the mount.** `--bio-agent <ID>` starts the
  `aimem-bio` OpenTelemetry (OTLP) sidecar for the Memory Bucket being mounted,
  or attaches to one that is already running, and keeps it for the life of the
  mount. `--bio-endpoint-file <FILE>` is required; the sidecar writes its local
  OTLP address there, and the agent's OTEL exporter should read it. Each agent
  gets its own sidecar, so telemetry is always filed under the right agent.
  (#198)

### Bug Fixes

#### Files that are open when they are deleted or renamed

- **A file deleted while open could no longer be read.** After `unlink`, the
  next read through a descriptor that was still open failed with `EIO`. The
  file now stays readable until its last descriptor closes. (#200)
- **Renaming a file over one that was open broke the reader.** A descriptor
  open on the file that was replaced failed, or returned the new file's
  contents. It now keeps reading the file it opened. (#200)
- **Renaming a file that was open broke the reader.** A descriptor open on the
  file failed with `EIO` after the rename. It now keeps reading. (#205)
- **A file deleted while open could reappear in listings**, and its object
  could be left in the bucket after the last close. The name now stays gone and
  the object is deleted when the last descriptor closes. (#198)

To keep these files readable, the mount moves them aside to a hidden
`.aimem-lostfound/` prefix, under the mount's own prefix, until the last
descriptor closes. The mount hides that prefix, but other S3 clients such as
`mc ls` will see it. A starting mount deletes entries there that are more than a
day old, which cleans up after a mount that exited with files still open.
(#200, #204)

#### Rename

- **An empty file renamed right after it was created could be lost.** Creating
  an empty file, closing it, and renaming it into place (the pattern `git` uses
  for lock files) left no object in the bucket about a third of the time. The
  rename now waits for the file to be written first. (#201)

#### Kubernetes CSI driver

- **The CSI node DaemonSet no longer mounts `/dev/fuse` into the driver
  container.** The driver never used it; the mount runs on the host. Existing
  deployments keep working unchanged; re-applying the DaemonSet removes a
  device mount the driver did not need. (#197)

### Platform / Compatibility

- Linux amd64 and arm64, glibc 2.34 or later.
- Mounting needs `/dev/fuse`. FUSE passthrough also needs `CAP_SYS_ADMIN`;
  without it, a mount serves ordinary FUSE reads.

---

## Security & Compliance

Software bills of materials (SBOMs) for this release, generated from the
`Cargo.lock` files at the release tag:

| Component          | SPDX                                                                                                                            | CycloneDX                                                                                                                     |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `aimem`            | [aimem-RELEASE.2026-09-22T17-32-56Z.spdx.json](https://dl.min.io/aistor/aimem/release/notes/aimem-RELEASE.2026-09-22T17-32-56Z.spdx.json)         | [aimem-RELEASE.2026-09-22T17-32-56Z.cdx.json](https://dl.min.io/aistor/aimem/release/notes/aimem-RELEASE.2026-09-22T17-32-56Z.cdx.json)         |
| `aimem-bio`        | [aimem-bio-RELEASE.2026-09-22T17-32-56Z.spdx.json](https://dl.min.io/aistor/aimem/release/notes/aimem-bio-RELEASE.2026-09-22T17-32-56Z.spdx.json) | [aimem-bio-RELEASE.2026-09-22T17-32-56Z.cdx.json](https://dl.min.io/aistor/aimem/release/notes/aimem-bio-RELEASE.2026-09-22T17-32-56Z.cdx.json) |
| `aimem-csi-driver` | [aimem-csi-RELEASE.2026-09-22T17-32-56Z.spdx.json](https://dl.min.io/aistor/aimem/release/notes/aimem-csi-RELEASE.2026-09-22T17-32-56Z.spdx.json) | [aimem-csi-RELEASE.2026-09-22T17-32-56Z.cdx.json](https://dl.min.io/aistor/aimem/release/notes/aimem-csi-RELEASE.2026-09-22T17-32-56Z.cdx.json) |

The `aimem` dependency list is also published as plain text:
[crate list](https://dl.min.io/aistor/aimem/release/notes/aimem-RELEASE.2026-09-22T17-32-56Z.crates.txt)
and
[dependency tree](https://dl.min.io/aistor/aimem/release/notes/aimem-RELEASE.2026-09-22T17-32-56Z.cargo-tree.txt).

---

## Upgrade Instructions

- **Check the mount's credentials.** A mount now moves open files that are
  deleted or renamed to `.aimem-lostfound/` in the bucket, and deletes old
  entries there when it starts. If the mount's credentials or bucket policy do
  not allow writing and deleting under that prefix, the mount copies the file to
  `--local` instead, which is slower for large files. If `--local` has no room
  for the copy, the delete or rename fails.
- **Tools that list the bucket directly** will see `.aimem-lostfound/`.
  Exclude it from backups or reports if needed; it is safe to leave alone.
- **To record sessions**, add `--session-file` to the mount and have the agent's
  launcher write the session id into that file. Existing mounts are unchanged
  until you do.
- **Kubernetes:** set the CSI node driver image to
  `quay.io/minio/aistor/aimem-csi-driver:RELEASE.2026-09-22T17-32-56Z` and, if
  you like, re-apply the node DaemonSet from the
  [Kubernetes guide](https://docs.min.io/aimem/integrations/kubernetes/) to drop
  the unused `/dev/fuse` mount.

## Documentation

- Hosted docs: <https://docs.min.io/aimem/>

## Support

- Security disclosures: security@min.io
- Licensed customers and contributors: contact MinIO support.
