Pino

A super fast, low-overhead JSON logger for Node.js applications.

Library
npm
v10.4.0
18,260 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
81 /100 Excellent
Development Activity 72
Maintenance 84
Community 68
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
86 /100 Excellent
Architecture 90
Code Quality 88
Innovation 85
Learning Curve 82

Pino is a structured JSON logger for Node.js built around a single goal: log as fast as possible without slowing down the application doing the logging. It achieves this by keeping the hot path allocation-free, deferring expensive work like transport formatting to a separate worker thread, and serializing objects with a purpose-built fast stringifier instead of generic JSON.stringify calls.

Beyond raw speed, Pino ships the features production services actually need: child loggers that carry bound context without re-serializing it on every call, built-in redaction for sensitive fields, pluggable transports for shipping logs to files or external services, and first-class support for Fastify, Express, Koa, Hapi, and other Node web frameworks. Pretty-printing during development is handled by the companion pino-pretty module rather than baked into the core, keeping the production logger lean.

What You Get

  • A pino() factory that returns a logger instance with trace/debug/info/warn/error/fatal level methods, each emitting a single JSON line
  • Child loggers (logger.child({...})) that attach bound context to every log line without re-serializing the parent’s bindings on each call
  • A worker-thread transport system (pino.transport()) for routing logs to files, pino-pretty, or third-party log destinations without blocking the main thread
  • Built-in redaction (redact option) for stripping or censoring sensitive fields like passwords and tokens before they hit the log stream
  • Standard and custom serializers for shaping how errors, requests, and responses are rendered in log output
  • Multistream support (pino.multistream()) for fanning a single logger out to multiple destinations with independent level filtering
  • A browser build (browser.js) so the same API can run client-side with a configurable transmit/write strategy

Common Use Cases

  • High-throughput HTTP API logging in Fastify, Express, or Koa services where logging overhead directly affects request latency
  • Structured, machine-parseable application logs feeding into log aggregation systems like Elasticsearch, Datadog, or Loki
  • Multi-tenant or multi-request-context logging via child loggers that automatically attach request IDs, user IDs, or trace IDs
  • Redacting PII or credentials from logs before they leave the process, for compliance-sensitive services
  • Local development logging with human-readable, colorized output via the pino-pretty transport, switching to raw JSON in production

Under The Hood

Architecture — Pino’s entry point, pino.js, wires together a small set of internal modules under lib/: proto.js defines the logger prototype (the trace/debug/info/etc. methods and child()), tools.js builds the safe JSON stringifier and formatters, levels.js manages level comparison and the level-name-to-number mapping, redaction.js compiles redaction paths, and transport.js/transport-stream.js spawn a node:worker_threads worker that owns the actual write destination. Because the worker thread does the formatting/writing work, a slow transport (e.g. shipping to a remote log service) does not block the event loop the application logic runs on. Child loggers are implemented as prototype-chained instances that concatenate pre-serialized “chindings” strings rather than re-walking parent bindings on every call, which is central to Pino’s low per-call overhead.

Tech Stack — Pure JavaScript (CommonJS, type: commonjs in package.json) with a bundled pino.d.ts for TypeScript consumers; no build step is required to consume the package. Runtime dependencies are itself a family of small, single-purpose packages maintained by the same team: @pinojs/redact, pino-abstract-transport, pino-std-serializers, sonic-boom (the fast writable stream Pino writes to), thread-stream (the worker-thread transport machinery), safe-stable-stringify, atomic-sleep, and on-exit-leak-free. This decomposition keeps the core package’s dependency surface small and lets each concern be tested and versioned independently.

Code Quality — The repo has an extensive test suite (46 files under test/, including dedicated browser-mode tests, redaction tests, transport tests, and TypeScript type tests run via tstyche and ts-node), plus eslint with the neostandard config enforced via npm run lint. The test script chains lint, TypeScript transpilation, borp (with 95% coverage thresholds for lines/functions/branches/statements), Jest for a subset of tests, and a separate test-types step — a notably rigorous CI gate for a package this size.

API Design — The core API is deliberately minimal: pino(options, destination) returns a logger, and the six level methods plus child() cover the vast majority of usage. Getting started requires zero configuration (require('pino')() works immediately), while advanced behavior (custom levels, redaction, mixins, formatters, transports) is opt-in via the options object rather than requiring subclassing or plugins. This keeps the common case boilerplate-free while still supporting complex production setups.

Used by 67 apps in this directory

TypeScript
95%
MIT

Skrun

AI Agents

210

An open, self-hostable, multi-model agent runtime that deploys any agent skill as an API via POST /run — an open-source alternative to Claude Managed Agents and Google's Gemini Enterprise Agent Platform.

View details
54
Repo Health
66
Technical
77
Dependency
Built with
TypeScript 95%
Updated 1 months ago
TypeScript
96%
Other

superglue

AI Agents · Data Engineering · Developer Tools

2,066

superglue is an AI-agent-driven integration engine that turns plain-English descriptions of enterprise systems into production-grade API tools, ERP/CRM connectors, and data pipelines — self-hosted or cloud, Y Combinator-backed (W25).

View details
42
Repo Health
79
Technical
67
Dependency
Built with
TypeScript 96%
Updated 2 months ago
TypeScript
98%
Apache 2.0

superlog

AI Agents · Monitoring

1,469

Open-source agentic observability that ingests OpenTelemetry signals, groups them into incidents, and deploys AI agents to investigate and fix your production bugs automatically.

View details
66
Repo Health
73
Technical
72
Dependency
Built with
TypeScript 98%
Updated 1 weeks ago
TypeScript
48%
MIT

supermemory

AI Development · AI Memory · Note Taking

31,370

The state-of-the-art memory and context engine for AI agents — ranked #1 on all three major AI memory benchmarks.

View details
88
Repo Health
82
Technical
67
Dependency
Built with
TypeScript 48%
MDX 32%
Python 17%
Updated 6 days ago
Python
71%
Apache 2.0

SurfSense

AI Assistants · Search

16,586

The open-source, unlimited NotebookLM alternative with real-time collaboration, a desktop app, and no vendor lock-in.

View details
88
Repo Health
71
Technical
66
Dependency
Built with
Python 71%
TypeScript 27%
Updated 6 days ago
Rust
93%
Other

Tabby

AI Code Assistants

33,924

Self-hosted AI coding assistant — run GitHub Copilot-grade code completion on your own hardware with no cloud dependency.

View details
55
Repo Health
78
Technical
61
Dependency
Built with
Rust 93%
Updated 4 months ago
TypeScript
67%
Other

TaskView

Productivity · Project Management

1,367

Self-hosted project and task management platform for software teams, with Kanban boards, sprints, time tracking, GitHub/GitLab integrations, and an MCP server for AI assistants.

View details
78
Repo Health
77
Technical
68
Dependency
Built with
TypeScript 67%
Vue 21%
Updated 1 weeks ago
TypeScript
99%
Other

Teable

Databases · No Code Platforms

21,920

A no-code PostgreSQL database with spreadsheet UX, real-time collaboration, and native AI agents — built for teams that outgrow Airtable.

View details
78
Repo Health
76
Technical
62
Dependency
Built with
TypeScript 99%
Updated 1 weeks ago
TypeScript
63%
AGPL 3.0

undb

Databases · No Code Platforms

2,975

Self-hosted no-code database and BaaS that lets you manage structured data visually with multi-database support, formula fields, and auto-generated OpenAPI endpoints.

View details
58
Repo Health
66
Technical
65
Dependency
Built with
TypeScript 63%
Svelte 35%
Updated 1 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers