
Security News
Re-Enabled GitHub Actions Expose Thousands of Repositories to Mini Shai-Hulud
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.
usrcp-adapter-kit
Advanced tools
Shared encrypted-at-rest config store and helpers for USRCP capture adapters
Shared building blocks for USRCP capture adapters.
Today this is the encrypted-at-rest config store that every USRCP capture adapter (Linear, GitHub, Gmail, Google Calendar, Slack, Telegram, Discord, iMessage) builds on. It is the single deep-importer of usrcp-core's encryption primitives — adapters depend on this kit rather than reaching into usrcp-core internals. This kit also provides the shared localhost Google OAuth flow at usrcp-adapter-kit/google-oauth (used by the gmail + google-calendar adapters).
This is internal infrastructure for the USRCP adapter ecosystem; you generally install it transitively by installing an adapter, not directly.
createAdapterConfig() takes a declarative field spec and returns a complete config store: AES-GCM secret encryption at rest (mode 0600), atomic writes, a validate-or-exit gate, legacy-plaintext auto-migration, master-key rotation re-encryption, and debounced cursor persistence.
import { createAdapterConfig } from "usrcp-adapter-kit";
interface LinearConfig {
linear_api_key: string;
allowlisted_team_ids: string[];
domain: string;
poll_interval_s: number;
last_synced_at?: string;
}
const store = createAdapterConfig<LinearConfig>({
adapterName: "linear",
filename: "linear-config.json",
fields: [
{ name: "linear_api_key", kind: "secret" },
{ name: "allowlisted_team_ids", kind: "requiredNonEmptyArray" },
{ name: "domain", kind: "required" },
{ name: "poll_interval_s", kind: "requiredNumber" },
{ name: "last_synced_at", kind: "optional" },
],
cursorFields: ["last_synced_at"],
});
// store.writeConfig / loadConfig / preflightConfig /
// reencryptConfigUnderNewKey / saveCursors / flushCursors / …
| Kind | Meaning |
|---|---|
secret | Required, encrypted at rest under the USRCP global key |
required | Required (truthy) |
requiredNumber | Required, typeof === "number" |
requiredNonEmptyArray | Required, non-empty array |
optional | Not validated (cursors, optional allowlists); may declare a default |
Apache-2.0
FAQs
Shared encrypted-at-rest config store and helpers for USRCP capture adapters
The npm package usrcp-adapter-kit receives a total of 7 weekly downloads. As such, usrcp-adapter-kit popularity was classified as not popular.
We found that usrcp-adapter-kit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.

Research
/Security News
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.