npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tracer-sh

v0.3.7

Published

Local-first debugging & analysis platform

Readme

Tracer

npm version CI CodeQL

Local-first AI-powered observability platform.

During an incident, most time goes to switching between observability tools and gathering context — not fixing the problem. Tracer connects your providers to a single AI chat interface so you find the root cause in one place.

How it works

┌─────────┐       your API keys         ┌──────────────────┐
│         │ ◄──────────────────────────►│  Observability   │
│ Tracer  │                             │  Providers       │
│  local  │       your API keys         ├──────────────────┤
│         │ ◄──────────────────────────►│  LLM Providers   │
└─────────┘                             └──────────────────┘

Everything runs on your machine. Your data stays local in an encrypted SQLite database. Tracer talks directly to your provider and LLM APIs using your own API keys — no intermediary servers, no telemetry, no data leaves your machine except the API calls you control.

Debug

Chat with an AI agent that queries your providers in real time and finds root causes — all from a single conversation.

  • Natural language investigation across all connected providers
  • Live query execution with inline charts
  • Attach evidence to any message — screenshots, log files, code, PDFs — via paperclip, drag-and-drop, or paste
  • Post-mortem reports — download as Markdown to share
  • Share investigations as PNG — drop the exported image onto the sidebar to re-open the full analysis
  • Agent memory across sessions
  • Session history and cost tracking

Debug page

Settings

Configure providers, LLM credentials, integrations, and agent behavior. Each provider setup includes connectivity tests and guidance on creating least-privilege API keys.

  • LLM backends: Anthropic (Claude), Google (Gemini via AI Studio or Vertex AI)
  • Data provider setup with connectivity tests
  • Jira integration
  • Thinking budgets and step limits
  • Agent memory management

Settings page

Supported providers

Data: New Relic (NRQL), Google Cloud (Logs, Traces, Metrics, Errors), PostHog (HogQL)

LLM: Anthropic (Claude), Google (Gemini — AI Studio or Vertex AI)

Integrations: Jira — the agent reads issue details and comment threads for incident context, and posts comments back only when you explicitly ask.

Install

Requires Node.js 20+.

Run the latest, no install:

npx tracer-sh@latest

Install a pinned copy:

npm install -g tracer-sh
tracer-sh

Either way, Tracer stays on its installed version until you explicitly update: click the version in the sidebar and hit Update now, or re-run the install command. Note that bare npx tracer-sh reuses npm's cached copy and does NOT check for new releases — use the in-app update or npx tracer-sh@latest to get the newest version.

Open http://localhost:3579, go to Settings to add your API keys and choose an LLM — done.

Headless / CLI

Run an investigation from the terminal and get back the final analysis — so other tools and agents (including Claude Code) can drive Tracer:

tracer-sh analyze "Why did checkout error rate spike after 14:00 UTC?"
  • --session <id> — continue a prior run with full context
  • --provider <name> — scope the investigation to one provider
  • --json — full response envelope (session id, queries, usage)
  • tracer-sh --help — usage for every subcommand

Requires a running server.

Security

Your secrets — API keys, integration tokens, chat history, agent memory — sit behind several independent layers:

  • Local-only. No Tracer servers, no telemetry, no sync.
  • Encrypted at rest. The entire SQLite database is encrypted with SQLCipher (AES-256). A stolen laptop, a copied .db file, or a backup is ciphertext without the key.
  • Machine-bound, user-scoped key. A random 256-bit key is generated on first run and stored in your OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service). It never leaves the machine and other OS users can't read it.
  • Hardened on disk. The data directory is owner-only (0700); a keychain-less fallback key file is 0600.

Encryption is automatic — new installs are encrypted from the first run, and an existing plaintext database is migrated in place on first launch. In CI or headless environments without a keychain, supply the key yourself via TRACER_DB_KEY (64-char hex, e.g. openssl rand -hex 32).

Two honest caveats. Encryption at rest defends the file, not your live session: anyone running code as your OS user can read what the app can read — that is the boundary of every local-first app. And the key lives only in your keychain, so losing it (OS reinstall, keychain reset) makes the database unrecoverable; back up the tracer-sh / db-key keychain value if you want a safety net.

Verify it yourself:

sqlite3 ~/.tracer/data/tracer.db '.tables'    # → "Error: file is not a database"
head -c 16 ~/.tracer/data/tracer.db | od -c   # → random bytes, not "SQLite format 3"

Uninstall

npm uninstall -g tracer-sh
rm -rf ~/.tracer    # also removes settings, sessions, API keys

The database encryption key lives in your OS keychain (service tracer-sh, account db-key). On macOS:

security delete-generic-password -s tracer-sh -a db-key

Troubleshooting

| Problem | Fix | |---------|-----| | Native SQLite build fails | macOS: xcode-select --install / Linux: sudo apt install build-essential python3 | | Port in use | TRACER_PORT=3580 tracer-sh | | No LLM responses | Add an API key in Settings | | Headless / CI: no keychain available | Set TRACER_DB_KEY to a 64-char hex key (openssl rand -hex 32) |

Contributing

Report bugs or request featuresopen an issue with steps to reproduce or a clear description.

Submit a code change — fork, branch, and open a pull request against master. All PRs require approval before merging.

License

Elastic License 2.0 — free for any use, including internal business use, modification, and redistribution. You may not offer it as a hosted or managed service competing with Tracer.