Mostlylucid.Ephemeral.Atoms.Molecules
2.5.0
dotnet add package Mostlylucid.Ephemeral.Atoms.Molecules --version 2.5.0
NuGet\Install-Package Mostlylucid.Ephemeral.Atoms.Molecules -Version 2.5.0
<PackageReference Include="Mostlylucid.Ephemeral.Atoms.Molecules" Version="2.5.0" />
<PackageVersion Include="Mostlylucid.Ephemeral.Atoms.Molecules" Version="2.5.0" />
<PackageReference Include="Mostlylucid.Ephemeral.Atoms.Molecules" />
paket add Mostlylucid.Ephemeral.Atoms.Molecules --version 2.5.0
#r "nuget: Mostlylucid.Ephemeral.Atoms.Molecules, 2.5.0"
#:package Mostlylucid.Ephemeral.Atoms.Molecules@2.5.0
#addin nuget:?package=Mostlylucid.Ephemeral.Atoms.Molecules&version=2.5.0
#tool nuget:?package=Mostlylucid.Ephemeral.Atoms.Molecules&version=2.5.0
Mostlylucid.Ephemeral.Atoms.Molecules
Reusable Molecule blueprints and atom-trigger helpers for coordinating multi-atom workflows.
Molecules
A molecule is a blueprint: signal → orchestrated atoms. Use MoleculeBlueprintBuilder to describe the atoms (steps) you
want to run, then feed the blueprint into MoleculeRunner. The runner listens for signals matching your trigger
pattern, creates a MoleculeContext, and executes each step in order while sharing the same SignalSink and service
provider. Once created you can still call blueprint.AddAtom(...) or blueprint.RemoveAtoms(...) to tweak the workflow
before the next trigger, enabling dynamic post-composition.
var sink = new SignalSink();
var blueprint = new MoleculeBlueprintBuilder("OrderFulfillment", "order.placed")
.AddAtom(async (ctx, ct) =>
{
await paymentCoordinator.EnqueueAsync(new Payment(ctx.TriggerSignal.Key!), ct);
ctx.Raise("order.payment.complete", ctx.TriggerSignal.Key);
})
.AddAtom(async (ctx, ct) =>
{
await inventoryCoordinator.EnqueueAsync(new InventoryReservation(ctx.TriggerSignal.Key!), ct);
})
.Build();
await using var runner = new MoleculeRunner(sink, new[] { blueprint }, services);
sink.Raise("order.placed", key: "order-123");
You get events (MoleculeStarted, MoleculeCompleted, MoleculeFailed) to observe every workflow run.
Atoms that trigger atoms
AtomTrigger listens for a pattern and invokes your callback with the signal. The callback can enqueue work on another
coordinator, start new atoms, or raise more signals.
using var trigger = new AtomTrigger(sink, "order.payment.complete", async (signal, ct) =>
{
await notificationCoordinator.EnqueueAsync(new Notification(signal.Key!), ct);
});
This keeps the entire orchestrable workflow inside the signal ecosystem without introducing additional wiring.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- mostlylucid.ephemeral (>= 2.5.0)
-
net8.0
- mostlylucid.ephemeral (>= 2.5.0)
-
net9.0
- mostlylucid.ephemeral (>= 2.5.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Mostlylucid.Ephemeral.Atoms.Molecules:
| Package | Downloads |
|---|---|
|
mostlylucid.ephemeral.complete
Meta-package that references all Mostlylucid.Ephemeral packages - bounded async execution with signals, atoms, and patterns. Install this single package to get everything. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.5.0 | 70 | 5/3/2026 |
| 2.4.0 | 89 | 4/17/2026 |
| 2.3.2 | 117 | 1/9/2026 |
| 2.3.1 | 112 | 1/9/2026 |
| 2.3.1-alpha0 | 112 | 1/9/2026 |
| 2.3.0 | 1,104 | 1/8/2026 |
| 2.3.0-alpha1 | 111 | 1/8/2026 |
| 2.1.0 | 109 | 1/8/2026 |
| 2.1.0-preview | 107 | 1/8/2026 |
| 2.0.1 | 113 | 1/8/2026 |
| 2.0.0 | 151 | 1/8/2026 |
| 2.0.0-alpha1 | 104 | 1/8/2026 |
| 2.0.0-alpha0 | 110 | 1/8/2026 |
| 1.7.1 | 430 | 12/11/2025 |
| 1.6.8 | 446 | 12/9/2025 |
| 1.6.7 | 440 | 12/9/2025 |
| 1.6.6 | 445 | 12/9/2025 |
| 1.6.5 | 444 | 12/9/2025 |
| 1.6.0 | 426 | 12/8/2025 |
| 1.5.0 | 431 | 12/8/2025 |