{"id":50175515,"url":"https://github.com/studnicky/dagonizer","last_synced_at":"2026-06-26T02:00:56.100Z","repository":{"id":358707497,"uuid":"1238074710","full_name":"Studnicky/Dagonizer","owner":"Studnicky","description":"TypeScript DAG framework for orchestrating work as a directed acyclic graph of typed nodes ⦿ State machine lifecycle ⦿ Node Observability ⦿ Orchestrated by a central authority","archived":false,"fork":false,"pushed_at":"2026-06-18T03:27:44.000Z","size":8314,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-18T04:24:21.329Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://studnicky.github.io/Dagonizer/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Studnicky.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-13T19:39:27.000Z","updated_at":"2026-06-18T03:15:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Studnicky/Dagonizer","commit_stats":null,"previous_names":["studnicky/dagonizer"],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/Studnicky/Dagonizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Studnicky%2FDagonizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Studnicky%2FDagonizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Studnicky%2FDagonizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Studnicky%2FDagonizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Studnicky","download_url":"https://codeload.github.com/Studnicky/Dagonizer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Studnicky%2FDagonizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34799570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2026-05-25T03:05:19.555Z","updated_at":"2026-06-26T02:00:56.087Z","avatar_url":"https://github.com/Studnicky.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://studnicky.github.io/Dagonizer/\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/Studnicky/Dagonizer/main/docs/public/og-image.png\" alt=\"Dagonizer: Omniscient orchestration for directed acyclic graphs\" width=\"1200\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n# @studnicky/dagonizer\n\n\u003e ⦿ DAG + FSM architecture framework for TypeScript: type-safe nodes, abortable execution, deterministic resume, and JSON-LD canonical wire format.\n\n## Documentation\n\nThe full documentation is published at **https://studnicky.github.io/Dagonizer/**.\n\n- [Getting Started](https://studnicky.github.io/Dagonizer/getting-started)\n- [Architecture](https://studnicky.github.io/Dagonizer/architecture): DAG, Node, Placement kinds\n- [Concepts](https://studnicky.github.io/Dagonizer/concepts): state lifecycle, placement routing, fan-out\n- [DAGBuilder](https://studnicky.github.io/Dagonizer/guide/builder): fluent authoring API\n- [Lifecycle / FSM](https://studnicky.github.io/Dagonizer/reference/lifecycle): DAGLifecycleMachine, state transitions\n- [Cancellation \u0026 Retry](https://studnicky.github.io/Dagonizer/guide/cancellation): abort signals, deadlines, backoff strategies\n- [Checkpoint / Resume](https://studnicky.github.io/Dagonizer/guide/checkpoint): deterministic pause and resume\n- [Schema \u0026 JSON-LD](https://studnicky.github.io/Dagonizer/guide/schema): JSON Schema validation, canonical wire format\n- [The Archivist](https://studnicky.github.io/Dagonizer/examples/the-archivist): in-browser demo running on Dagonizer\n\n## Requirements\n\nNode.js \u003e= 24 (matches `engines.node` in `package.json`).\n\n## Plugin ecosystem (v0.10.0+)\n\nDagonizer ships as a workspace of independently versioned plugins:\n\n| Tier | Packages |\n|---|---|\n| **Adapters** (LLM backends) | `@studnicky/dagonizer-adapter-{anthropic,gemini-api,gemini-nano,ollama,web-llm}` |\n| **Embedders** (vector backends) | `@studnicky/dagonizer-embedder-{gemini-api,mistral,ollama,tensorflow,transformers,web-llm}` |\n| **Tools** (concrete) | `@studnicky/dagonizer-tool-{openlibrary,googlebooks,wikipedia}` |\n| **Patterns** (abstract bases consumers extend) | `@studnicky/dagonizer-patterns-{rag,graph,flow}` |\n\nInstall 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.\n\n## Install\n\n```bash\nnpm install @studnicky/dagonizer\n# plus any plugins you want, for example:\nnpm install @studnicky/dagonizer-adapter-anthropic @studnicky/dagonizer-patterns-rag\n```\n\nThe package is also mirrored to GitHub Packages as `@studnicky/dagonizer`:\n\n```bash\necho '@studnicky:registry=https://npm.pkg.github.com' \u003e\u003e .npmrc\nnpm install @studnicky/dagonizer\n```\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n\n## Changelog\n\nSee [CHANGELOG.md](./CHANGELOG.md) and the [GitHub releases](https://github.com/Studnicky/Dagonizer/releases).\n\n---\n\n## Why \"Dagonizer\"\n\nThe name compresses the three ideas the project is built on.\n\n**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.\n\n**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.\n\n**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.\n\nRead 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.\n\n[dag]: https://en.wikipedia.org/wiki/Directed_acyclic_graph\n[dagon]: https://en.wikipedia.org/wiki/Dagon_%28short_story%29\n[hex]: https://alistair.cockburn.us/hexagonal-architecture\n[eye]: https://runescape.wiki/w/Eye_of_Dagon\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudnicky%2Fdagonizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstudnicky%2Fdagonizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudnicky%2Fdagonizer/lists"}