Apple container (macOS)
Give an agent its memory on a Mac — mount a MinIO AIStor Memory Bucket (a cortex) inside an Apple container Linux VM, presented at /workspace.
Status — experimental
Experimental on Mac hardware: the path depends on recent, fast-moving Apple
software. Requires macOS 26 (Tahoe) on Apple Silicon; FUSE runs inside the
container's Linux VM. The FUSE mount and SMB re-export were validated on
container 1.0.0 (guest kernel 6.18.15) for both Mode A (workspace inside the
container, via run.sh) and Mode B (host SMB mount, via usage.sh). aimem
now mounts only a cortex (Memory Bucket) on a paid-tier AIStor and rejects
the default/AWS credential chain (see Prerequisites); re-run
run.sh / usage.sh against a cortex with AIMEM_ACCESS_KEY /
AIMEM_SECRET_KEY set to confirm in your environment. The examples build
release binaries from the public CDN by default and can also use staged
Linux/arm64 binaries from examples/apple-container/bin/.
AIStor Memory is the memory your agent keeps — one mount of a MinIO AIStor Memory Bucket (a cortex) that the agent both works in and remembers through: a durable workspace, its long-term memory files, and the secrets it needs to act, all persisted to your own AIStor. This page brings that memory to a Mac.
Apple container runs each Linux
container in its own lightweight VM with a real Linux kernel, so the cortex
mounts inside the VM with no macFUSE or kernel extension on the Mac. The
agent's files survive sandbox teardown because they live in the cortex, not in
the VM — the next run re-mounts the same state.
Prerequisites
-
macOS 26 (Tahoe), Apple Silicon (M1+)
-
Apple
containerinstalled -
A reachable AIStor endpoint on a paid (Enterprise) tier — the Memory API that aimem verifies at mount is an Enterprise-only capability; a free-tier server refuses it.
-
The bucket must be a cortex (Memory Bucket) — aimem mounts only cortexes. Create one once from a host that has the
aimembinary and admin credentials:export AIMEM_ACCESS_KEY=ADMIN_KEY AIMEM_SECRET_KEY=ADMIN_SECRET aimem cortex create my-project --endpoint-url https://aistor.example.com:9000There is no native macOS
aimembinary (Linux/arm64 only), so run the cortex command from any Linux host that has theaimembinary and admin credentials (the base image's entrypoint is the mount, not a generalaimemshell). -
Signing credentials via
AIMEM_ACCESS_KEY/AIMEM_SECRET_KEY(plus optionalAIMEM_SESSION_TOKEN). The mount gate verifies the cortex over the Memory API with these; the default/AWS credential chain is rejected.
Quick start — agent inside the container
Run this from the AIStor Memory repository:
AIMEM_BUCKET=my-project \
AIMEM_ENDPOINT_URL=https://aistor.example.com:9000 \
AIMEM_ACCESS_KEY=... AIMEM_SECRET_KEY=... \
bash examples/apple-container/run.shThe script starts Apple container, builds the arm64 image, creates a
persistent staging volume, starts/replaces the aimem-ws container, waits for
the AIStor Memory mount, and opens a shell in /workspace.
Pass a command after -- to run it directly in the mounted workspace:
AIMEM_BUCKET=my-project \
AIMEM_ENDPOINT_URL=https://aistor.example.com:9000 \
AIMEM_ACCESS_KEY=... AIMEM_SECRET_KEY=... \
bash examples/apple-container/run.sh -- bash -lc 'pwd; touch agent-write.txt'Re-enter the workspace later:
container exec -ti aimem-ws bash -lc 'cd /workspace && exec bash'Stop it:
container stop aimem-ws
container rm aimem-wsAlso visible on the Mac host
Use the full image when Finder or host-side tools need the same workspace over SMB:
AIMEM_BUCKET=my-project \
AIMEM_ENDPOINT_URL=https://aistor.example.com:9000 \
AIMEM_ACCESS_KEY=... AIMEM_SECRET_KEY=... \
bash examples/apple-container/usage.shusage.sh builds aimem-mac-full, starts AIStor Memory and Samba, mounts the share at
$HOME/aimem-workspace, runs a temporary write/read smoke, and leaves the mount
and container running. It auto-generates the SMB password unless
AIMEM_SMB_PASSWORD is set.
Unmount and stop it:
umount "$HOME/aimem-workspace"
container stop aimem-ws
container rm aimem-wsOptions
AIMEM_VERSION=RELEASE.<date>pins a release; default islatest.AIMEM_REGION,AIMEM_PREFIX,AIMEM_AGENT, andAIMEM_SESSION_TOKENpass through when set.AIMEM_CONTAINER_NAME,AIMEM_IMAGE, andAIMEM_STAGING_VOLUMEoverride the default container/image/volume names.AIMEM_MNT,AIMEM_SMB_USER, andAIMEM_SMB_PASSWORDcustomize Mode B.- For offline or unreleased builds, drop Linux/arm64
aimemandaimem-fusermountintoexamples/apple-container/bin/; the Containerfiles use those before trying the CDN.
FUSE and SMB notes
/dev/fuse is present in the guest VM. aimem runs as root and mounts via the
direct mount(2) path, so the container needs --cap-add SYS_ADMIN; the
scripts add it. No --device or --privileged flag is required. The image also
ships the setuid aimem-fusermount helper for future non-root variants. Use a
recent aimem build so it matches the sandbox kernel — the guest kernel is 6.x
(observed 6.18.15 on container 1.0.0), which offers FUSE ABI ≥ 7.40, and
aimem's FUSE ABI negotiates cleanly against it.
Mode B re-exports /workspace over SMB. AIStor Memory mounts /workspace as root, so
the Samba share uses force user = root; SMB authentication still uses the
configured SMB account. SQLite and other heavy byte-range-locking workloads are
unreliable over SMB; use the container workspace for those.
If the SMB mount is unreachable, the default container subnet may collide with
your router. Set another with container system property set network.subnet.
macOS may also prompt once to allow Local Network access.
Optional checks
bash examples/apple-container/tests.shFor a live Mode A smoke with an independent S3 object check, configure mc and
run:
AIMEM_IMAGE=aimem-mac-base AIMEM_BUCKET=testbucket \
AIMEM_ENDPOINT_URL=https://aistor.example.com:9000 \
AIMEM_ACCESS_KEY=... AIMEM_SECRET_KEY=... MC_ALIAS=myaistor \
bash examples/apple-container/phase0-smoke.shReference
- Apple
container— the runtime. - Released binaries:
https://dl.min.io/aistor/aimem/release/<version>/.
Vercel Sandbox
Give an agent running in a Vercel Sandbox durable memory — mount an AIStor Memory Bucket (cortex) at /workspace so its work and knowledge outlive the disposable microVM.
OpenShift
Give a Red Hat OpenShift agent pod durable memory — /workspace mounted as a MinIO AIStor Memory Bucket (cortex).