Skip to main content

Language support

Windmill supports scripts in TypeScript, Python, Go, PHP, Bash, SQL, Rust, C#, Java, Ruby, Ansible and more. This page provides a detailed comparison of features available for each language.

Core language features

LanguageStabilitySDKLSPResource typesRelative importsWorkflows as codeVersion selectionOther
TypeScript (Bun)StableFull-Native mode for REST
TypeScript (Deno)StableFull--
PythonStableFull✓ (3.10-3.13)-
GoStableSimple-----
BashStable---via curl--Docker mode
PowerShellStable-------
NuUnstable-------
SQL (PostgreSQL)Stable------No cold start
SQL (DuckDB)Stable------DuckLake native
PHPStable------
RustStableSimple----Debug/Release builds
C#Stable-------
JavaStableMinimal------
RubyUnstableMinimal------
AnsibleStable------Vault support, git repos

Dependency management

LanguageDependency sourcesAuto import inferenceProxyPrivate registries (EE)
TypeScript (Bun)npm, git
TypeScript (Deno)npm, git, URL
PythonPyPI, git, local✓ + resolution strategy
GoGo proxy, git
Bash---
PowerShell---
Nu---
SQL (PostgreSQL)---
SQL (DuckDB)---
PHPPackagist, git--
Rustcrates.io, git-
C#NuGet--
JavaMaven, Ivy-
RubyRubyGems-
AnsibleGalaxy, PyPI, git-

See workspace dependencies for more details.

Platform features

LanguageDedicated workers (EE)HTTP tracing (EE)Caching (EE)Data tables + DucklakeWindows
TypeScript (Bun)✓ (native)
TypeScript (Deno)--
Python
Go---
Bash----
PowerShell----
Nu---
SQL (PostgreSQL)-----
SQL (DuckDB)----
PHP----
Rust---
C#--
Java---
Ruby--
Ansible----
Missing a feature or language?

Help us prioritize what to build next! Vote for the next feature or language to be supported in Windmill.

Legend

  • Stability: Production readiness (Stable / Unstable)
  • SDK: Official Windmill client (Full = complete SDK, Simple = basic client, Minimal = minimal client)
  • LSP: Language Server Protocol support for code assistance
  • Resource types: Ability to fetch resources programmatically
  • Relative imports: Ability to share code between scripts via relative imports
  • Workflows as code: Support for programmatic workflow definition
  • Version selection: Ability to specify language version per script
  • Dependency sources: Where packages can be fetched from (registries, git, local)
  • Auto import inference: Automatic detection of dependencies from import statements
  • Proxy: Support for proxy configuration during dependency resolution
  • Private registries (EE): Support for private package registries
  • Dedicated workers (EE): High-throughput mode eliminating cold starts
  • HTTP tracing (EE): HTTP request tracing for debugging
  • Caching (EE): Support for distributed cache storage
  • Data tables + Ducklake: Support for Data Tables and Ducklake
  • Windows: Support on Windows workers
  • EE: Enterprise Edition feature