registry  /  merrymen  /  0.6.0

merrymen@0.6.0

Trading agents you never have to trust — self-hosted, keys stay on your machine, caps enforced by the account contract on-chain. For Robinhood Chain; Telegram control; write-your-own strategies.

Static Scan Results

scanned 2h ago · by rust-scanner

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

Static reason
One or more suspicious static signals were detected.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessDynamicRequireEnvironmentVarsFilesystemNetworkShell
Supply chain
HighEntropyStringsUrlStrings
ManifestNo manifest risk signals triggered.
scanned 71 file(s), 483 KB of source, external domains: api.openai.com, api.pimlico.io, api.telegram.org, blue-api.morpho.org, cdn.robinhood.com, console.anthropic.com, dashboard.pimlico.io, docs.rialto.xyz, explorer.testnet.chain.robinhood.com, faucet.testnet.chain.robinhood.com, merrymen.dev, nodejs.org, rialto-trade-api.rialto.xyz, robinhoodchain.blockscout.com, rpc.mainnet.chain.robinhood.com, rpc.testnet.chain.robinhood.com, t.me, www.w3.org

Source & flagged code

4 flagged · loading source
worker/src/strategies/custom.tsView file
135const note = opts?.onNote ?? ((l, m) => console.log(`[custom:${l}] ${m}`)); L136: const importer = opts?.importer ?? ((url) => import(url)); L137: const ctx = buildStrategyCtx();
Medium
Dynamic Require

Package source references dynamic require/import behavior.

worker/src/strategies/custom.tsView on unpkg · L135
cli/bin.mjsView file
20L21: import { spawn, spawnSync } from "node:child_process"; L22: import { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; ... L32: // Where the USER's data lives — settings, grant, ledger, strategies. L33: const HOME = process.env.MERRYMEN_HOME ?? path.join(os.homedir(), ".merrymen"); L34: const SETTINGS = path.join(HOME, "settings.json"); ... L41: L42: const RPC_MAINNET = "https://rpc.mainnet.chain.robinhood.com"; L43: const RPC_TESTNET = "https://rpc.testnet.chain.robinhood.com"; ... L56: try { L57: return JSON.parse(readFileSync(file, "utf8").replace(/^/, "")); L58: } catch {
High
Sandbox Evasion Gated Capability

Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.

cli/bin.mjsView on unpkg · L20
20L21: import { spawn, spawnSync } from "node:child_process"; L22: import { copyFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; ... L32: // Where the USER's data lives — settings, grant, ledger, strategies. L33: const HOME = process.env.MERRYMEN_HOME ?? path.join(os.homedir(), ".merrymen"); L34: const SETTINGS = path.join(HOME, "settings.json"); ... L41: L42: const RPC_MAINNET = "https://rpc.mainnet.chain.robinhood.com"; L43: const RPC_TESTNET = "https://rpc.testnet.chain.robinhood.com"; ... L56: try { L57: return JSON.parse(readFileSync(file, "utf8").replace(/^/, "")); L58: } catch {
Medium
Install Persistence

Source writes installer persistence such as shell profile or service configuration.

cli/bin.mjsView on unpkg · L20
web/.next/static/media/851c4691abdf3def-s.woff2View file
path = web/.[redacted]-s.woff2 kind = high_entropy_blob sizeBytes = 9364 magicHex = [redacted]
High
Ships High Entropy Blob

Package ships high-entropy non-source blobs.

web/.next/static/media/851c4691abdf3def-s.woff2View on unpkg

Findings

2 High5 Medium5 Low
HighSandbox Evasion Gated Capabilitycli/bin.mjs
HighShips High Entropy Blobweb/.next/static/media/851c4691abdf3def-s.woff2
MediumDynamic Requireworker/src/strategies/custom.ts
MediumNetwork
MediumEnvironment Vars
MediumInstall Persistencecli/bin.mjs
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings