https://github.com/studnicky/dagonizer
TypeScript DAG framework for orchestrating work as a directed acyclic graph of typed nodes ⦿ State machine lifecycle ⦿ Node Observability ⦿ Orchestrated by a central authority
https://github.com/studnicky/dagonizer
agent-framework ai-agent checkpoint dag deterministic-resume esm fsm json-ld llm-orchestration node24 ontology orchestration provenance rag rdf sparql state-machine tool-use typescript workflow
Last synced: 3 days ago
JSON representation
TypeScript DAG framework for orchestrating work as a directed acyclic graph of typed nodes ⦿ State machine lifecycle ⦿ Node Observability ⦿ Orchestrated by a central authority
- Host: GitHub
- URL: https://github.com/studnicky/dagonizer
- Owner: Studnicky
- License: mit
- Created: 2026-05-13T19:39:27.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-18T03:27:44.000Z (11 days ago)
- Last Synced: 2026-06-18T04:24:21.329Z (10 days ago)
- Topics: agent-framework, ai-agent, checkpoint, dag, deterministic-resume, esm, fsm, json-ld, llm-orchestration, node24, ontology, orchestration, provenance, rag, rdf, sparql, state-machine, tool-use, typescript, workflow
- Language: TypeScript
- Homepage: https://studnicky.github.io/Dagonizer/
- Size: 7.93 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# @studnicky/dagonizer
> ⦿ DAG + FSM architecture framework for TypeScript: type-safe nodes, abortable execution, deterministic resume, and JSON-LD canonical wire format.
## Documentation
The full documentation is published at **https://studnicky.github.io/Dagonizer/**.
- [Getting Started](https://studnicky.github.io/Dagonizer/getting-started)
- [Architecture](https://studnicky.github.io/Dagonizer/architecture): DAG, Node, Placement kinds
- [Concepts](https://studnicky.github.io/Dagonizer/concepts): state lifecycle, placement routing, fan-out
- [DAGBuilder](https://studnicky.github.io/Dagonizer/guide/builder): fluent authoring API
- [Lifecycle / FSM](https://studnicky.github.io/Dagonizer/reference/lifecycle): DAGLifecycleMachine, state transitions
- [Cancellation & Retry](https://studnicky.github.io/Dagonizer/guide/cancellation): abort signals, deadlines, backoff strategies
- [Checkpoint / Resume](https://studnicky.github.io/Dagonizer/guide/checkpoint): deterministic pause and resume
- [Schema & JSON-LD](https://studnicky.github.io/Dagonizer/guide/schema): JSON Schema validation, canonical wire format
- [The Archivist](https://studnicky.github.io/Dagonizer/examples/the-archivist): in-browser demo running on Dagonizer
## Requirements
Node.js >= 24 (matches `engines.node` in `package.json`).
## Plugin ecosystem (v0.10.0+)
Dagonizer ships as a workspace of independently versioned plugins:
| Tier | Packages |
|---|---|
| **Adapters** (LLM backends) | `@studnicky/dagonizer-adapter-{anthropic,gemini-api,gemini-nano,ollama,web-llm}` |
| **Embedders** (vector backends) | `@studnicky/dagonizer-embedder-{gemini-api,mistral,ollama,tensorflow,transformers,web-llm}` |
| **Tools** (concrete) | `@studnicky/dagonizer-tool-{openlibrary,googlebooks,wikipedia}` |
| **Patterns** (abstract bases consumers extend) | `@studnicky/dagonizer-patterns-{rag,graph,flow}` |
Install only what you use. The main `@studnicky/dagonizer` package exposes three stable contract subpaths every plugin builds on: `./adapter`, `./patterns`, `./tool`. See the [plugins guide](https://studnicky.github.io/Dagonizer/guide/plugins) for the full story.
## Install
```bash
npm install @studnicky/dagonizer
# plus any plugins you want, for example:
npm install @studnicky/dagonizer-adapter-anthropic @studnicky/dagonizer-patterns-rag
```
The package is also mirrored to GitHub Packages as `@studnicky/dagonizer`:
```bash
echo '@studnicky:registry=https://npm.pkg.github.com' >> .npmrc
npm install @studnicky/dagonizer
```
## License
MIT. See [LICENSE](./LICENSE).
## Changelog
See [CHANGELOG.md](./CHANGELOG.md) and the [GitHub releases](https://github.com/Studnicky/Dagonizer/releases).
---
## Why "Dagonizer"
The name compresses the three ideas the project is built on.
**The structure — a DAG.** The engine executes a [**D**irected **A**cyclic **G**raph][dag]: steps joined by forward-only edges, with no cycles, so the steps always admit a well-defined execution order. Engineers compose DAGs constantly — build graphs, task schedulers, spreadsheet recalculation, linker symbol resolution, and now agent tool-call chains — often without naming the structure as such. Dagonizer makes the DAG the explicit, type-safe unit of composition.
**The role — an orchestrator.** In H. P. Lovecraft's fiction, [Dagon][dagon] is the primordial deity that presides over the submerged multitudes of the Deep Ones — first evoked in the 1919 short story of the same name. The image fits an engine whose job is to marshal many small autonomous workers — LLM agents, ETL stages — through one coordinated flow. The workers are the multitude; Dagonizer is what directs them.
**The shape — ports and adapters.** Backends plug into Dagonizer through adapter contracts — `LlmAdapterInterface`, `StoreInterface`, `ClockProviderInterface`, and the rest — never through callbacks or function-passing. That is the [hexagonal "ports and adapters" architecture][hex] described by Alistair Cockburn: capabilities snap together at the boundary like interchangeable parts, and the core stays closed to modification.
Read together, **Dagonizer is "the orchestrator of the DAGs."** Spoken aloud it also resolves to *dag-on-eyes-er* — a deliberate nod to the [Eye of Dagon][eye], and to a logo that is meant to be just slightly unsettling.
[dag]: https://en.wikipedia.org/wiki/Directed_acyclic_graph
[dagon]: https://en.wikipedia.org/wiki/Dagon_%28short_story%29
[hex]: https://alistair.cockburn.us/hexagonal-architecture
[eye]: https://runescape.wiki/w/Eye_of_Dagon
