Lumber is a lightweight logging SDK for Node.js. Logs are encrypted with your key before they leave your server: the API never sees your log content.
// npm i @infinitetoken/lumber
import lumber from '@infinitetoken/lumber'
lumber.config({
apiKey: process.env.LUMBER_API_KEY,
encryptionKey: process.env.LUMBER_ENCRYPTION_KEY,
console: { timestamp: 'time', color: true },
})
lumber.info('Server started', { port: 3000 })
lumber.warn('Rate limit approaching', {
userId: user.id,
requests: 95,
})
lumber.error('Payment failed', {
orderId: order.id,
reason: err.message,
})Everything you need to log confidently across your entire Node.js stack.
AES-256-GCM client-side encryption. Your key never reaches our servers in readable form (teammates receive it end-to-end encrypted), so the server never sees your log content.
One small runtime dependency: Lumber's own shared types package, which has no dependencies of its own. Encryption and delivery use Node's built-in crypto and fetch.
Fire-and-forget with an internal async queue. Logging never blocks your request path.
Browse, search, and filter your logs in the Lumber mobile app for iOS and Android, decrypted on your device. Coming soon to the App Store.
Attach requestId, traceId, custom context, and arbitrary metadata to any log entry.
Echo logs to stdout/stderr during development with colored output, timestamps, and pretty-printed data.
Three steps from zero to encrypted logs.
Add Lumber to your Node.js project with a single command.
Create an app in the Lumber mobile app: it generates your encryption key on your device. Then add an API key on the app's Secrets screen.
Call lumber.config() once at startup, then log anywhere in your app.
Start free. Scale as you grow.
Hobby
For side projects and exploration.
Dev
For active development teams.
Pro
For production workloads.
Enterprise
For large-scale deployments.
Add Lumber to your Node.js app in under five minutes. Your logs stay yours.