Skip to main content

twf-cli

Design, visualize, and implement entire Temporal systems — namespaces, workers, workflows, and Nexus — as a validated, visual source of truth.

Write your architecture in .twf and a real parser, language server, and visualizer give you (and your AI agent) compiler-grade feedback on the whole system before you write a line of SDK code — then generate the workers and provision the infra from the same design.

Graph View — the whole system as a force-directed graph of namespaces, workers, and workflows with dependency edges

  • Catch design errors before code. A real parser and language server validate the whole system — undefined activities, broken Nexus routing, misplaced determinism — while it's still a design, not a production incident.
  • See the whole deployment. An interactive graph of namespaces → workers → workflows, plus a tree view that expands calls inline. Architecture you can actually look at.
  • One parseable source of truth. .twf is a file every teammate and every tool reads and validates — not architecture prose buried in a prompt.
  • Design → running system. Generate Temporal Go SDK code and provision control-plane infra from the same .twf — or recover a deployment graph straight from production history with the sampler.
activity ReserveFunds(amount: Money) -> (Hold):
    reserve(amount)

activity CaptureFunds(hold: Hold) -> (Receipt):
    capture(hold)

workflow ChargeOrder(order: Order) -> (Receipt):
    signal Cancel():
        close fail("cancelled")

    activity ReserveFunds(order.amount) -> hold
        options:
            start_to_close_timeout: 30s
    activity CaptureFunds(hold) -> receipt
    close complete(receipt)

worker billing:
    workflow ChargeOrder
    activity ReserveFunds
    activity CaptureFunds

namespace payments:
    worker billing
        options:
            task_queue: "billing"

Workflow logic, the worker that hosts it, and the namespace topology — one readable file.

twf-cli is a thin wrapper around the bundled platform binary — same tool, same flags, same output as the standalone twf distribution, installable via pip.

Install

pip install twf-cli
twf --help

The wheel for your platform ships the matching twf binary. Supported platforms (one wheel each): macosx_11_0_arm64, macosx_10_15_x86_64, manylinux2014_x86_64, manylinux2014_aarch64, win_amd64.

The twf CLI

A single Go binary: parser, validator, deployment-graph extractor, and a full LSP server. Every command and flag is discoverable via twf --help and twf <command> --help.

Command Description
twf check <file...> Parse and validate .twf files, reporting errors
twf parse <file...> Output the AST as JSON (partial AST even with errors)
twf symbols <file...> List workflows and activities with their signatures
twf graph <file...> Emit the resolved deployment graph (nodes are deployments, edges are dispatches)
twf graph chunks <file...> Decompose a design into independently-implementable chunks at contract boundaries
twf spec [--list | <slug>] Print the embedded TWF language specification
twf mcp Start the MCP server over stdio (agent entry point)
twf lsp Start the language server over stdio

Common options: --json (structured output) and --lenient (continue past resolve errors). The language server adds real-time diagnostics, completions, hover, go-to-definition, references, rename, code actions, folding, inlay hints, semantic tokens, and signature help.

Use as an MCP server

twf mcp runs a Model Context Protocol server over stdio — the agent entry point. The examples below launch it through npx, so Node.js and npm must be installed and npx must be available on PATH.

Claude Desktop

Add the twf entry to the existing mcpServers object in the Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "twf": {
      "command": "npx",
      "args": ["-y", "@temporal-architect/twf", "mcp"]
    }
  }
}

Restart Claude Desktop after saving the file.

Cursor

Create .cursor/mcp.json in a project to enable twf for that project, or use ~/.cursor/mcp.json to enable it globally. Both locations use the same Cursor MCP configuration shape:

{
  "mcpServers": {
    "twf": {
      "command": "npx",
      "args": ["-y", "@temporal-architect/twf", "mcp"]
    }
  }
}

Continue

Create .continue/mcpServers/twf.yaml at the top level of the workspace. Continue's standalone MCP blocks require the name, version, and schema metadata fields:

name: TWF MCP server
version: 0.0.1
schema: v1
mcpServers:
  - name: twf
    command: npx
    args:
      - "-y"
      - "@temporal-architect/twf"
      - "mcp"

The tools (twf_check, twf_parse, twf_symbols, twf_graph, twf_graph_chunks, twf_spec_list, twf_spec_get) are thin wrappers over the same parser pipeline as the CLI, so their JSON is identical. The embedded language specification is exposed as resources at twf://spec and twf://spec/<slug>.

Subprocess use from Python

import subprocess, json

result = subprocess.run(
    ["twf", "parse", "workflow.twf"],
    capture_output=True, text=True, check=True,
)
ast = json.loads(result.stdout)

Versioning

Versions track the upstream temporal-architect Git tag, so 0.3.x of this package corresponds to v0.3.x of the toolchain.

License

MIT. See LICENSE.

Release files for twf-cli 0.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for twf-cli 0.11.0
File
twf_cli-0.11.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
twf_cli-0.11.0-py3-none-manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
twf_cli-0.11.0-py3-none-manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
twf_cli-0.11.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
twf_cli-0.11.0-py3-none-macosx_10_15_x86_64.whl Python 3 none macOS 10.15+ x86-64 Details

Total release size: 39.7 MB

Release files / twf_cli-0.11.0-py3-none-win_amd64.whl

Download URL twf_cli-0.11.0-py3-none-win_amd64.whl
Size 8.2 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
706e6c3b3bc8f61cde8daffa98156ad50ae3992490fbbebbf827d102e767d8d2
BLAKE2b-256 checksum
How to use checksums
6e36c8ebc994588619fc4c97a8d594f30b24c0dbfb30df0c0a3227905b4c7bfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / twf_cli-0.11.0-py3-none-manylinux2014_x86_64.whl

Download URL twf_cli-0.11.0-py3-none-manylinux2014_x86_64.whl
Size 8.1 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
6125f4cc0c0c59ad73dede0706483e1f0d09262cf3d1d333eee068102687e8e2
BLAKE2b-256 checksum
How to use checksums
320b5560da29c49ef83263db3cb10f0998d0dba6bb3f3c1bd85beabb14e5bf89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / twf_cli-0.11.0-py3-none-manylinux2014_aarch64.whl

Download URL twf_cli-0.11.0-py3-none-manylinux2014_aarch64.whl
Size 7.4 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
b399b1011a5a8752d2b588dbd33343a99c9d4325c90992694cc28cee5158b3ff
BLAKE2b-256 checksum
How to use checksums
77a837978804bba72b7cec8de67115c83d7c856ecfa0f178b5867b0da4be7594
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / twf_cli-0.11.0-py3-none-macosx_11_0_arm64.whl

Download URL twf_cli-0.11.0-py3-none-macosx_11_0_arm64.whl
Size 7.8 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9779eac15f2954ea40d12bc950dfa96211aa97cc78e74c43b4f48459f0f4d716
BLAKE2b-256 checksum
How to use checksums
7bd426e5aaea3a0f43b88e95f580c660088c128a8079df1a073971756b242d06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / twf_cli-0.11.0-py3-none-macosx_10_15_x86_64.whl

Download URL twf_cli-0.11.0-py3-none-macosx_10_15_x86_64.whl
Size 8.3 MB
Tags Python 3 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
908d0fc1a17ac9ff7cd7f36539dd5b5e43f890208458b307ef190e82e0d44a69
BLAKE2b-256 checksum
How to use checksums
8554bfc4a0b937e41905e4afa7f140b33efc7ca40f2706a90128363e14da5a93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

0.14.0

5 release files

0.13.0

5 release files

0.12.0

5 release files

This release

0.11.0 This release

5 release files

0.10.0

5 release files

0.9.3

5 release files

0.9.2

5 release files

0.9.1

5 release files

0.9.0

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page