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

@reyemtech/nimbus

v1.3.0

Published

Cloud-agnostic infrastructure abstractions for Pulumi

Readme

@reyemtech/nimbus

npm version CI Coverage License: MIT TypeScript Pulumi Node.js

Cloud-agnostic infrastructure abstractions for Pulumi. Write IaC once, deploy to AWS, Azure, or both. Cloud migration = change one config value.

Why

Every client environment follows the same pattern: network + cluster + DNS + secrets + platform. The only difference is the cloud provider. Nimbus extracts that pattern into reusable, type-safe factory functions.

  • Cloud migration in one line — change cloud: "aws" to cloud: "azure"
  • Multi-cloud active-active — deploy to AWS + Azure with a Global Load Balancer
  • Dynamic provider loading — only the targeted SDK loads; missing providers give install instructions
  • Cost-optimized defaults — fck-nat (~$3/mo vs $32/mo), spot instances, Auto Mode
  • Escape hatches — every resource exposes nativeResource for cloud-specific access

Install

npm install @reyemtech/nimbus

Install provider SDKs for your target cloud(s):

npx @reyemtech/nimbus install aws          # @pulumi/aws
npx @reyemtech/nimbus install azure        # @pulumi/azure-native
npx @reyemtech/nimbus install aws azure    # both

Quick Start

Scaffold a new project (handles pulumi new, npm install, and provider setup):

npx @reyemtech/nimbus new my-infra aws
cd my-infra
pulumi up

Or start from scratch:

import { createNetwork, createCluster, createPlatformStack } from "@reyemtech/nimbus";
import type { INetwork, ICluster } from "@reyemtech/nimbus";

const network = await createNetwork("prod", {
  cloud: "aws",
  cidr: "10.0.0.0/16",
  natStrategy: "fck-nat",
}) as INetwork;

const cluster = await createCluster("prod", {
  cloud: "aws",
  nodePools: [
    { name: "system", instanceType: "t4g.small", minNodes: 2, maxNodes: 3 },
    { name: "workers", instanceType: "c6a.large", minNodes: 1, maxNodes: 10, spot: true },
  ],
  providerOptions: { aws: { autoMode: true } },
}, network) as ICluster;

createPlatformStack("prod", { cluster, domain: "example.com" });

See docs/examples.md for Azure, multi-cloud, and standalone resource patterns.

CLI

nimbus new <name> <template>     # Scaffold a project from a template
nimbus install <provider> [...]  # Install cloud provider SDKs
nimbus check                     # Show which providers are installed

Templates

| Template | Description | |----------|-------------| | empty | Blank scaffold with TODO placeholders | | minimal-aws | State backend + Secrets Manager (no cluster) | | minimal-azure | State backend + Key Vault (no cluster) | | aws | Full stack: VPC + EKS + Route 53 + Secrets + Platform | | azure | Full stack: VNet + AKS + Azure DNS + Key Vault + Platform | | multi-cloud | AWS + Azure active-active with Global Load Balancer |

Day-to-Day Operations

After scaffolding, use standard Pulumi commands to manage your infrastructure:

pulumi preview    # Preview changes before deploying
pulumi up         # Deploy infrastructure
pulumi refresh    # Sync state with actual cloud resources
pulumi destroy    # Tear down all resources
pulumi config set key value   # Set stack configuration
pulumi stack output           # View stack outputs

Architecture

@reyemtech/nimbus
├── factories/      # Cloud-agnostic factory functions (primary API)
├── types/          # CloudProvider, CloudTarget, tags, errors, validation
├── network/        # VPC (AWS), VNet (Azure) + NAT + CIDR utilities
├── cluster/        # EKS, AKS (+ Auto Mode, virtual nodes, spot)
├── dns/            # Route 53, Azure DNS
├── secrets/        # AWS Secrets Manager, Azure Key Vault
├── state/          # Pulumi state backend (S3, Azure Blob) with BCDR
├── platform/       # Helm: Traefik, cert-manager, External DNS, ArgoCD, Vault, ESO
├── global-lb/      # DNS-based multi-cloud routing (active-active, failover, geo)
├── cli.ts          # CLI (nimbus new/install/check)
├── cli/            # CLI templates for project scaffolding
├── database/       # (interfaces only — RDS, Azure DB, PXC, CNPG)
├── cache/          # (interfaces only — ElastiCache, Azure Cache, Redis Helm)
├── storage/        # (interfaces only — S3, Blob, GCS)
└── queue/          # (interfaces only — SQS, Service Bus, NATS)

Module Status

| Module | AWS | Azure | GCP | |--------|-----|-------|-----| | Network | VPC + fck-nat/managed NAT | VNet + NAT Gateway | Planned | | Cluster | EKS + Auto Mode | AKS + virtual nodes | Planned | | DNS | Route 53 | Azure DNS | Planned | | Secrets | Secrets Manager | Key Vault | Planned | | State | S3 + DynamoDB locking + replication | Blob + GRS | Planned | | Platform | Helm (provider-agnostic) | Helm (provider-agnostic) | Helm (provider-agnostic) | | Global LB | Route 53 health-checked routing | Planned | — |

Documentation

  • API Reference — Factory functions, provider options, direct cloud functions
  • Examples — Single-cloud, multi-cloud, standalone resources, BCDR
  • Utilities — CIDR helpers, validation, tags, error handling

Development

npm install
npm run typecheck      # Type checking
npm run lint           # ESLint
npm run format         # Prettier
npm test               # Vitest (unit tests)
npm run test:coverage  # With 80% coverage thresholds
npm run build          # ESM + CJS dual build
npm run docs:api       # TypeDoc API docs

License

MIT