MemTensor npm and PyPI Packages Compromised in Credential-Stealing Supply Chain Attack A threat actor published four malicious releases of MemTensor's MemOS packages on September 23, 2026, compromising npm package @memtensor/memos-cloud-openclaw-plugin (versions 0.1.21, 0.1.23 and 0.1.25) and PyPI package MemoryOS (version 2.0.34), according to Socket's static analysis of the published artifacts. Each release bundles a cross-platform Go binary named sckit that searches developer home directories for npm, PyPI, GitHub, GitLab, AWS, Vault and SSH credentials and reports to command-and-control servers under skyleen[.]fr; the malicious code also appeared in GitHub commits e0c1ca3 and b52958f, which alter release tooling to target the project's registry publish token. At the time of writing 0.1.25 and 2.0.34 are the latest versions on their registries, so a default install pulls a compromised build; 0.1.20 and 2.0.33 are the last known-good releases. MemTensor npm and PyPI Packages Compromised in Credential-Stealing Supply Chain Attack The compromise affects MemTensor's MemOS, an open source memory framework for large language models LLMs and AI agents. Both npm package @memtensor/memos-cloud-openclaw-plugin and the PyPI package MemoryOS are compromised. They drop cross-platform Go binaries that exfiltrate developer secrets. The compromise affects MemTensor's MemOS, an open source memory framework for large language models LLMs and AI agents. Its main GitHub repository has about 11,500 stars and 1,100 forks. Four malicious releases, three of the npm package @memtensor/memos-cloud-openclaw-plugin and one of the PyPI package MemoryOS, each currently the latest version on its registry, drop cross-platform Go binaries that search developer home directories for secrets and report to servers under skyleen . fr. On September 23, 2026, a threat actor published malicious releases of two MemTensor packages on two registries: npm:@memtensor/memos-cloud-openclaw-plugin versions 0.1.21, 0.1.23 and 0.1.25. This is MemTensor's OpenClaw lifecycle plugin, which adds MemOS Cloud memory recall and storage to OpenClaw agents. PyPI:MemoryOS version 2.0.34, the Python package for MemTensor's MemOS memory framework. At the time of writing, 0.1.25 is tagged latest on npm and 2.0.34 is the latest release on PyPI. A default install from either registry therefore pulls a compromised build. Every malicious release bundles a Go binary named sckit, built for Linux, macOS and Windows on both x64 and arm64, and starts it in the background: The npm plugin starts it when the OpenClaw gateway starts, and again on every memory recall with the user's prompt text. The PyPI package starts it as soon as the memos module is imported. Strings and the embedded configuration show the binary searches $HOME for credentials and reports to command and control C2 servers under skyleen . fr. Targets include npm, PyPI, GitHub, GitLab, AWS, Vault and SSH secrets. We are analyzing the payload and will update this post with full details. The malicious code first appeared in commits to MemTensor's GitHub repositories, not only in the registry artifacts. Plugin repository: commit e0c1ca3, authored as Memtensor-AI. MemOS repository: commit b52958f, authored as MemTensor CI Review. Both commits add the sckit binaries and the code that launches them. Both also alter the project's release tooling to target its registry publish token. At the time of writing, no branch or tag in either repository references these commits. The npm releases were published from the same account as earlier legitimate releases leason1974 , but without a gitHead. That means they were not published from the project's CI workflow. Socket could not confirm how the attacker gained publishing access to either registry. A detailed analysis of the GitHub compromise will follow separately. All three ship the same six sckit binaries, byte for byte. 0.1.22 and 0.1.24, published between the malicious releases, differ from 0.1.20 only in their version strings. 0.1.20 is the last known-good release. MemoryOS==2.0.34 wheel memoryos-2.0.34-py3-none-any.whl and sdist memoryos-2.0.34.tar.gz; latest at the time of writing The 2.0.34 wheel is 19,201,772 bytes, compared with 951,210 bytes for 2.0.33. The growth comes from six bundled sckit binaries. 2.0.33 is the last release before the compromise, and its size is in line with earlier releases. Both packages use the same design: a small language-specific launcher that runs a bundled native sckit binary in the background with the host's full environment. Everything below comes from static analysis of the published artifacts; Socket has not executed the samples. The malicious versions add lib/sckit.js and import it from index.js. The module picks the binary for the host platform from .sckit/