⚠️ This project is experimental and not suitable for production use.⚠️
Temporalite is a distribution of Temporal that runs as a single process with zero runtime dependencies.
Persistence to disk and an in-memory mode are both supported via SQLite.
Check out this video for a brief introduction and demo: youtu.be/Hz7ZZzafBoE [16:13] -- demo starts at 11:28
The primary goal of Temporalite is to make it simple and fast to run Temporal locally or in testing environments.
Features that align with this goal:
- Easy setup and teardown
- Fast startup time
- Minimal resource overhead: no dependencies on a container runtime or database server
- Support for Windows, Linux, and macOS
- Ships with a web interface
Build from source using go install:
Note: Go 1.18 or greater is currently required.
go install github.com/temporalio/temporalite/cmd/temporalite@latest
Start Temporal server:
temporalite start --namespace default
At this point you should have a server running on localhost:7233
and a web interface at http://localhost:8233.
Use Temporal's command line tool tctl
to interact with the local Temporalite server.
tctl namespace list
tctl workflow list
Use the help flag to see all available options:
temporalite start -h
Namespaces can be pre-registered at startup so they're available to use right away:
temporalite start --namespace foo --namespace bar
Registering namespaces the old-fashioned way via tctl --namespace foo namespace register
works too!
By default temporalite
persists state to a file in the current user's config directory. This path may be overridden:
temporalite start -f my_test.db
An in-memory mode is also available. Note that all data will be lost on each restart.
temporalite start --ephemeral
The temporalite
binary can be compiled to omit static assets for installations that will never use the UI:
go install -tags headless github.com/temporalio/temporalite/cmd/temporalite@latest
The UI can also be disabled via a runtime flag:
temporalite start --headless
- When consuming Temporalite as a library in go mod, you may want to replace grpc-gateway with a fork to address URL escaping issue in UI. See temporalio#118