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

grafana-bridge

v0.1.2

Published

Local HTTP proxy that bridges CLI tools to Grafana Cloud instances behind SSO

Readme

grafana-bridge

Local HTTP proxy that bridges CLI tools, scripts, and AI-powered dashboards to Grafana Cloud instances behind SSO (Okta, Google, Azure AD, etc.).

Install

npx grafana-bridge --grafana-url https://mycompany.grafana.net

Or install globally:

npm install -g grafana-bridge
grafana-bridge -u https://mycompany.grafana.net

Requires Node.js >= 18. Playwright's Chromium is installed automatically via postinstall.

Usage

# Start the proxy
grafana-bridge -u https://mycompany.grafana.net

# With custom port
grafana-bridge -u https://mycompany.grafana.net -p 8080

# With verbose logging
grafana-bridge -u https://mycompany.grafana.net --verbose

# With config file
grafana-bridge -c ./my-config.yaml

Once running, any HTTP client can query Grafana through the local proxy:

# List datasources
curl http://localhost:4000/api/datasources

# Query Loki
curl -X POST http://localhost:4000/api/ds/query \
  -H "Content-Type: application/json" \
  -d '{"queries": [...]}'

# Search dashboards
curl http://localhost:4000/api/search

# Health check
curl http://localhost:4000/health

# Trigger proactive authentication
curl -X POST http://localhost:4000/auth

Configuration

CLI flags

grafana-bridge [options]

  -u, --grafana-url <url>     Grafana instance URL (required)
  -p, --port <number>         Local proxy port (default: 4000)
  -c, --config <path>         Path to config file
  --login-timeout <ms>        SSO login timeout (default: 120000)
  --session-file <path>       Session persistence file path
  --verbose                   Enable debug logging
  -v, --version
  -h, --help

Config file

Place at ~/.config/grafana-bridge/config.yaml or ./grafana-bridge.yaml:

grafanaUrl: 'https://mycompany.grafana.net'
port: 4000
loginTimeoutMs: 120000
sessionFile: '~/.config/grafana-bridge/session.json'
verbose: false

Environment variables

  • GRAFANA_BRIDGE_URL — Grafana instance URL
  • GRAFANA_BRIDGE_PORT — Local proxy port

Precedence

CLI flags > environment variables > config file > defaults

How it works

  1. All requests are forwarded to Grafana with session cookies injected (if a session exists)
  2. If Grafana returns 401, a Chromium browser opens for SSO login (lazy authentication)
  3. After successful login, grafana_session and grafana_session_expiry cookies are captured
  4. Session is cached in memory and persisted to ~/.config/grafana-bridge/session.json
  5. Subsequent requests reuse the cached session — the browser only opens when Grafana rejects the session
  6. Re-authentication retries up to 3 times before returning 401 to the client
  7. Persistent browser context means SSO IdP cookies are remembered — subsequent re-auths only need Grafana consent, not full IdP login
  8. POST /auth can be used to proactively trigger authentication before any request

License

MIT