PkgRadar

Package evidence

@portel/[email protected]

Remote Payload: matched "raw.githubusercontent.com"

Trust signals

Why this verdict

PkgRadar discounts a release’s score when public reputation argues against novel malware. The verdict above already reflects these — the panel just explains what was applied.

Weekly downloads
905
Versions published
61Established · −30% score
First published
Nov 2025
Publisher
luracast

Effective trust discount applied: 30% (max across signals — discounts don’t stack). New install-lifecycle deltas vs the previous release would clear the discount.

Recommended action

Review before promoting

Mixed signals: the package has indicators worth reading before allowing the update in automated dependency flows.

Block this release in CIcurl · GitHub Actions

Fail the build when this package version is added or upgraded. Replace $PKGRADAR_TOKEN with a Pro / Team API key from your dashboard.

curl -fsS https://pkgradar.com/gate/npm \
  -H "Authorization: Bearer $PKGRADAR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"specs":["@portel/[email protected]"],"fail_on":"review"}'

GitHub Actions step:

- name: PkgRadar gate
  run: |
    curl -fsS https://pkgradar.com/gate/npm \
      -H "Authorization: Bearer ${{ secrets.PKGRADAR_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d '{"specs":["@portel/[email protected]"],"fail_on":"review"}'
Publisherluracast
Artifact bytes8,025,143
Previous version1.33.2
Published2026-05-24T01:19:55.323Z
SHA-256040d72e2237bbba4371b3648280ecd05784417eab7a02fcf3c35f5e925f51f45

Why flagged

What the scanner saw

Remote Payload: matched "raw.githubusercontent.com"

Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.

Availability ledger

available

review
Last checked
reviewRisk
72Score
1.33.3Version
Status history (2 events)
  1. availableavailable · risk review · score 72 · status available -> available, risk high -> review, score 194 -> 72
  2. newavailable · risk high · score 194 · status changed

Related candidates

Linked campaigns and clusters

Publisher / release actor burststale

luracast

2 members · evidence strength 64
Repeated static TTPstale

Install Lifecycle Suppresses Failure — prepare="git config core.hookspath .githooks || true"

4 members · evidence strength 87
Repeated static TTPstale

Install Lifecycle Suppresses Failure — prepare="git config core.hooksPath .githooks || true"

2 members · evidence strength 70

Evidence

Static findings

20 static · 0 from release diff · showing high-signal first.

SeverityKindPathDetailPoints
mediumRemote Payloadpackage/dist/cli/commands/changelog.jsmatched "raw.githubusercontent.com"12
mediumRemote Payloadpackage/dist/cli/commands/package-app.jsmatched "curl "12
mediumRemote Payloadpackage/dist/loader.jsmatched "raw.githubusercontent.com"12
mediumLarge Javascript Payloadpackage/dist/beam-ts-worker.js9969362 bytes10
mediumLarge Javascript Payloadpackage/dist/beam.bundle.js3910286 bytes10
Show all 20 findings (low-signal and informational)
SeverityKindPathDetailPoints
mediumRemote Payloadpackage/dist/cli/commands/changelog.jsmatched "raw.githubusercontent.com"12
mediumRemote Payloadpackage/dist/cli/commands/package-app.jsmatched "curl "12
mediumRemote Payloadpackage/dist/loader.jsmatched "raw.githubusercontent.com"12
mediumLarge Javascript Payloadpackage/dist/beam-ts-worker.js9969362 bytes10
mediumLarge Javascript Payloadpackage/dist/beam.bundle.js3910286 bytes10
lowCredential file accesspackage/dist/cli/commands/package.jsmatched "GITHUB_TOKEN"5
lowObfuscationpackage/dist/auth/mcp-jwt.jsmatched "Buffer.from(parts[2], 'base64"3
lowObfuscationpackage/dist/auto-ui/beam.jsmatched "\\u26a1"3
lowObfuscationpackage/dist/auto-ui/beam/routes/api-browse.jsmatched "Buffer.from(contentBlob, 'base64"3
lowObfuscationpackage/dist/auto-ui/bridge/renderers.jsmatched "\\u2014"3
lowObfuscationpackage/dist/auto-ui/streamable-http-transport.jsmatched "Buffer.from(cursor, 'base64"3
lowObfuscationpackage/dist/beam-form.bundle.jsmatched "\\u2605"3
lowObfuscationpackage/dist/cli/commands/build.jsmatched "fromCharCode"3
lowObfuscationpackage/dist/daemon/constructor-env-replay.jsmatched "Buffer.from(raw, 'base64"3
lowObfuscationpackage/dist/loader.jsmatched "\\x1b"3
lowObfuscationpackage/dist/photon-cli-runner.jsmatched "\\u001b"3
lowObfuscationpackage/dist/serv/auth/jwt.jsmatched "Buffer.from(signatureB64, 'base64"3
lowObfuscationpackage/dist/serv/vault/token-vault.jsmatched "Buffer.from(ciphertext, 'base64"3
lowObfuscationpackage/dist/shared/asset-encoding.jsmatched "Buffer.from(value.slice(BASE64"3
lowObfuscationpackage/dist/template-manager.jsmatched "\\u2014"3

Manifest

Package metadata

Scripts89
  • buildeslint src/ --quiet && tsc && cp -r src/photons dist/ && chmod +x dist/cli.js && node scripts/build-beam.mjs
  • build:beamnode scripts/build-beam.mjs
  • devtsc --watch
  • dev:beambun run build && bun run build:beam && (trap 'kill 0' EXIT; tsc --watch --preserveWatchOutput & node scripts/build-beam.mjs --watch & sleep 1 && tsx watch src/cli.ts beam)
  • formatprettier --write "src/**/*.ts"
  • format:checkprettier --check "src/**/*.ts"
  • knipknip
  • linteslint src/
  • lint:fixeslint src/ --fix
  • preparegit config core.hooksPath .githooks || true
  • prepublishOnlybun run verify:publish-version && node -e "const p=require('./package.json'); if(JSON.stringify(p.dependencies).includes('file:')) { console.error('ERROR: file: dependency found.'); process.exit(1); }" && node -e "const fs=require('fs'),path=require('path'); const p=require('./package.json'); for(const d of Object.keys(p.dependencies||{})){const t=path.join('node_modules',d); if(fs.lstatSync(t).isSymbolicLink()){console.error('ERROR: '+d+' is linked. Run: bun remove '+d+' && bun add '+d); process.exit(1);}}" && bun run build && bun run build:beam
  • releaserelease-it
  • release:dryrelease-it --dry-run
  • release:majorrelease-it major
  • release:minorrelease-it minor
  • release:patchrelease-it patch
  • testbash scripts/run-tests.sh
  • test:a2uibun run build && tsx tests/a2ui-mapper.test.ts && tsx tests/a2ui-e2e.test.ts && tsx tests/a2ui-renderer-script.test.ts
  • test:allbun run build && bun run test:security && bun run test:schema && bun run test:marketplace && bun run test:loader && bun run test:server && bun run test:integration && bun run test:byte-compat && bun run test:format-registry && bun run test:content-negotiation && bun run test:ui-resources && bun run test:client-adaptive && bun run test:zero-config && bun run test:mcp-config && bun run test:cli && bun run test:intent && bun run test:logger && bun run test:error-handler && bun run test:validation && bun run test:daemon-pubsub && bun run test:daemon-buffer && bun run test:instance-drift && bun run test:daemon-watcher && bun run test:ui-rendering && bun run test:photon-instance-manager && bun run test:viewport-aware-proxy && bun run test:viewport-manager && bun run test:pagination-integration && bun run test:pagination-performance && tsx tests/pagination-phase5.test.ts && tsx tests/pagination-phase5c.test.ts && tsx tests/pagination-phase5d.test.ts && tsx tests/phase6a-service-worker.test.ts && tsx tests/phase6b-offline-state.test.ts && tsx tests/phase6c-offline-sync.test.ts && tsx tests/phase6d-integration.test.ts && tsx tests/promises.test.ts && bun run test:cf-bindings && bun run test:cf-runtime && bun run test:cf-overrides && bun run test:cf-deploy && bun run test:cf-mcp-bearer && bun run test:readme
  • test:beambun run build && tsx tests/beam/rendering.test.ts
  • test:beam:regressionsbun run build && tsx tests/beam/beam-integration-regressions.test.ts
  • test:bridgebun run test:bridge:generation && bun run test:bridge:protocol && bun run test:bridge:beam
  • test:bridge:beamtsx tests/bridge/beam-integration.test.ts
  • test:bridge:generationtsx tests/bridge/bridge-generation.test.ts
  • test:bridge:protocoltsx tests/bridge/protocol.test.ts
  • test:byte-compatRUN_E2E=1 vitest run tests/v128-byte-compat.test.ts
  • test:cf-bindingsvitest run tests/cf-bindings-parser.test.ts
  • test:cf-deployvitest run tests/cf-deploy-toml.test.ts
  • test:cf-mcp-bearervitest run tests/cf-mcp-bearer.test.ts
  • test:cf-overridesvitest run tests/cf-overrides.test.ts
  • …and 59 more.
Dependencies17
  • @chenglou/pretext^0.0.7
  • @modelcontextprotocol/ext-apps^1.0.1
  • @modelcontextprotocol/sdk^1.29.0
  • @portel/cli^1.1.0
  • @portel/photon-core^2.27.0
  • boxen^8.0.1
  • chalk^5.4.1
  • chart.js^4.5.1
  • chokidar^4.0.3
  • cli-highlight^2.1.11
  • cli-table3^0.6.5
  • commander^12.1.0
  • esbuild^0.28.0
  • fast-json-patch^3.1.1
  • miniflare^4.20260507.1
  • ora^9.3.0
  • qrcode^1.5.4
Optional dependencies1
  • better-sqlite3^12.9.0