⚠️ Temporal CLI's API is still a subject for changes.⚠️
The Temporal CLI is a command-line interface for running Temporal Server and interacting with Workflows, Activities, Namespaces, and other parts of Temporal.
curl -sSf https://temporal.download/cli.sh | sh
brew install temporal
Download and extract the latest release from GitHub releases.
temporal server start-dev
At this point you should have a server running on localhost:7233
and a web interface at http://localhost:8233.
Run individual commands to interact with the local Temporal server.
temporal operator namespace list
temporal workflow list
Use the help flag to see all available options:
temporal server start-dev -h
Namespaces are pre-registered at startup so they're available to use right away.
By default, the "default" namespace is registered. To customize the pre-registered namespaces, start the server with:
temporal server start-dev --namespace foo --namespace bar
Registering namespaces the old-fashioned way via temporal operator namespace register foo
works too!
By default temporal server start-dev
run in an in-memory mode.
To persist the state to a file use --db-filename
:
temporal server start-dev --db-filename my_test.db
By default the Temporal UI is started with Temporal CLI. The UI can be disabled via a runtime flag:
temporal server start-dev --headless
To build without static UI assets, use the headless
build tag when running go build
.
Some advanced uses require Temporal dynamic configuration values which are usually set via a dynamic configuration file inside the Temporal configuration file. Alternatively, dynamic configuration values can be set via --dynamic-config-value KEY=JSON_VALUE
.
For example, to disable search attribute cache to make created search attributes available for use right away:
temporal server start-dev --dynamic-config-value system.forceSearchAttributesCacheRefreshOnRead=true
Running temporal completion SHELL
will output the related completion SHELL code. See the following
sections for more details for each specific shell / OS and how to enable it.
Add the following to your ~/.zshrc
file:
source <(temporal completion zsh)
or from your terminal run:
echo 'source <(temporal completion zsh)' >> ~/.zshrc
Then run source ~/.zshrc
.
Bash auto-completion relies on bash-completion. Make sure
you follow the instruction here and install the software or
use a package manager to install it like apt install bash-completion
, pacman -S bash-completion
or yum install bash-completion
, etc. For example
on alpine linux:
- apk update
- apk add bash-completion
- source /etc/profile.d/bash_completion.sh
Verify that bash-completion is installed by running type _init_completion
add the following to your .bashrc
file to enable completion for temporal
echo 'source <(temporal completion bash)' >>~/.bashrc
source ~/.bashrc
For macos you can install it via brew brew install bash-completion@2
and add the following line to
your ~/.bashrc
:
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
Verify that bash-completion is installed by running type _init_completion
and add the following to your .bashrc
file to enable completion for temporal
echo 'source <(temporal completion bash)' >> ~/.bashrc
source ~/.bashrc
To compile the source run:
go build -o dist/temporal ./cmd/temporal
To compile the documentation, run:
go build -o dist/temporal-docgen ./cmd/temporal-docgen
To run all tests:
go test ./...
-
When consuming Temporal 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/temporalite-archived#118
-
When running the executables from the Releases page in macOS you will want to allowlist
temporal
binary inSecurity & Privacy
settings: