DEV Community

Cover image for Stop Grepping. Start Knowing. Meet HazelJS Inspector.
Muhammad Arslan
Muhammad Arslan

Posted on

Stop Grepping. Start Knowing. Meet HazelJS Inspector.

One line of code. Zero instrumentation. Your entire app—routes, cron jobs, agents, flows, circuit breakers—visible in seconds.


You've Been There

It's 2 PM. A new dev joins your team. "Where does POST /orders go?" You open three files, trace five imports, and 20 minutes later you're still not sure. The OpenAPI spec? Last updated six months ago. The README? "See code."

Or it's 11 PM. Production is acting weird. "Is that cron job even running?" You dig through service files, grep for @Cron, wonder if the expression is right. No way to know without logs—and logs won't tell you what's registered.

Or you're refactoring. "What breaks if I move this module?" You map dependencies in your head. Or in a doc. Or you just... hope.

Sound familiar?


The Moment It Clicks

Imagine this instead:

You add one import to your app. You run it. You open http://localhost:3000/__hazel.

Suddenly you see:

  • Every route, method, path, controller—live
  • Every cron job, expression, next run time
  • Every agent, AI function, RAG pipeline
  • Every flow, with a visual diagram
  • Every circuit breaker and its state
  • Health, memory, uptime—at a glance

No grep. No stale docs. No archaeology. Just the truth.

That's HazelJS Inspector.


Why Devs Love It

Zero Friction

InspectorModule.forRoot({ developmentOnly: true })
Enter fullscreen mode Exit fullscreen mode

That's it. No middleware. No manual registration. No OpenAPI generation. The Inspector discovers everything from your framework metadata and decorators. Add it, run, done.

Framework-Aware, Not Generic

Generic APM tools treat your app like a black box. Inspector speaks HazelJS. It knows:

  • @Controller → routes
  • @Cron → scheduled jobs
  • @Agent, @Tool → AI agents
  • @Flow, @Node → workflows
  • @RAG, @Model → pipelines and ML

It understands your stack. So you don't have to explain it—to yourself or to others.

One Dashboard, Everything

  • Overview — Environment, health, runtime, gateway, discovery, resilience
  • Routes — Search, filter, try endpoints
  • Modules — Full hierarchy, imports, providers
  • Jobs — Cron expressions, next run, enabled status
  • Agents, AI, RAG, GraphQL, gRPC, Kafka, Flows — All discoverable, all searchable

No context switching. No tab chaos. One place.


Try It in 60 Seconds

1. Install

npm install @hazeljs/inspector @hazeljs/core
Enter fullscreen mode Exit fullscreen mode

2. Add to your app module

import { HazelModule } from '@hazeljs/core';
import { InspectorModule } from '@hazeljs/inspector';

@HazelModule({
  imports: [
    InspectorModule.forRoot({ developmentOnly: true }),
    // ... your other modules
  ],
})
export class AppModule {}
Enter fullscreen mode Exit fullscreen mode

3. Run and open

npm run dev
Enter fullscreen mode Exit fullscreen mode

Open http://localhost:3000/__hazel. That's it. You're in.


What You Can Inspect

Category What You Get
Framework Routes, modules, providers, decorators
Scheduled Cron jobs with expressions and next run times
AI Agents, AI functions, RAG pipelines, prompts, ML models
APIs GraphQL resolvers, gRPC methods, Kafka consumers
Workflows Flows with visual diagrams, data pipelines
Serverless Lambda-style handlers
Events Event listeners
Resilience Circuit breakers (CLOSED/OPEN/HALF-OPEN)

All from decorators. All automatic.


Real Scenarios

Onboarding — New dev opens /__hazel. Sees every route and module. Understands the app in minutes, not hours.

Debugging — "Which controller handles POST /orders?" Search. "Is that cron job enabled?" Check Jobs. "Circuit breaker state?" Check Resilience.

Refactoring — Before moving a module, see dependencies and consumers. No guesswork.

Documentation — Export snapshot as JSON. Generate docs. Assert in CI that expected routes exist.


Security First

  • developmentOnly: true (default) — Inspector is off in production
  • Sensitive data redactionpassword, secret, token are redacted
  • Explicit opt-in — Production use requires developmentOnly: false and enableInspector: true

Extend It

Register Gateway and Discovery for service mesh overview:

import { InspectorRuntime } from '@hazeljs/inspector';

InspectorRuntime.registerGateway(gateway);
InspectorRuntime.registerDiscovery(discovery);
Enter fullscreen mode Exit fullscreen mode

Or add custom plugins to expose your own metadata. The plugin registry is open.


The Bottom Line

You shouldn't have to grep, guess, or dig through code to understand your own application. HazelJS Inspector gives you that clarity—in one line, in seconds.

Try it. You'll feel the difference.


Get Started

If this made your dev life easier, consider giving the repo a ⭐. It helps others discover it—and it means a lot to the folks building it.


Apache-2.0 License

Top comments (0)