Temporal
Run a local Temporal server, with its Web UI and namespaces, for your workflow workers.
On this page
Runs Temporal 1 · macOS and Linux · registry page ↗
Run a Temporal server for your workflows and workers, with its Web UI and the namespaces you declare.
This is Temporal’s own dev server, from the Temporal CLI: one binary with the Temporal services, a SQLite store and the Web UI. No JVM, no Docker, no database to set up.
A server
Section titled “A server”module temporal "flows" { version = "1.1" port = 7233 ui_port = 8233
namespace "orders" {}}Declare port: it gives the server its address, which doze url prints and
an app references.
doze url flows# flows.shop.doze:7233app "worker" { run = "go run ./cmd/worker" env = { TEMPORAL_ADDRESS = module.flows.address }}The Web UI listens on ui_port; headless = true turns it off.
It stays up
Section titled “It stays up”Temporal does not sleep. doze runs the server itself rather than waking it on
a connection, and workers long-poll it all the time anyway, so it runs while
the stack is up. A sleep duration on it is an error (sleep = "never" is allowed and changes nothing). See
Sleep and wake.
Reference
Section titled “Reference”A local Temporal dev server: a single pure-Go binary bundling the Temporal services, a SQLite store, and the Web UI, with no JVM or Docker. Supervised and always-on (workers long-poll it); connect via TEMPORAL_ADDRESS.
Every field at once
Section titled “Every field at once”module temporal "dev" { version = "1.1" port = 7233 ui_port = 8233
namespace "orders" {} namespace "billing" {}}Versions you can declare
Section titled “Versions you can declare”The version = you write is the engine’s own version. Declare a series and
doze pins its newest published build, or declare an exact build. Either way it
is fetched, verified and pinned in doze.lock, so it never moves on its own.
version = |
pins (today) | exact builds |
|---|---|---|
1.0 |
1.0.0 |
1 |
1.1 |
1.1.2 |
3 |
1.2 |
1.2.0 |
1 |
1.3 |
1.3.0 |
1 |
1.4 |
1.4.1 |
2 |
1.5 |
1.5.1 |
2 |
1.6 |
1.6.2 |
3 |
1.7 |
1.7.3 |
4 |
1.8 |
1.8.2 |
3 |
Every exact build, per series
1.0: 1.0.0
1.1: 1.1.2 · 1.1.1 · 1.1.0
1.2: 1.2.0
1.3: 1.3.0
1.4: 1.4.1 · 1.4.0
1.5: 1.5.1 · 1.5.0
1.6: 1.6.2 · 1.6.1 · 1.6.0
1.7: 1.7.3 · 1.7.2 · 1.7.1 · 1.7.0
1.8: 1.8.2 · 1.8.1 · 1.8.0
Fields
Section titled “Fields”| Field | Type | Default | Description |
|---|---|---|---|
version |
string | — | temporal CLI version Required. |
port |
number | 7233 |
frontend gRPC port |
ui_port |
number | 8233 |
Web UI port |
headless |
bool | false |
disable the Web UI |
Every module block also takes doze’s own fields: port, listen, sleep,
after, enabled, routes, count and for_each
(doze.hcl reference).
Nested blocks
Section titled “Nested blocks”namespace "<name>" { … } — a namespace to create (repeatable; label = name; retention, description)
The module does not list this block’s fields yet.
restart { … } — supervisor restart policy (policy, backoff, max_retries)
The module does not list this block’s fields yet.
Module releases
Section titled “Module releases”The releases of the module that provide this engine. doze picks the newest
one that fits your doze and your version =, and pins it in doze.lock;
you never write these. Older releases stay available for pinned lockfiles.
| Release | Engine versions | Platforms | |
|---|---|---|---|
0.2.2 |
1 | 3 | stable |
0.2.1 |
1 | 3 |
Signed data: index.yaml ↗ · meta.yaml ↗