AStack
A composable framework for building AI applications, on a monadic flow-based paradigm.
In AStack, everything — a tool, a model provider, an agent — is a component you snap together. It deliberately breaks with the control-flow orthodoxy of most agent frameworks: an LLM is a stateless generator, not a program to be “managed”, so AStack acts as an interpreter of model output and lets data flow between components instead of scripting the model step by step.
Underneath, that is Flow-Based Programming with monadic composition, executed
over Observable (ReactiveX) streams — and it is built directly on HLang’s
reactive runtime, so an AStack component literally is an HLang TransformNode
wired through RxJS-backed ports.
- Data-flow, not control-flow — components compose through port connections; lock-free concurrency falls out of the design, and each route’s topology is built once and reused rather than re-sorted on every run.
- A real component library — a tool-calling
Agent, a streaming agent, and an experimental Recursive Language Model agent that runs LLM-generated orchestration code inside a sandboxed VM. - One tool interface, four ways in — author a tool, compose a tool set, wrap any component as a tool, or bridge a Model Context Protocol server.
- Built to ship — the examples run the same pipelines through Playwright browser automation, multi-step deep research, and real cloud targets (AWS Bedrock, Google Vertex).
Compile-time type-safe TypeScript, MIT, a pnpm + Turborepo monorepo of four packages. AStack is where HLang’s monadic flow-based foundation is aimed squarely at AI applications.

Comments