registry  /  @geravant/sinain  /  1.36.0

@geravant/sinain@1.36.0

⚠ Under review

Context OS — ambient intelligence for builders. Captures screen + audio, distills into a private knowledge graph, accessible from MCP, web UI, and HUD overlay.

Static Scan Results

scanned 27m ago · by rust-scanner

Static analysis flagged 17 finding(s) at 86.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
High-risk behavior combination matched malicious policy.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessCryptoDynamicRequireEnvironmentVarsFilesystemNetworkShellWebSocket
Supply chain
HighEntropyStringsUrlStrings
ManifestNo manifest risk signals triggered.
scanned 93 file(s), 1.23 MB of source, external domains: 0.0.0.0, 127.0.0.1, api.cerebras.ai, api.github.com, api.telegram.org, ar.sinain.com, auth.sinain.com, cdn.jsdelivr.net, docs.flutter.dev, github.com, huggingface.co, mcp.sinain.com, openrouter.ai, registry.npmjs.org, sinain.com, turn.sinain.com

Source & flagged code

9 flagged · loading source
package.jsonView file
scripts.postinstall = node cli.js install --if-openclaw
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scripts.postinstall = node cli.js install --if-openclaw
Medium
Ambiguous Install Lifecycle Script

Install-time lifecycle script is not statically allowlisted and needs review.

package.jsonView on unpkg
sinain-core/src/capture/voice-session.tsView file
1import { spawn, type ChildProcess } from "node:child_process"; L2: import { randomBytes } from "node:crypto";
High
Child Process

Package source references child process execution.

sinain-core/src/capture/voice-session.tsView on unpkg · L1
setup-embedding.jsView file
113// to guarantee the same module instance (and cache key) as the runtime. L114: const require = createRequire(path.join(CORE_DIR, "package.json")); L115: // Use dynamic import with the resolved path — createRequire gives us the path
Medium
Dynamic Require

Package source references dynamic require/import behavior.

setup-embedding.jsView on unpkg · L113
sinain-core/src/capture/window-ops.tsView file
26function maxWindowChars(): number { L27: const v = parseInt(process.env.SINAIN_BURST_MAX_CHARS || "", 10); L28: return Number.isFinite(v) && v > 0 ? v : DEFAULT_MAX_WINDOW_CHARS;
Low
Weak Crypto

Package source references weak cryptographic algorithms.

sinain-core/src/capture/window-ops.tsView on unpkg · L26
sinain-core/src/mcp-tunnel/controller.tsView file
122const entry = resolve(this.deps.packageRoot, "sinain-mcp-server", "index.ts"); L123: this.mcpHttp = spawn(tsxBin, [entry], { L124: env: { L125: ...process.env, L126: MCP_TRANSPORT: "http", L127: MCP_HTTP_PORT: String(MCP_HTTP_PORT), L128: SINAIN_CORE_URL: process.env.SINAIN_CORE_URL || `http://localhost:${this.deps.corePort}`, L129: SINAIN_WORKSPACE: this.deps.workspace,
High
Same File Env Network Execution

A single source file combines environment access, network access, and code or shell execution; review context before blocking.

sinain-core/src/mcp-tunnel/controller.tsView on unpkg · L122
sinain-knowledge/adapters/openclaw/adapter.tsView file
29const openclawJson = join(stateDir, "openclaw.json"); L30: const raw = JSON.parse(readFileSync(openclawJson, "utf-8")); L31: const token = raw?.channels?.telegram?.botToken ?? raw?.telegram?.botToken ?? null; ... L72: L73: private workspaceDir: string | null = null; L74: ... L128: } L129: let sessionsData: Record<string, Record<string, unknown>>; L130: try { ... L172: L173: const chatId = process.env.SINAIN_ALERT_CHAT_ID; L174: const token = readBotToken(stateDir);
Critical
Credential Exfiltration

Source appears to send environment or credential material to an external endpoint.

sinain-knowledge/adapters/openclaw/adapter.tsView on unpkg · L29
sense_client/sender.pyView file
path = sense_client/sender.py kind = build_helper sizeBytes = 419 magicHex = [redacted]
Medium
Ships Build Helper

Package ships non-JavaScript build or shell helper files.

sense_client/sender.pyView on unpkg
sense_client/tests/__init__.pyView file
path = sense_client/tests/__init__.py kind = payload_in_excluded_dir sizeBytes = 0
High
Payload In Excluded Dir

Package hides binary, compressed, or executable-looking payloads in test/fixture/hidden paths.

sense_client/tests/__init__.pyView on unpkg

Findings

1 Critical5 High6 Medium5 Low
CriticalCredential Exfiltrationsinain-knowledge/adapters/openclaw/adapter.ts
HighInstall Time Lifecycle Scriptspackage.json
HighChild Processsinain-core/src/capture/voice-session.ts
HighShell
HighSame File Env Network Executionsinain-core/src/mcp-tunnel/controller.ts
HighPayload In Excluded Dirsense_client/tests/__init__.py
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumDynamic Requiresetup-embedding.js
MediumNetwork
MediumEnvironment Vars
MediumShips Build Helpersense_client/sender.py
MediumStructural Risk Force Deep Review
LowScripts Present
LowWeak Cryptosinain-core/src/capture/window-ops.ts
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings