Grades are a hygiene check, not a security guarantee.

MCP, MCP server

NicheDB

Sources in, feeds out. An open platform for databases that only ever grow: game releases, package registries, government filings, and any other public data with a big seed and daily growth.

Compatibility: Not stated.

Grade D

Two or more Medium findings, or a High finding. Only try it in a sandbox.

Graded by PlugVetRubric v2

Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.

Rescanned at commit b1fe2d2f5b1f.

INSTALL_REMOTE_SCRIPT PERMISSION_SHELL_UNDECLARED OBFUSCATION_MINIFIED_PAYLOAD

Why this grade

  • INSTALL_REMOTE_SCRIPT High

    Fetches a script from the network and runs it (a pipe to a shell, or an install hook with a URL).

    apps/web/public/install.sh, line 4 # curl -fsSL https://nichedb.dev/install.sh | sh

  • PERMISSION_SHELL_UNDECLARED Medium

    Runs shell commands that the manifest or description does not mention.

    ops/traffic-review/evidence.py, line 46 j = subprocess.run(["journalctl", "-q", "--no-pager", "-o", "cat", "_COMM=sshd", "--since", "-30d"],

  • OBFUSCATION_MINIFIED_PAYLOAD Medium

    Contains a very long line with almost no spaces in a script or style file.

    docs/data/police-sources/channels.csv, line 1 id,name,state,population,population_year,geography,status,distance_from_link_km,kind,url,evidence_url,verification,access

Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.

If you think this grade is wrong, email [email protected] with the entry link and your evidence. We aim to acknowledge within two working days and decide within seven. If we confirm an error, we aim to correct it within 24 hours of confirming it. These are aims, not guarantees.

Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.

What was checked

Plain notes from the hygiene checks.

  • Permissions

    Concern

    requests shell access. No manifest field names shell or command execution.

    PERMISSION_SHELL_UNDECLARED

    ops/traffic-review/evidence.py, line 46

    j = subprocess.run(["journalctl", "-q", "--no-pager", "-o", "cat", "_COMM=sshd", "--since", "-30d"],

  • Install and update

    Serious

    install fetches a script from the network.

    INSTALL_REMOTE_SCRIPT

    apps/web/public/install.sh, line 4

    # curl -fsSL https://nichedb.dev/install.sh | sh

    apps/web/src/lib/llms.js, line 74

    `- CLI: curl -fsSL ${base}/install.sh | sh (or npm install -g @profullstack/nichedb); nichedb --api ${base}`,

    apps/web/src/routes/install-sh.test.js, line 10

    * `curl -fsSL https://nichedb.dev/install.sh | sh` is the CLI's one-line

    Show more

    apps/web/src/routes/static.js, line 15

    // The CLI installer: curl -fsSL https://nichedb.dev/install.sh | sh

    apps/web/src/views/admin.jsx, line 746

    <pre class="data">{`curl -fsSL ${config.siteUrl}/install.sh | sh # or: npm install -g @profullstack/nichedb

    packages/enrichers/src/developer-seed.js, line 56

    curl: 'curl -s https://raw.githubusercontent.com/scaleway/scaleway-cli/main/scripts/get.sh | sh',

    packages/enrichers/src/developer-seed.js, line 72

    curl: 'curl -fsSL https://raw.githubusercontent.com/ovh/ovhcloud-cli/main/install.sh | sh',

    packages/enrichers/src/developer-seed.js, line 120

    curl: 'curl -sL https://civo.com/get | sh',

    packages/enrichers/src/developer-seed.js, line 147

    install: { brew: 'brew install flyctl', curl: 'curl -L https://fly.io/install.sh | sh' },

    packages/enrichers/src/developer-seed.js, line 174

    curl: 'curl -fsSL https://raw.githubusercontent.com/render-oss/cli/refs/heads/main/bin/install.sh | sh',

    packages/enrichers/src/developer-seed.js, line 216

    curl: 'curl -fsSL https://awscli.amazonaws.com/v2/install.sh | bash',

    packages/enrichers/src/developer-seed.js, line 261

    install: { curl: 'curl -fsSL https://clis.cloud.ibm.com/install/linux | sh' },

    packages/enrichers/src/developer-seed.js, line 372

    curl: 'curl -fsSL https://cli.latitude.sh/install.sh | sh',

    packages/enrichers/src/developer-seed.js, line 411

    curl: 'curl -fsSL https://raw.githubusercontent.com/platformsh/cli/main/installer.sh | bash',

    packages/enrichers/src/developer-seed.js, line 420

    curl: 'curl -fsSL https://raw.githubusercontent.com/upsun/cli/main/installer.sh | bash',

    packages/enrichers/src/developer-seed.js, line 434

    curl: 'curl https://cli-assets.heroku.com/install.sh | sh',

    packages/enrichers/src/developer-seed.js, line 466

    curl: 'curl -s https://get.qovery.com | bash',

    packages/enrichers/src/developer-seed.js, line 479

    curl: 'curl -fsSL https://cli.bunny.net/install.sh | sh',

    packages/enrichers/src/developer-seed.js, line 517

    curl: 'curl -fsSL https://github.com/fortrabbit/frbit-cli/releases/latest/download/install.sh | sh',

    packages/enrichers/src/developer-seed.js, line 525

    curl: 'curl -fsSL https://raw.githubusercontent.com/coollabsio/coolify-cli/main/scripts/install.sh | bash',

    packages/enrichers/src/developer-seed.js, line 535

    curl: 'curl -fsSL https://github.com/godaddy/cli/releases/latest/download/install.sh | bash',

    README.md, line 204

    - **CLI**: `curl -fsSL https://nichedb.dev/install.sh | sh` (bun if present, else npm with Node 22

    apps/cli/README.md, line 6

    curl -fsSL https://nichedb.dev/install.sh | sh # or: npm install -g @profullstack/nichedb

  • Network

    Concern

    can reach a host that is not written as a fixed address. can reach raw.githubusercontent.com. The description does not name that host.

    NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST

    apps/web/public/app.js, line 5

    fetch(url, {

    apps/web/public/sw.js, line 25

    fetch(req)

    apps/web/src/lib/automotive.js, line 56

    const res = await fetch(url, {

    Show more

    apps/web/src/lib/automotive.js, line 816

    const res = await fetch(endpoint, {

    apps/web/src/lib/chovy.js, line 58

    const res = await fetch(config.chovy.webhookUrl, {

    apps/web/src/lib/submissions.js, line 40

    const res = await fetch(url, {

    apps/web/src/lib/submissions.js, line 160

    const res = await fetch(`${RSSAMPLIFIER_URL}/api/submit`, {

    apps/web/src/lib/vin-history.js, line 381

    const res = await fetch(url, {

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_ENV_READ SECRETS_PATH_DOTENV

    apps/cli/src/index.js, line 521

    const key = flags.key ?? cfg.keys?.[api] ?? process.env.NICHEDB_KEY ?? null;

    apps/web/src/routes/premium.test.js, line 169

    delete process.env.COINPAY_API_KEY;

    apps/web/src/routes/push.test.js, line 38

    process.env.VAPID_PUBLIC_KEY = keys.publicKey;

    Show more

    apps/web/src/routes/push.test.js, line 39

    process.env.VAPID_PRIVATE_KEY = keys.privateKey;

    apps/web/src/routes/push.test.js, line 46

    delete process.env.VAPID_PUBLIC_KEY;

    apps/web/src/routes/push.test.js, line 47

    delete process.env.VAPID_PRIVATE_KEY;

    apps/web/src/views/traffic.test.jsx, line 22

    evidence: { titles: ['Exploit probe: /.env'], paths: ['/.env'] },

    apps/web/src/views/traffic.test.jsx, line 194

    review_note: 'riotcoder review: exploit probes, e.g. /.env',

    apps/web/src/views/traffic.test.jsx, line 200

    expect(byAgent).toContain('exploit probes, e.g. /.env');

    ops/selfhost-supabase/server/setup-server.sh, line 11

    # 3. .env: public URLs, signups off, compose overrides (Caddy + nichedb)

    ops/selfhost-supabase/server/setup-server.sh, line 110

    if [ -f "$DIR/.env" ] && [ -f "$DIR/docker-compose.yml" ]; then

    ops/selfhost-supabase/server/setup-server.sh, line 132

    set_env() { # set_env KEY VALUE -> replace or append in $DIR/.env

    ops/selfhost-supabase/server/setup-server.sh, line 134

    if grep -q "^$k=" "$DIR/.env"; then

    ops/selfhost-supabase/server/setup-server.sh, line 135

    sed -i "s|^$k=.*$|$k=$v|" "$DIR/.env"

  • Agent instructions

    Pass

    No instruction to ignore earlier instructions or to hide a step.

  • Obfuscation

    Concern

    contains a minified payload.

    OBFUSCATION_MINIFIED_PAYLOAD

    docs/data/police-sources/channels.csv, line 1

    id,name,state,population,population_year,geography,status,distance_from_link_km,kind,url,evidence_url,verification,access

    docs/data/police-sources/index.html, line 1

    <!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>NicheDB · Police source inventory</title>

    docs/data/police-sources/inventory.json, line 1

    {

    Show more

    packages/adapters/src/igdb-catalog.js, line 37

    'name,slug,summary,storyline,first_release_date,updated_at,cover.url,genres.name,platforms.abbreviation,platforms.name,url,hypes,total_rating,total_rating_count,aggregated_rating,a

    packages/adapters/src/police-sources-ca.json, line 1

    {

    packages/adapters/src/sportarr-persons.js, line 55

    /\b(footballer|soccer|player|boxer|fighter|wrestler|martial art|racing driver|race car driver|racer|athlete|golfer|tennis|swimmer|cyclist|skater|gymnast|runner|sprinter|hurdler|jum

    packages/adapters/test/fixtures/agenticjobs-jobs.json, line 1

    {

  • Licence

    Pass

    A licence file is present (LICENSE).

  • Maintainer activity

    Pass

    The latest commit is within the last 365 days.

Note

Hygiene check of commit b1fe2d2f5b1f. requests shell access. No manifest field names shell or command execution. install fetches a script from the network. can reach a host that is not written as a fixed address. can reach raw.githubusercontent.com. The description does not name that host. reads a credential or environment file. contains a minified payload.

Date and source

Date checked:

View source

github.com

Commit graded: b1fe2d2f5b1fe83b8598f1e22bd4a6124e3dccf1

This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.

Read how this letter is chosen