Agent OS — durable agents in your TypeScript backend. Start with Meridian →
HazelJS LogoHazelJS

Comparison

HazelJS vs LangChain

LangChain composes LLM pipelines. HazelJS Agent OS runs those agents inside a production TypeScript backend — DNA, crash-safe HITL, Skillgate, local apply, same DI as your APIs.

Updated August 7, 2026

HazelJS vs LangChain

TL;DR

  • LangChain is an AI orchestration library — chains, tools, retrievers, and a huge integration ecosystem (Python & JS).
  • HazelJS Agent OS runs durable agents inside a TypeScript backend: DNA, crash-safe HITL, Skillgate, local apply — same DI as your APIs.
  • Use LangChain when you need its ecosystem breadth or you already own the HTTP layer.
  • Use HazelJS when you want one codebase for APIs + durable agents without Nest/Express glue — clone Meridian.

Who this is for

Read this if you:

  • Are choosing between LangChain.js and a TypeScript AI backend framework
  • Already glue LangChain into Express/Nest and want less wiring
  • Need production agents with auth, caching, and observability in the same app

Stay on LangChain if you:

  • Are Python-first or depend on LangChain Hub / niche integrations HazelJS does not ship
  • Only need research notebooks or scripts — not a long-lived API service
  • Standardized on LangSmith and do not want another observability story yet

What LangChain solves (and does not)

LangChain excels at composing LLM pipelines: prompts, retrievers, tools, and agents. Production still means you supply:

  • An HTTP server (Express, Nest, Fastify, …)
  • Auth, rate limits, multi-tenant config
  • Deployment, health checks, resilience
  • How tool calls inherit user identity from the request

HazelJS treats those as first-class: controllers and agents share the same DI container.

Side-by-side

AspectLangChainHazelJS Agent OS
ScopeAI / agent libraryDurable agents inside your TypeScript backend
Crash-safe HITLSession hacks or external queuesDurable AgentRun suspend/resume across restarts
PackagingPrompts in repo / vendor consoleDNA + Store — version like libraries
REST as toolsHand-rolled tool schemasSkillgate — curated REST, writes need approval
Where it runsSeparate from your HTTP appSame DI process as your APIs
Teaching pathScattered samplesMeridian

Code: library vs framework

LangChain-style chain (you still need a server around it):

import { ChatOpenAI } from '@langchain/openai';
import { ConcurrentRunnableSequence } from '@langchain/core/runnables';

const model = new ChatOpenAI({ model: 'gpt-4o' });
// Wire retriever, prompt, tools… then mount inside Express/Nest yourself

HazelJS — AI inside the same module as HTTP:

import { Injectable, Controller, Post, Body, HazelModule } from '@hazeljs/core';
import { AIService } from '@hazeljs/ai';

@Injectable()
class AssistService {
  constructor(private ai: AIService) {}

  ask(input: string) {
    return this.ai.hazel
      .prompt('Answer with docs: {{input}}')
      .rag('kb')
      .execute(input);
  }
}

@Controller({ path: '/assist' })
class AssistController {
  constructor(private assist: AssistService) {}

  @Post()
  run(@Body() body: { q: string }) {
    return this.assist.ask(body.q);
  }
}

@HazelModule({
  controllers: [AssistController],
  providers: [AssistService],
})
export class AppModule {}

Decorator agent (no separate executor package):

import { Agent, Tool } from '@hazeljs/agent';

@Agent({
  name: 'researcher',
  systemPrompt: 'Research and cite sources.',
  enableRAG: true,
})
export class ResearchAgent {
  @Tool({
    description: 'Search the knowledge base',
    parameters: [{ name: 'query', type: 'string', required: true }],
  })
  async search(input: { query: string }) {
    return { hits: [] };
  }
}

Decision guide

SituationPrefer
Greenfield TypeScript AI APIHazelJS
Need a specific LangChain integration onlyLangChain (+ any HTTP framework)
Nest/Express already + LangChain painNestJS + LangChain vs HazelJS or migrate AI slice
Durable agent graphs + business workflows + HTTPHazelJS AgentGraph + @hazeljs/flow
Python ML research orgLangChain / LangGraph ecosystem

When LangChain is the better choice

  • Ecosystem plugins and community examples matter more than a unified backend
  • You already invested in LangSmith traces and org playbooks
  • The “app” is a script, notebook, or worker — not a Nest-style service

HazelJS wins when shipping an AI product backend (auth’d APIs, agents, RAG, ops) in TypeScript is the job.

Related

Next steps

  1. Clone Meridian
  2. Agent OS guide
  3. Agent package
  4. GitHub

FAQ

Is HazelJS trying to replace LangChain?
For TypeScript backend products that need HTTP plus durable agents, Agent OS is the cohesive alternative. LangChain remains strong for ecosystem breadth and Python-heavy stacks.
Can I call LangChain from HazelJS?
Yes — any Node library can run inside a HazelJS provider. Most teams prefer @hazeljs/agent and Skillgate to avoid dual paradigms.
What about LangSmith?
HazelJS uses Inspector timelines, OpenTelemetry hooks, and eval/testing packages. If LangSmith is mandatory org-wide, LangChain may still win on process alone.
HCEL vs LCEL?
HCEL is an optional fluent chain DSL for brownfield orchestration. Agent OS (DNA, HITL, Skillgate, apply) is the primary product — not HCEL.

Docs & next steps

Related comparisons

  • NestJS + LangChain vs HazelJS

    Nest + LangChain works but creates two paradigms. HazelJS Agent OS unifies durable agents, DNA, Skillgate, and local apply in the same DI app as your APIs.

  • HazelJS vs LangGraph

    LangGraph is a strong agent graph runtime. HazelJS Agent OS covers durable AgentRun HITL, DNA packaging, Skillgate, local apply, and your API layer without a separate web framework.

  • HazelJS vs Vercel AI SDK

    Vercel AI SDK optimizes streaming UX. HazelJS Agent OS is the backend for durable agents, DNA, Skillgate, and TypeScript APIs — they can complement each other.

← All comparisons