<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Reference on Dwarf</title><link>https://docs.dwarf.run/reference/</link><description>Recent content in Reference on Dwarf</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://docs.dwarf.run/reference/index.xml" rel="self" type="application/rss+xml"/><item><title>Glossary</title><link>https://docs.dwarf.run/reference/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.dwarf.run/reference/glossary/</guid><description>&lt;h1 id="glossary"&gt;Glossary&lt;a class="anchor" href="#glossary" aria-label="Anchor" aria-hidden="true"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;For everyone.&lt;/strong&gt; Each term in one sentence, with a link to where it is explained in full.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Archive.&lt;/strong&gt; Where a closed flow moves about a minute after it closes, readable by its key and listed by
&lt;code&gt;ListClosed&lt;/code&gt; until the retention drops it. &lt;a href="https://docs.dwarf.run/building-workflows/flows/#retention"&gt;Driving Flows&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Baggage.&lt;/strong&gt; Context your application attaches to a flow, such as the acting user, that every task can
read but no task can change. &lt;a href="https://docs.dwarf.run/building-workflows/tasks/#baggage-host-context"&gt;Writing Tasks&lt;/a&gt;&lt;/p&gt;</description></item><item><title>FAQ</title><link>https://docs.dwarf.run/reference/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.dwarf.run/reference/faq/</guid><description>&lt;h1 id="faq"&gt;FAQ&lt;a class="anchor" href="#faq" aria-label="Anchor" aria-hidden="true"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;For everyone.&lt;/strong&gt; Short answers, each with a link to the full explanation.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="does-dwarf-need-its-own-server"&gt;Does Dwarf Need Its Own Server?&lt;a class="anchor" href="#does-dwarf-need-its-own-server" aria-label="Anchor" aria-hidden="true"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;No. Dwarf is a library that runs inside your application. The only infrastructure is the SQL database it
stores flows in, and replicas of your application coordinate through that database. See
&lt;a href="https://docs.dwarf.run/how-dwarf-works/"&gt;How Dwarf Works&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="do-tasks-have-to-be-written-in-go"&gt;Do Tasks Have to Be Written in Go?&lt;a class="anchor" href="#do-tasks-have-to-be-written-in-go" aria-label="Anchor" aria-hidden="true"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;No. The engine and its host are Go, but the host can reach tasks written in any language, for example
over HTTP with JSON in and out. See &lt;a href="https://docs.dwarf.run/building-workflows/other-languages/"&gt;Tasks in Other Languages&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Coming from Temporal or LangGraph</title><link>https://docs.dwarf.run/reference/coming-from/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.dwarf.run/reference/coming-from/</guid><description>&lt;h1 id="coming-from-temporal-or-langgraph"&gt;Coming from Temporal or LangGraph&lt;a class="anchor" href="#coming-from-temporal-or-langgraph" aria-label="Anchor" aria-hidden="true"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;For developers&lt;/strong&gt; who know Temporal or LangGraph and want to find their footing in Dwarf quickly.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="from-temporal"&gt;From Temporal&lt;a class="anchor" href="#from-temporal" aria-label="Anchor" aria-hidden="true"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Temporal&lt;/th&gt;
 &lt;th&gt;Dwarf&lt;/th&gt;
 &lt;th&gt;Notes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Workflow definition&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/graphs/"&gt;Graph&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;A declarative graph of tasks and transitions instead of imperative code, so nothing is replayed and there are no determinism constraints.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Workflow execution&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/concepts/#flow"&gt;Flow&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Activity&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/tasks/"&gt;Task&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;A plain function, reached by URL through your host.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Worker&lt;/td&gt;
 &lt;td&gt;Your application, with the engine embedded&lt;/td&gt;
 &lt;td&gt;There is no separate Temporal Service to run.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Task queue&lt;/td&gt;
 &lt;td&gt;Your host&lt;/td&gt;
 &lt;td&gt;The host decides how each task URL is reached.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Retry policy&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/tasks/#handling-transient-failures"&gt;&lt;code&gt;f.Retry&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Called by the task, which decides what is retryable.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Timer&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/tasks/#sleep"&gt;&lt;code&gt;f.Sleep&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Signal&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/flows/#resume"&gt;&lt;code&gt;Resume&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Delivers input to a task waiting in &lt;a href="https://docs.dwarf.run/building-workflows/tasks/#interrupt-human-in-the-loop"&gt;&lt;code&gt;f.Interrupt&lt;/code&gt;&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Query&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/flows/#inspecting"&gt;&lt;code&gt;Snapshot&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Reads a flow&amp;rsquo;s status and state.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Child workflow&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/fan-out-and-subgraphs/#subgraphs"&gt;Subgraph&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Continue-as-new&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/flows/#continue-a-flow"&gt;&lt;code&gt;Continue&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Starts a new flow from a completed flow&amp;rsquo;s final state. Your application keeps the chain of flow keys.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Versioning and patching&lt;/td&gt;
 &lt;td&gt;Frozen graphs&lt;/td&gt;
 &lt;td&gt;Each flow keeps the graph it started with. See &lt;a href="https://docs.dwarf.run/operating/upgrading/#the-obligation-that-outlives-every-deploy-graph-evolution"&gt;Graph Evolution&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Visibility and search attributes&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/flows/#listing-flows"&gt;&lt;code&gt;ListOpen&lt;/code&gt; and &lt;code&gt;ListClosed&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Filter by status, workflow, task, fairness key, time and free text. Closed flows are listed from the archive, kept for the &lt;a href="https://docs.dwarf.run/building-workflows/flows/#retention"&gt;retention&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Task queue priority and fairness&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://docs.dwarf.run/building-workflows/scheduling/"&gt;Priority and fairness keys&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The main shift is where orchestration logic lives. In Temporal it is code that the server replays; in
Dwarf it is a graph, with loops, conditions, fan-out and computed jumps, and anything more complex goes in
a task, which is plain code. See &lt;a href="https://docs.dwarf.run/building-workflows/graphs/"&gt;Building Graphs&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>