Less than a month ago we hit publish on our first beta. Yesterday we shipped our first alpha. In between: 38 packages built, tested, and released. Here’s the story so far.
February 12: The First Beta
February 12, 2025 — We released the first public beta of . The idea was simple: a Node.js framework that gets out of your way. NestJS-style structure without the weight. Express-level simplicity with decorators, DI, and AI built in from day one.
We didn’t know how it would land. We put out the , . The goal was to see if anyone would actually use it.
They did. Issues, discussions, and early adopters gave us something we couldn’t get from internal dogfooding alone: real feedback under real conditions.
The Sprint: 38 Packages
Between that first beta and yesterday’s alpha, we didn’t slow down.
We went from a small set of modules to 38 packages — each with a clear job, each installable on its own from the and , , and and , . , , . , , , , and more.
That number isn’t bloat. It’s modularity. You don’t get a monolith. You get a stack you compose: pick what you need, leave the rest behind. Same philosophy that made the first beta possible — just a lot more of it.
March 8: Alpha
Yesterday we released our first alpha.
Alpha means: we’re ready for you to try the whole thing. Not just one or two packages — the full ecosystem. Run it. Break it. Tell us what’s missing, what’s confusing, what should change before we lock in APIs and call it stable.
Beta was “here’s something that works.” Alpha is “here’s the stack we’re betting on — help us make it better.”
Below we break down the features that make this alpha what it is — especially the AI, agent, RAG, memory, flow, and guardrails packages.
Features in depth
AI — )
One unified API for multiple LLM providers: OpenAI, Anthropic, Gemini, Cohere, and Ollama. Streaming, function calling, embeddings, and vector search. Switch providers without rewriting your code. Use decorators like @AITask and @AIFunction for declarative AI integration — wire a model to a route or method and get type-safe, streaming responses. No provider lock-in; same interface whether you’re on GPT-4, Claude, or a local Ollama instance.
Agent — )
A production-oriented agent runtime: stateful execution, tool registration and execution, memory integration, and human-in-the-loop approval workflows. The runtime handles the think → act → persist loop, state recovery, tool validation, and a full event bus for observability. Build support bots, research agents, and multi-step automations that can pause for approval and resume safely. Tools are first-class: register them, let the runtime validate and execute them, and optionally require human approval before sensitive actions.
RAG — )
End-to-end RAG pipeline: 11 document loaders (TXT, Markdown, PDF, DOCX, web, YouTube, GitHub, and more), multiple vector stores (in-memory, Pinecone, Qdrant, Weaviate, ChromaDB), GraphRAG for knowledge-graph retrieval, and a built-in memory system (conversation, entity, fact, working memory) with buffer, vector, and hybrid storage. Semantic and hybrid search, auto-summarization, and decorators like @Embeddable and @SemanticSearch for declarative RAG. Ingest from docs, URLs, or code; query with natural language; get answers with sources. See the ( and ( ( (, — Version routing, canary deployments, circuit breakers, service discovery. , — One API for Stripe (and more providers). , , , , — all in the 38, all .
Why This Matters
Four weeks. From first beta to first alpha. 38 packages. One consistent story: a modular, TypeScript-first framework for backend and AI applications.
We’re not just adding features. We’re proving that you can have:
Structure without ceremony
AI and RAG without starting from scratch
Choice without fragmentation — one org, one namespace, one way to compose
That’s the achievement we’re celebrating. Not the number 38 for its own sake, but what it represents: a full, coherent stack that you can adopt piece by piece. Explore the full to see everything that's included.
What’s Next
Alpha is an invitation. We’ll iterate on your feedback, fix bugs, improve docs and examples, and move toward a stable release when the APIs and migration paths feel right.
If you haven’t tried it yet:
npm install @hazeljs/core @hazeljs/ai @hazeljs/agent @hazeljs/rag
Or start with the CLI:
npx @hazeljs/cli new my-app
Docs: ,
GitHub: — all 38 packages
Blog:
Thank you for being part of the journey. From beta to alpha in under a month — and the best is still ahead.
— The HazelJS Team
SOCIAL SHARE CARD GENERATOR