The TypeScript toolbox for building modern Node.js, browser, edge, and CLI applications.
44+ independent, production-ready packages. Pick only what you need.
Daniel Bannert's open source work is supported by the community on GitHub Sponsors
Visulima is a curated collection of small, focused TypeScript libraries that solve the problems you hit every day when shipping real applications. Things like parsing CLI args, formatting terminal output, handling files and paths, debugging errors with readable stack traces, building APIs, sending emails, redacting secrets, and dozens more.
Every package is standalone. Install one, install ten, mix them with whatever framework you already use. No lock-in, no umbrella runtime.
- Modular by design. Every package has a single responsibility and ships independently. Use
@visulima/fswithout touching anything else. - Modern runtimes. Pure ESM that works in Node.js, Bun, Deno, edge runtimes, and (where it makes sense) the browser.
- TypeScript-native. Written in TypeScript with strict types, full inference, and
"sideEffects": falsefor clean tree-shaking. - Production-tested. High test coverage, Vitest-driven, used in real products.
- Well-documented. Every package has a dedicated doc page on visulima.com, plus a README with examples and API reference.
- MIT licensed. Free to use, free to fork.
Already using one of these? Swap it out without changing your code:
| You're using | Try | What you get |
|---|---|---|
node:path |
@visulima/path |
Same API, normalized paths, smaller and faster. |
chalk |
@visulima/colorize |
Chalk-compatible API, up to 3× faster, with nested templates. |
ink |
@visulima/tui |
Ink-compatible React API, backed by a native Rust diff engine. |
Performance-critical packages ship with NAPI bindings and a JS fallback. Fast where it matters, portable everywhere.
@visulima/tuiuses a native Rust diff engine for the React-to-terminal renderer.@visulima/secret-scanneris a Rust port of gitleaks detection, exposed via NAPI.@visulima/task-runnerruns concurrent processes with native Rust performance and process-tree cleanup on every OS.
Install only the packages you need:
# pnpm
pnpm add @visulima/pail @visulima/fs
# npm
npm install @visulima/pail @visulima/fs
# yarn
yarn add @visulima/pail @visulima/fsEvery package has a dedicated doc page on visulima.com with usage examples and full API reference.
Packages are grouped into eight categories. Jump to the section you need:
- API: routing, CRUD, OpenAPI, pagination, health checks
- Data Manipulation: strings, objects, bytes, HTML, redaction, locales
- Email: multi-provider sending, templates, disposable-domain detection
- Error Debugging: stack traces, source maps, loggers, dev overlays
- Filesystem: human-friendly fs helpers, path utilities, cache directories
- Storage: S3, Azure, GCS, and local file uploads with a unified API
- Terminal: CLIs, colors, spinners, progress bars, tables, TUI
- Tooling: task runner, secret scanner, tsconfig parser, package utilities
| Package | Version | Description |
|---|---|---|
| @visulima/health-check | A library built to provide support for defining service health for node services. It allows you to register async health checks for your dependencies and the service itself, provides a health endpoint that exposes their status, and health metrics. | |
| @visulima/jsdoc-open-api | Generates swagger doc based on JSDoc. | |
| @visulima/pagination | Simple Pagination for Node. |
| Package | Version | Description |
|---|---|---|
| @visulima/bytes | Utility functions to make dealing with Uint8Arrays easier | |
| @visulima/content-safety | Content safety filtering with multi-language banned word detection. Supports 19 languages with word-boundary matching, match position reporting, and both browser and server runtime compatibility. | |
| @visulima/deep-clone | Fastest deep clone implementation. | |
| @visulima/html | Functions for HTML, such as escaping or unescaping HTML entities | |
| @visulima/humanizer | Humanizer is a library for humanizing data in a human-readable form. | |
| @visulima/iso-locale | ISO data for countries, currencies, regions, timezones, and BCP 47 locale support. | |
| @visulima/object | Helper functions for working with objects and arrays. | |
| @visulima/redact | A library for redacting and masking sensitive data from objects and strings, with support for GDPR compliance, custom rules, and deep object traversal. | |
| @visulima/string | Functions for manipulating strings. | |
| @visulima/yaml | A fast, zero-dependency YAML 1.2 parser and serializer with a drop-in API for both yaml and js-yaml. |
| Package | Version | Description |
|---|---|---|
| @visulima/disposable-email-domains | A regularly updated list of disposable and temporary email domains. | |
| @visulima/email | A comprehensive email library with multi-provider support, crypto utilities, and template engines | |
| @visulima/email-provider-mx | Classify the email provider (mailbox host or secure email gateway) behind an MX record. | |
| @visulima/email-verifier | Mailer-free email address verification and enrichment: syntax, MX/SMTP probing, disposable/free/role detection, catch-all, provider & secure-email-gateway classification, typo suggestions, and a 0–100 quality score. | |
| @visulima/free-email-domains | A regularly updated list of free email service provider domains. |
| Package | Version | Description |
|---|---|---|
| @visulima/dev-toolbar | Devtools is a set of tools for building advanced devtools for your application | |
| @visulima/error | Error with more than just a message, stacktrace parsing. | |
| @visulima/error-handler | Error handlers for use in development and production environments. | |
| @visulima/inspector | Inspect utility for Node.js and Browsers. | |
| @visulima/ono | Ono is an error-parsing library that pretty prints JavaScript errors on a web page or the terminal. | |
| @visulima/pail | Highly configurable Logger for Node.js, Edge and Browser. | |
| @visulima/source-map | Provides functionality related to source maps. | |
| @visulima/vite-overlay | Improved vite overlay |
| Package | Version | Description |
|---|---|---|
| @visulima/find-cache-dir | Finds the common standard cache directory | |
| @visulima/fs | Human friendly file system utilities for Node.js | |
| @visulima/path | Drop-in replacement of the Node.js path module. |
| Package | Version | Description |
|---|---|---|
| @visulima/notification | A reusable, ESM-only, edge-ready multi-channel notification library with SMS, push, chat, in-app and webhook providers |
| Package | Version | Description |
|---|---|---|
| @visulima/storage | Server-side file-storage abstraction - store files in a web-accessible location via a simplified API. Includes S3, Azure, GCS, local filesystem and 20+ other backends with TUS/multipart/REST upload handlers and the most convenient features of each. | |
| @visulima/storage-client | The upload client library. Simple and easy file uploads for React | Vue | Solid | Svelte. |
| Package | Version | Description |
|---|---|---|
| @visulima/ansi | ANSI escape codes for some terminal swag. | |
| @visulima/boxen | Create beautiful boxes in the terminal with customizable borders, padding, and alignment. | |
| @visulima/cerebro | A delightful toolkit for building cross-runtime CLIs for Node.js, Deno, and Bun. | |
| @visulima/colorize | Terminal and Console string styling done right. | |
| @visulima/command-line-args | A mature, feature-complete library to parse command-line options. | |
| @visulima/fmt | Util.format-like string formatting utility. | |
| @visulima/interactive-manager | Interactive terminal output manager for spinners, progress bars, and dynamic updates | |
| @visulima/is-ansi-color-supported | Detect whether a terminal or browser supports ansi colors. | |
| @visulima/progress-bar | Terminal progress bars with multiple styles and multi-bar support | |
| @visulima/spinner | Minimal terminal spinners | |
| @visulima/tabular | Create beautiful ASCII tables and grids with customizable borders, padding, and alignment. Supports Unicode, colors, and ANSI escape codes. | |
| @visulima/tui | React-based TUI library powered by a native Rust diff engine, drop-in Ink-compatible API | |
| @visulima/tui-kit | Component library for @visulima/tui — installable as a package, or copy-pasteable via the shadcn CLI registry |
| Package | Version | Description |
|---|---|---|
| @visulima/find-ai-runner | Detect and invoke AI CLI tools (Claude, Gemini, Codex, Copilot, Cursor, Crush, Amp, Kimi, Qwen, OpenCode, Droid) installed on the system | |
| @visulima/package | A comprehensive package management utility that helps you find root directories, monorepos, package managers, and parse package.json, package.yaml, and package.json5 files with advanced features like catalog resolution. | |
| @visulima/secret-scanner | Fast secret and credential scanner — a Rust port of gitleaks detection, exposed via NAPI | |
| @visulima/task-runner | A task runner with caching support for monorepo workspaces | |
| @visulima/task-runner-client | Zero-dependency client for giving the @visulima/task-runner precise cache-correctness hints from inside a task | |
| @visulima/tsconfig | Find and/or parse the tsconfig.json file from a directory path. | |
| @visulima/vis | A monorepo dev toolkit — task runner, remote caching, security scanning, git hooks, and AI agent integrations — powered by @visulima/task-runner | |
| @visulima/vis-mcp | MCP (Model Context Protocol) server for @visulima/vis — exposes vis tooling to AI agents over stdio |
| Package | Version | Description |
|---|---|---|
| @visulima/workflow | A reusable, ESM-only, edge-ready durable workflow engine: code-first workflows with resumable steps, delays and external-event waits, backed by a pluggable store |
Visit https://visulima.com/learn to get started with Visulima.
Visit https://visulima.com/docs to view the full documentation.
The Visulima community can be found on GitHub Discussions, where you can ask questions, voice ideas, and share your projects.
To chat with other community members you can join the Visulima Discord.
Our Code of Conduct applies to all Visulima community channels.
Please see our contributing.md.
We have a list of good first issues that contain bugs that have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process.