Sickbay

April 8, 2026 · View on GitHub

A zero-config health check CLI for JavaScript and TypeScript projects. Run sickbay in any project to get an instant report on dependencies, security, code quality, performance, and git health — with a web dashboard for deep dives.

Important

sickbay is currently in alpha

┌──────────────────────────────────────────────────────┐
│  ███████ ██  ██████ ██   ██ ██████   █████  ██    ██ │
│  ██      ██ ██      ██  ██  ██   ██ ██   ██  ██  ██  │
│  ███████ ██ ██      █████   ██████  ███████   ████   │
│       ██ ██ ██      ██  ██  ██   ██ ██   ██    ██    │
│  ███████ ██  ██████ ██   ██ ██████  ██   ██    ██    │
└──────────────────────────────────────────────────────┘

Features

  • 34 integrated checks across 5 categories (dependencies, security, code quality, performance, git)
  • Framework-aware — automatically detects React, Next, Express, Fastify, Koa, Hapi, and more; runs only relevant checks
  • Monorepo support — auto-detects pnpm/npm/yarn/turbo/nx/lerna workspaces; per-package scoring and reporting
  • Animated terminal UI built with Ink (React for terminals)
  • TUI dashboard — persistent live dashboard with real-time file watching, git status, trends, and activity log
  • Web dashboard served locally — opens automatically with --web
  • AI-powered insights with Claude — automated analysis and interactive chat (requires ANTHROPIC_API_KEY)
  • Zero config — all tools are bundled; no global installs required
  • Structured JSON output for CI/CD integration
  • Star Trek doctor quotes — severity-based personality quotes from Trek's finest medical officers

Framework Support

Framework / RuntimeStatusFramework-specific checks
React✅ Supportedreact-perf, asset-size
Next.js✅ Supportednext-images, next-link, next-fonts, next-missing-boundaries, next-security-headers, next-client-components
Angular✅ Supportedangular-change-detection, angular-lazy-routes, angular-strict, angular-subscriptions, angular-build-config, angular-security, angular-template-performance
Node.js✅ Supportednode-security, node-input-validation, node-async-errors
TypeScript✅ Supportedtypescript (type error reporting)
Vue🔜 Coming Soon
Remix🔜 Coming Soon

All projects also get the full suite of universal checks regardless of framework: dependencies, security, code quality, git, and complexity.


Installation

# Run without installing
npx sickbay --path ~/my-project

# Install globally
npm install -g sickbay

Monorepo Structure

sickbay/
├── packages/
│   └── core/           # Analysis engine — all check runners & scoring
├── apps/
│   ├── cli/            # Terminal UI (Ink + Commander)
│   └── web/            # Web dashboard (Vite + React + Tailwind)
├── fixtures/           # Test fixtures (separate pnpm workspace with react-app + node-api)
├── tests/snapshots/    # Snapshot regression tests against fixtures
├── package.json        # Root workspace config
├── pnpm-workspace.yaml
├── turbo.json          # Build pipeline
└── tsconfig.base.json

Local Setup

Prerequisites

  • Node.js >= 18
  • pnpm >= 8 (npm install -g pnpm)

Install & Build

git clone https://github.com/nebulord-dev/sickbay.git
cd sickbay

# Install all workspace dependencies
pnpm install

# Build everything (core → cli → web, in dependency order)
pnpm build
cd apps/cli
pnpm link --global

Now you can run sickbay from anywhere:

sickbay --path ~/my-project
sickbay --path ~/my-project --web

All check tools (knip, depcheck, madge, etc.) are bundled as dependencies — no separate global installs needed.


CLI Usage

sickbay [options]

Options:
  -p, --path <path>       Path to the project to analyze (default: current directory)
  -c, --checks <names>    Comma-separated list of checks to run (default: all)
  --package <name>        Scope to a single named package (monorepo only)
  --json                  Output raw JSON report to stdout
  --web                   Open web dashboard after scan completes
  --no-ai                 Disable AI features (even if ANTHROPIC_API_KEY is set)
  --no-quotes             Suppress personality quotes in output
  --verbose               Show verbose output during checks
  -V, --version           Show version
  -h, --help              Show help

Commands:
  init                    Initialize .sickbay/ folder and run an initial baseline scan
  fix [options]           Interactively fix issues found by sickbay scan
  trend [options]         Show score history and trends over time
  stats [options]         Show a quick codebase overview and project summary
  doctor [options]        Diagnose project setup and configuration issues
  tui [options]           Persistent live dashboard with file watching and activity tracking
  badge [options]         Generate a health score badge for your README
  diff <branch>           Compare health score against another branch

Examples

# Analyze current directory
sickbay

# Analyze a specific project
sickbay --path ~/projects/my-app

# Run only security and dependency checks
sickbay --checks npm-audit,knip,depcheck

# Output JSON for CI/CD
sickbay --json > sickbay-report.json

# Open interactive web dashboard
sickbay --web

# Scan a monorepo (auto-detected)
sickbay --path ~/projects/my-monorepo

# Scope to a single package in a monorepo
sickbay --package my-app

# Compare health against another branch
sickbay diff main

# Generate a README badge from last scan
sickbay badge

# Run a fresh scan and generate badge
sickbay badge --scan

# Launch persistent TUI dashboard (watches for file changes, auto-rescans)
sickbay tui

# Fix issues interactively
sickbay fix

# Preview fixes without applying
sickbay fix --dry-run

# Apply all auto-fixable issues at once
sickbay fix --all

Note: See apps/cli/README.md for detailed documentation on each command.


AI Features

The web dashboard includes AI-powered insights using Claude (Anthropic API):

  • Automatic Analysis — Generates a structured health assessment when the dashboard opens
  • Interactive Chat — Ask questions about your report ("What should I fix first?", "Explain the security issues")
  • Collapsible Critical Issues Panel — Surfaces the most important problems upfront

Enable AI Features

Set the ANTHROPIC_API_KEY environment variable:

export ANTHROPIC_API_KEY=sk-ant-...
sickbay --web

You can also place it in ~/.sickbay/.env or the project's .env file — both are loaded automatically.

Without the API key, the dashboard still works — you just won't see the AI insights drawer or chat bot.


Available Checks

Sickbay automatically detects your project type and runs only applicable checks. Framework-specific checks are silently skipped when not relevant.

Universal (15): knip · depcheck · outdated · heavy-deps · npm-audit · license-checker · secrets · eslint · typescript · madge · jscpd · coverage · todo-scanner · complexity · git

React: react-perf · asset-size

Angular: angular-change-detection · angular-lazy-routes · angular-strict · angular-subscriptions · angular-build-config · angular-security · angular-template-performance

Next.js: next-images · next-link · next-fonts · next-missing-boundaries · next-security-headers · next-client-components

Node.js: node-security · node-input-validation · node-async-errors

Full check reference with scoring formulas and thresholds


Scoring

Each check produces a score from 0–100. The overall score is a weighted average:

CategoryWeight
Security30%
Dependencies25%
Code Quality25%
Performance15%
Git5%

Score thresholds: 80+ = green, 60–79 = yellow, < 60 = red.

See docs/scoring.md for the full scoring breakdown including per-check formulas.


Monorepo Support

Sickbay auto-detects monorepo setups (pnpm, npm, yarn workspaces, Turborepo, Nx, Lerna) and runs checks per-package in parallel.

# Scan entire monorepo
sickbay --path ~/my-monorepo

# Scope to one package
sickbay --package @myorg/api

# Monorepo-aware subcommands
sickbay fix --package @myorg/api
sickbay trend --package @myorg/api
sickbay stats --package @myorg/api
sickbay doctor --package @myorg/api
sickbay badge --package @myorg/api

The web dashboard shows a package sidebar with per-package drill-in, cross-package quick wins, and an aggregate overview.


Development

Root Scripts

pnpm build        # Build all packages (turbo, respects dependency order)
pnpm dev          # Watch mode for all packages in parallel
pnpm test         # Run all tests across all packages
pnpm test:snapshots  # Run snapshot regression tests against fixtures
pnpm lint         # Lint all packages
pnpm clean        # Remove all dist/ directories and node_modules

Per-Package Scripts

# Core
pnpm --filter sickbay-core build
pnpm --filter sickbay-core dev     # Watch mode

# CLI
pnpm --filter sickbay build
pnpm --filter sickbay dev      # Watch mode

# Web
pnpm --filter sickbay-web build
pnpm --filter sickbay-web dev      # Vite dev server on :3030

Test Fixtures

The fixtures/ directory is a separate pnpm workspace with two packages for testing Sickbay locally:

sickbay --path fixtures/packages/react-app    # moderately healthy React app
sickbay --path fixtures/packages/node-api     # deliberately broken Node API
sickbay --path fixtures/packages/angular-app  # Angular app with intentional issues
sickbay --path fixtures/packages/next-app     # Next.js app with intentional issues
sickbay --path fixtures/                      # full monorepo (tests monorepo detection)

See fixtures/README.md for the full list of intentional issues and how to add new fixtures.


Architecture

                  ┌─────────────┐
                  │   sickbay    │  ← CLI entry (Commander)
                  │   (CLI)     │
                  └──────┬──────┘
                         │ runSickbay() / runSickbayMonorepo()
                  ┌──────▼──────┐
                  │    core     │  ← Orchestrates runners in parallel
                  │   runner    │     Filters by ProjectContext first
                  └──────┬──────┘
          ┌──────────────┼──────────────┐
          ▼              ▼              ▼
     KnipRunner    AuditRunner    GitRunner ...  (34 total)
          │              │              │
          └──────────────┼──────────────┘
                         │ SickbayReport / MonorepoReport JSON
                  ┌──────▼──────┐
                  │  Terminal   │  ← Ink UI with scores, quick wins, quotes
                  │    UI       │
                  └─────────────┘
                         │ --web flag
                  ┌──────▼──────┐
                  │  HTTP server│  ← Serves web/dist + report JSON
                  │  + browser  │
                  └─────────────┘

Powered By

Sickbay orchestrates these excellent open-source tools:

knip · depcheck · madge · jscpd · source-map-explorer · license-checker · ESLint · TypeScript

Built with Ink · React · Vite · Tailwind CSS · Commander.js

Full credits and acknowledgments


Packages