Skip to content

Releases: mrtheroi/memry-cli

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 01:36
4130570

Added

  • Opt-in usage metrics for Claude Code. memry usage enable lets Claude Code send its
    OpenTelemetry metrics to the memry server you are logged in to, so the dashboard can chart token
    usage and cost. It is off by default, and memry setup never turns it on.
    • Before asking for a token, it explains where the metrics go and what memry can and cannot
      check. Claude Code decides what it sends, as documented in its monitoring guide, including
      identity attributes such as your email. The memry server keeps only the token and cost data
      points and discards everything else.
    • It requests a usage token that can only send usage metrics, then adds memry's variables to the
      env of Claude Code's settings.json, keeping every other setting. It sets every documented
      OTEL_METRICS_INCLUDE_* attribute gate to false. The settings file, which now holds that
      token, is made readable only by its owner.
    • It stops before requesting a token when other telemetry is configured anywhere memry can see:
      the shell environment, the user settings or Claude Code's managed settings files. This covers
      OTEL_*, the Claude Code telemetry and beta tracing variables, otelHeadersHelper, a managed
      policyHelper, and managed settings files that cannot be read. This is an allowlist, so
      variables added by later Claude Code versions also stop it. --force only replaces conflicting
      values of memry's own variables in the user settings. Per-session --settings, MDM, registry
      and server-managed policies are outside what memry can see.
    • It refuses a non-loopback http:// server unless --insecure is given.
  • memry usage status reports whether metrics go to memry, as far as memry can see, and lists
    anything missing or overridden. It never prints the token.
  • memry usage disable removes only the variables memry wrote and revokes this machine's usage
    token. memry uninstall and memry delete-account turn usage metrics off too.

Changed

  • The privacy policy (PRIVACY.md, PRIVACY.es.md) describes the
    opt-in usage metrics: what Claude Code sends, what the memry server keeps, and how to turn it off.
  • Every write to Claude Code's settings.json, including setup's SessionStart hook, now checks
    that the file did not change since memry read it. On a change it writes nothing (usage
    commands) or reads the file again and retries (the hook). Only another program writing at the
    same instant can still win.
  • memry commands that change the memry config (memry setup, memry usage, memry uninstall,
    memry delete-account) now take a private per-user lock, so they never overwrite each other. A
    lock is never taken over automatically. If a command crashed, the message names the lock file to
    delete.

Security

  • Usage tokens are revoked by exact id and only on the server that issued them, so other machines'
    tokens are never touched. If enabling fails partway, the new token is revoked and the previous
    setup keeps working. A failed revocation prints a warning; unused usage tokens stop working
    after 30 days.
  • Unknown state fails closed. If the memry config or its usage record cannot be read or is
    malformed, the usage commands, memry uninstall and memry delete-account stop without
    changing anything. Before, uninstall could delete such a config.
  • Requires memry-server 0.20.0 or later for the usage-token endpoints.

v1.1.3

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:28
7bbf33a

Security

  • memry setup refuses a plain http:// server URL unless its host is this machine (localhost,
    any 127.0.0.0/8 address or ::1). Before, --url http://<remote host> (or MEMRY_URL) sent
    the token given with --token or MEMRY_TOKEN, the email login code and, later, the saved token
    on every memry mcp request in clear text. Setup now prints "Refusing to send credentials over
    plain HTTP to . Use an https:// URL, or pass --insecure to allow it (for example on a
    trusted LAN)." and exits with code 1 before asking or sending anything. The host is compared as a
    whole, so localhost.evil.com and 127.0.0.1.nip.io are refused.
  • New memry setup --insecure flag to allow a non-loopback http:// server on a network you
    trust. https:// URLs are unchanged. A config saved earlier with an http:// remote URL keeps
    working: only setup enforces the rule.

v1.1.2

Choose a tag to compare

@github-actions github-actions released this 13 Oct 19:17
2493b08

Changed

  • When the server rejects the token (401: expired after inactivity, revoked or invalid),
    memry mcp answers "memry: your login expired or was revoked; run memry setup to log in
    again." and memry hook:session-start prints that line (still exit code 0) instead of nothing.
    The hook stays silent for every other failure.

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 15:35
e943260

Fixed

  • The release publishes the Memry.Memry package to WinGet. In 1.1.0 the WinGet step failed on
    its token template after the GitHub release was published, so 1.1.0 is not on WinGet;
    winget install Memry.Memry starts at 1.1.1.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 15:23
c2c708e

memry now runs on Windows (amd64 and arm64). On macOS and Linux nothing changes except the home
directory behavior listed below.

Added

  • Windows support: memry setup, uninstall, delete-account, mcp, mcp-headers and
    hook:session-start work on Windows, with the config file at
    %USERPROFILE%\.config\memry\config.json, readable only by your user. A file another process
    holds busy is retried briefly when memry renames it.
  • winget install Memry.Memry (and winget upgrade Memry.Memry) install and update memry on
    Windows. Releases also carry memry_<version>_windows_<arch>.zip archives for amd64 and arm64
    with the same signed checksums.txt and SBOMs; go install works too. The binary is not
    Authenticode-signed, so SmartScreen or an antivirus may warn about it.
  • The global --config <path> (or --config=<path>) option on setup, uninstall,
    delete-account, mcp, mcp-headers and hook:session-start selects the config file for that
    process. It wins over MEMRY_CONFIG, which wins over the default path.
  • Claude Code on Windows: setup registers memry as a stdio memry mcp server (no
    headersHelper) and installs the SessionStart hook as memry hook:session-start, so memry
    must be on the PATH. Both claude.exe and claude.cmd are supported.
  • On a legacy Windows console without color support, the agent question prints
    Agents: <list> (pass --agents to choose). and keeps the defaults.
  • memry uninstall and memry delete-account end with winget uninstall memry on a WinGet
    install, or the path of the memry.exe to delete, instead of the Homebrew hint on Windows.

Changed

  • The home directory is USERPROFILE, then HOME, then two levels above LOCALAPPDATA on
    Windows (HOME, then USERPROFILE on macOS and Linux). When none is set, memry fails with
    "Could not find your home directory; set USERPROFILE or HOME." and exit code 1. On macOS and
    Linux an unset HOME now fails this way instead of writing to /.config.
  • On Windows, MEMRY_EXECUTABLE may only contain letters, digits and : / \ . _ -, and a
    config path with ", $, a backtick, %, !, a line break or a typographic quote is
    refused for the hook, which is written with forward slashes.

Fixed

  • Setup and uninstall no longer fail when Claude Code reports a server that is not registered as
    No MCP server named "<name>" in user scope, as newer Claude Code versions do; it means the
    same as "No MCP server found".

v1.1.0-rc.2

v1.1.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Oct 14:21
334c51c

memry now runs on Windows (amd64 and arm64). On macOS and Linux nothing changes except the home
directory behavior listed below.

Added

  • Windows support: memry setup, uninstall, delete-account, mcp, mcp-headers and
    hook:session-start work on Windows, with the config file at
    %USERPROFILE%\.config\memry\config.json, readable only by your user. A file another process
    holds busy is retried briefly when memry renames it.
  • winget install Memry.Memry (and winget upgrade Memry.Memry) install and update memry on
    Windows. Releases also carry memry_<version>_windows_<arch>.zip archives for amd64 and arm64
    with the same signed checksums.txt and SBOMs; go install works too. The binary is not
    Authenticode-signed, so SmartScreen or an antivirus may warn about it.
  • The global --config <path> (or --config=<path>) option on setup, uninstall,
    delete-account, mcp, mcp-headers and hook:session-start selects the config file for that
    process. It wins over MEMRY_CONFIG, which wins over the default path.
  • Claude Code on Windows: setup registers memry as a stdio memry mcp server (no
    headersHelper) and installs the SessionStart hook as memry hook:session-start, so memry
    must be on the PATH. Both claude.exe and claude.cmd are supported.
  • On a legacy Windows console without color support, the agent question prints
    Agents: <list> (pass --agents to choose). and keeps the defaults.
  • memry uninstall and memry delete-account end with winget uninstall memry on a WinGet
    install, or the path of the memry.exe to delete, instead of the Homebrew hint on Windows.

Changed

  • The home directory is USERPROFILE, then HOME, then two levels above LOCALAPPDATA on
    Windows (HOME, then USERPROFILE on macOS and Linux). When none is set, memry fails with
    "Could not find your home directory; set USERPROFILE or HOME." and exit code 1. On macOS and
    Linux an unset HOME now fails this way instead of writing to /.config.
  • On Windows, MEMRY_EXECUTABLE may only contain letters, digits and : / \ . _ -, and a
    config path with ", $, a backtick, %, !, a line break or a typographic quote is
    refused for the hook, which is written with forward slashes.

Fixed

  • Setup and uninstall no longer fail when Claude Code reports a server that is not registered as
    No MCP server named "<name>" in user scope, as newer Claude Code versions do; it means the
    same as "No MCP server found".

v1.1.0-rc.1

v1.1.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Oct 04:34
26ffeed

memry now runs on Windows (amd64 and arm64). On macOS and Linux nothing changes except the home
directory behavior listed below.

Added

  • Windows support: memry setup, uninstall, delete-account, mcp, mcp-headers and
    hook:session-start work on Windows, with the config file at
    %USERPROFILE%\.config\memry\config.json, readable only by your user. A file another process
    holds busy is retried briefly when memry renames it.
  • winget install Memry.Memry (and winget upgrade Memry.Memry) install and update memry on
    Windows. Releases also carry memry_<version>_windows_<arch>.zip archives for amd64 and arm64
    with the same signed checksums.txt and SBOMs; go install works too. The binary is not
    Authenticode-signed, so SmartScreen or an antivirus may warn about it.
  • The global --config <path> (or --config=<path>) option on setup, uninstall,
    delete-account, mcp, mcp-headers and hook:session-start selects the config file for that
    process. It wins over MEMRY_CONFIG, which wins over the default path.
  • Claude Code on Windows: setup registers memry as a stdio memry mcp server (no
    headersHelper) and installs the SessionStart hook as memry hook:session-start, so memry
    must be on the PATH. Both claude.exe and claude.cmd are supported.
  • On a legacy Windows console without color support, the agent question prints
    Agents: <list> (pass --agents to choose). and keeps the defaults.
  • memry uninstall and memry delete-account end with winget uninstall memry on a WinGet
    install, or the path of the memry.exe to delete, instead of the Homebrew hint on Windows.

Changed

  • The home directory is USERPROFILE, then HOME, then two levels above LOCALAPPDATA on
    Windows (HOME, then USERPROFILE on macOS and Linux). When none is set, memry fails with
    "Could not find your home directory; set USERPROFILE or HOME." and exit code 1. On macOS and
    Linux an unset HOME now fails this way instead of writing to /.config.
  • On Windows, MEMRY_EXECUTABLE may only contain letters, digits and : / \ . _ -, and a
    config path with ", $, a backtick, %, !, a line break or a typographic quote is
    refused for the hook, which is written with forward slashes.

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 21:37
1f1bc29

The CLI is rewritten in Go as a drop-in replacement for 0.7.0: the same config file
(~/.config/memry/config.json or MEMRY_CONFIG), environment variables, commands, flags,
messages and exit codes, and the same files written into your agents. brew upgrade memry is all
it takes; your login and agents keep working.

Changed

  • memry is a single static binary for macOS and Linux (amd64 and arm64) with no PHP dependency.
    Homebrew installs it without PHP, and it can also be installed with
    go install github.com/mrtheroi/memry-cli/cmd/memry@latest or from the release archives, which
    come with checksums.txt (signed keyless with cosign) and an SBOM per archive.
  • memry mcp, the local MCP server agents launch, starts more than ten times faster: about 6 ms
    from process start to its first reply, against about 88 ms for 0.7.0 (on an Apple M2).
  • Responses are bounded: memry mcp reads a server reply of at most 16 MiB and answers a longer
    one with a -32603 "The memry server returned a response that is too large." error, the Claude
    Code SessionStart hook reads at most 1 MiB of context and prints nothing past it, and setup reads
    responses of at most 1 MiB.
  • Removing memry's MCP servers from Claude Code follows a stricter rule: a claude mcp remove
    that fails without saying "No MCP server found" now fails that step of memry uninstall,
    memry delete-account and memry setup (0.7.0 took every failure for "not registered"), so
    memry never reports a removal that did not happen. Without the claude CLI
    the removal is skipped with a warning instead of failing, since no Claude Code can run the
    server; the SessionStart hook is still removed.
  • memry setup revokes the token of an email login when it stops without saving it (the agent
    question is cancelled, or the config file cannot be read or written), so no valid token is left
    behind. 0.7.0 left it valid. A token given with --token is never revoked.
  • The SessionStart hook prints the memry context as it is: 0.7.0 rendered or stripped
    <info>-style tags and \< in memories. A hook input whose cwd is not a string prints
    nothing, and git gets 3 seconds (60 in 0.7.0) to find the repository root before the hook
    falls back to the cwd.
  • MEMRY_EXECUTABLE is used exactly as set: the Laravel env() keywords (null, true,
    (empty)) and quote stripping of 0.7.0 no longer apply to it.
  • memry setup saves each selected agent once, in display order; 0.7.0 saved duplicates.

Fixed

  • A failed removal of memry from an agent is no longer forgotten. memry setup keeps a deselected
    agent it could not be removed from in a new agents_to_remove config key and retries the
    removal on every later setup until it succeeds (selecting the agent again installs it instead).
    memry uninstall removes memry from the agents first; when one fails, it keeps the login and
    the agents still to clean up, with an empty agents selection, so running it again retries them,
    instead of revoking the token and deleting the config anyway. memry delete-account keeps only
    the agents still to clean up.
  • memry setup unwires Claude Code from a login saved without agents (setups of 0.4.0 and
    earlier, which only wired Claude Code) when it is not selected; 0.7.0 left it wired.
  • A config file that exists but cannot be read makes memry setup, memry uninstall and
    memry delete-account fail with the reason, without overwriting or removing anything, where
    0.7.0 stopped with an uncaught exception.
  • memry mcp keeps running where 0.7.0 stopped: with a saved URL it cannot request (-32603
    "Could not reach the memry server."), a truncated reply (-32603), a request id too large for
    a number (no error reply), or a config file that is valid JSON but not an object (not logged
    in, -32000).
  • Agent config files are never overwritten with a lone newline: a JSON file holding a number too
    large for a float (such as 1e400) is left untouched and reported as one memry cannot edit
    safely. An agent file that cannot be read or written fails that step with the system's error
    instead of an uncaught exception.

Removed

  • The PHP (PHAR) build and its PHP 8.3+ requirement.

v0.7.0

Choose a tag to compare

@mrtheroi mrtheroi released this 04 Oct 07:14
b3ad6b2
  • Scripted self-hosted login: MEMRY_TOKEN=<token> memry setup --url <your-server> --token logs in without the hidden prompt, also with --no-interaction, so the token never shows up in the process list or your shell history. Setup removes MEMRY_TOKEN from its environment right after reading it, so the agent CLIs it runs never see it. This is what the memry Community install script uses.
  • Fixed: requests that send your token or data (memry mcp, the SessionStart hook, login, token revocation and delete-account) no longer follow redirects; a redirect is treated as an error.

Upgrade with brew upgrade memry. See CHANGELOG.md.

v0.6.0

Choose a tag to compare

@mrtheroi mrtheroi released this 03 Oct 19:00
dd2a1a4
  • Self-hosted login: memry setup --url <your-server> --token logs in with a token created by the admin of a self-hosted memry server, instead of the email login. The token is asked with a hidden prompt (--token=<value> is for scripts and lands in your shell history), checked against the server before it is saved, and only ever sent to the --url you give.
  • Fixed: memry setup no longer ignores --url, --email or --agents given without a value, and rejects a --url that is not an http:// or https:// address.

Upgrade with brew upgrade memry. See CHANGELOG.md.