temporalite-archived
temporalite-archived copied to clipboard
An experimental distribution of Temporal that runs as a single process
Temporalite
⚠️ 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
Why
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
Getting Started
Download and Start Temporal Server Locally
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 CLI
Use Temporal's command line tool tctl
to interact with the local Temporalite server.
tctl namespace list
tctl workflow list
Configuration
Use the help flag to see all available options:
temporalite start -h
Namespace Registration
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!
Persistence Modes
File on Disk
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
Ephemeral
An in-memory mode is also available. Note that all data will be lost on each restart.
temporalite start --ephemeral
Web UI
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