![]() |
VOOZH | about |
dotnet add package Ananke.Design --version 0.8.5
NuGet\Install-Package Ananke.Design -Version 0.8.5
<PackageReference Include="Ananke.Design" Version="0.8.5" />
<PackageVersion Include="Ananke.Design" Version="0.8.5" />Directory.Packages.props
<PackageReference Include="Ananke.Design" />Project file
paket add Ananke.Design --version 0.8.5
#r "nuget: Ananke.Design, 0.8.5"
#:package Ananke.Design@0.8.5
#addin nuget:?package=Ananke.Design&version=0.8.5Install as a Cake Addin
#tool nuget:?package=Ananke.Design&version=0.8.5Install as a Cake Tool
Design-time tooling for Ananke — YAML manifest import, workflow topology DSL, model resolution, and Mermaid diagram export. Define pipeline structure declaratively; bind job implementations in code.
dotnet add package Ananke.Design
Ananke.Design separates what the workflow looks like (graph structure, model aliases, system prompts) from what each job does (C# code). This enables design-first workflows, LLM-generated topologies, and external configuration — while keeping job implementations type-safe and testable.
Parse a topology from text, bind implementations, build a runnable workflow:
using Ananke.Design;
var scaffold = WorkflowScaffold.Parse<MyState>("etl-pipeline", """
plan -> fork(fetch_a, fetch_b)
fetch_a -> transform_a
fetch_b -> transform_b
join(transform_a, transform_b) -> combine
combine -> End
""");
var workflow = scaffold
.Bind("plan", async (state, ct) => state with { Step = "planned" })
.Bind("fetch_a", fetchAJob)
.Bind("fetch_b", fetchBJob)
.Bind("transform_a", async (state, ct) => state)
.Bind("transform_b", async (state, ct) => state)
.Bind("combine", async (state, ct) => state)
.BindMerge("combine", branches => branches[0])
.Build();
var result = await workflow.RunAsync(initialState);
Load a full manifest with model definitions, agent jobs, and connections from an .ananke.yml file:
name: research-pipeline
models:
fast:
provider: openai
model: gpt-4.1-mini
local:
provider: openai
model: llama3.2
endpoint: http://localhost:11434/v1
jobs:
plan:
type: agent
model: fast
system_prompt: You are a research planner.
search:
type: agent
model: local
synthesize:
type: code
connections:
- plan -> fork(search_web, search_db)
- join(search_web, search_db) -> synthesize
- synthesize -> End
var manifest = WorkflowManifest.Load("pipeline.ananke.yml");
var models = new ModelResolver()
.Register("openai", "OpenAI", OpenAIChatAgentModel.Create)
.Resolve(manifest, key => config[key]);
| Pattern | Example | Equivalent fluent API |
|---|---|---|
| Direct | a -> b |
.Then("a", "b") |
| Terminal | a -> End |
.Then("a", Workflow.End) |
| Fork | a -> fork(b, c) |
.Then("a", Workflow.Fork("b", "c")) |
| Fork (best-effort) | a -> fork(b, c, mode: best-effort) |
.Then("a", Workflow.Fork("b", "c", ForkMode.BestEffort)) |
| Join | join(a, b) -> c |
.Join(["a", "b"], "c", merge) |
| Router | a -> router(b, c, End) |
.Then("a", Workflow.Decide(...)) |
| SubFlow | subflow(name) |
.SubFlow("name", inner, mapIn, mapOut) |
| Interrupt | interrupt(name) |
.InterruptBefore("name") |
Full syntax reference: docs/workflow-dsl.md
| Type | Description |
|---|---|
WorkflowScaffold<TState> |
Parse DSL topology, bind jobs/merges/routers, build a Workflow<TState> |
WorkflowManifest |
Parse .ananke.yml files — models, jobs, connections |
ModelResolver |
Resolve manifest model aliases to live IAgentModel instances via registered provider factories |
WorkflowDiagramExtensions |
.ToMermaid() export for any validated workflow graph |
AgentTextResponse |
Default structured response type for agent jobs that return plain text |
WorkflowDslParser |
Internal DSL parser — direct, fork, join, router, subflow, interrupt |
var definition = workflow.Validate();
var mermaid = definition.ToMermaid();
Console.WriteLine(mermaid);
Outputs:
graph TD
_plan["▶ plan"]
_fetch_a["fetch_a"]
_fetch_b["fetch_b"]
_combine["combine"]
_end(["End"])
_plan -->|fork| _fetch_a
_plan -->|fork| _fetch_b
_fetch_a --> _combine
_fetch_b --> _combine
_combine --> _end
| Package | What it adds |
|---|---|
Ananke.Orchestration |
Workflow engine, agent jobs, tool calling, streaming |
Ananke.Orchestration.OpenAI |
OpenAI / Ollama / Azure OpenAI IStreamingAgentModel provider |
Ananke.Orchestration.Anthropic |
Anthropic / Claude IStreamingAgentModel provider |
Ananke.MCP |
Expose workflows and tools as MCP server capabilities |
Ananke |
Meta-package — includes Orchestration + StateMachine + Bridge |
Full docs, demos, and architecture: github.com/sevensamurai/Ananke
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 3 NuGet packages that depend on Ananke.Design:
| Package | Downloads |
|---|---|
|
Ananke.Organics
Organic mesh architecture for Ananke — self-organizing workflow ecosystems with cell division, heartbeat sensing, triage routing, domain-affine memory, and evolutionary division policies. |
|
|
Ananke.Federation
Federation hub for Ananke — deploy, monitor, and supervise agentic workflows across cloud platforms (Vertex AI, Claude Managed Agents) with organic mesh coordination. |
|
|
Ananke.Roles
Role catalog, manifest generation, and studio host wiring for persona-driven Ananke applications. |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.8.5 | 170 | 6/15/2026 |
| 0.8.4 | 210 | 5/29/2026 |
| 0.8.3 | 175 | 5/17/2026 |
| 0.8.2 | 176 | 5/15/2026 |
| 0.8.1 | 185 | 5/9/2026 |
| 0.8.0 | 187 | 5/9/2026 |
| 0.7.2 | 117 | 4/12/2026 |
| 0.7.1 | 103 | 4/11/2026 |
| 0.7.0 | 105 | 4/11/2026 |
| 0.6.0 | 109 | 4/10/2026 |
| 0.5.0 | 113 | 4/5/2026 |
| 0.4.0 | 106 | 4/3/2026 |
| 0.3.0 | 117 | 3/15/2026 |
| 0.2.0 | 111 | 3/6/2026 |
| 0.1.0 | 108 | 3/3/2026 |