engRAM 1.13.0: one-click Mac install
Install on a Mac - one click
⬇︎ engRAM-1.13.0.pkg · 101 MB · macOS 13+
Open it. The installer asks what you want:
| engRAM | The app, your encrypted memory vault, and the engram command line tool. |
| Menu bar utility (optional) | Puts engRAM in the menu bar and starts it when you log in. Click the icon for your settings and your latest memories. Turn it off any time in System Settings → General → Login Items. |
Nothing to install first - the interpreter, the embedding model, and every dependency are inside the app.
First open: this build is not signed with an Apple Developer ID, so macOS will object. Right-click the installer → Open, then confirm. If it still refuses:
xattr -dr com.apple.quarantine /Applications/engRAM.app
All downloads
| Download | Size | For |
|---|---|---|
| engRAM-1.13.0.pkg | 101 MB | macOS, one click, with the optional menu bar utility |
| engRAM-1.13.0.dmg | 122 MB | macOS, drag to Applications yourself |
| engram_memory_vault-1.13.0-py3-none-any.whl | 33 MB | pip / offline installs, any OS |
| engram_memory_vault-1.13.0.tar.gz | 33 MB | source distribution, packagers, air-gapped builds |
Or from PyPI - the CLI and MCP server, any platform:
pip install engram-memory-vault && engram init && engram integrate claudeWhat the menu bar item shows
Click the icon and a popover gives you, at a glance:
- State - whether the vault is open, how many memories it holds, and how many you actually stored as opposed to the built-in reference facts.
- Three settings - the capture hook (saves memories Claude Code writes, automatically), whether starter facts join your searches, and auto-lock (15 / 30 / 60 min / Never).
- Your last five memories - text, time, and tags, newest first.
No dock icon, no window to manage. It holds no vault open, so an idle menu bar app costs you nothing.
Can't find the icon? On a crowded menu bar - a notched MacBook with a lot of status apps - new items land immediately right of the notch rather than over on the right with everything else. ⌘-drag it wherever you want; engRAM remembers the spot. ENGRAM_MENUBAR_DEBUG=1 makes the app report where its item actually landed.
Why this needed to be a real app
The menu bar worked when launched from a terminal and was invisible any other way.
A status bar item belongs to the process that created it, and macOS decides what that process is from where its executable lives. A launcher that exec'd a Python living outside the bundle produced NSBundle.mainBundle() equal to the interpreter's directory - no identifier, no name, no icon. An anonymous process like that sorts last in the menu bar and shows up in System Settings as a nameless "legacy agent".
So engRAM.app embeds its own interpreter and the app is what runs. Login registration goes through SMAppService, so System Settings → General → Login Items lists engRAM by name, with its icon and description. From the command line: engram menubar --login on|off|status.
Building it yourself
See RELEASING.md. tools/build_macos_app.py produces the bundle, the .dmg, and the .pkg; tools/make_icon.py draws the icon - a sealed ring around three linked memories, geometric enough to stay legible at the 16 pixels the login-items list allows.
The build must embed a non-framework Python. A framework build is a stub that redirects to Python.framework's own Python.app, which reintroduces the identity problem as org.python.python; the script detects that and refuses.
Two bugs came out of testing the built artifact rather than the source: macOS filesystems are case-insensitive, so the app looking for engram beside its interpreter found its own engRAM launcher and shelled out to itself instead of the CLI; and PyObjC ships a test suite plus 142 .dSYM bundles - 71 MB no shipped app needs.
158 tests green on Linux, Windows, and macOS.