Awesome Smithy

May 3, 2026 ยท View on GitHub

Awesome Smithy is a curated list of awesome build-tools, code-generators, examples, and other resources related to the Smithy IDL.

If you want your component to appear here, send a pull request to this repository to add it (see the contribution guidelines for more information).

The Smithy team cannot vouch for the stability or production-worthiness an item on this list unless it has the icon (official) next to it. This icon means the component is an official project supported by the Smithy team. Official Smithy team projects with the ๐Ÿšง icon next to them are still a work-in-progress and are not production-ready.

Contents

Build tools

  • Smithy CLI (official) - Smithy CLI is used to build, validate, diff, and transform Smithy models.
  • Gradle Plugin (official) - Integrates Smithy with the Gradle build system.
  • Mill Plugin - Community supported plugin that integrates smithy with the Mill build tool.
  • SBT Plugin - Community supported plugin that integrates smithy with the SBT build system for Scala.
  • Smithy Cargo - Community supported build tool that integrates smithy with Cargo build scripts (build.rs)

Code Generators

Client Code Generators

  • TypeScript (official) ๐Ÿšง - Client code generation for Typescript.
  • Java (official) ๐Ÿšง - Client code generation for Java.
  • Golang (official) ๐Ÿšง - Client code generation for Golang.
  • Rust (official) ๐Ÿšง - Client code generation for Rust.
  • Ruby (official) ๐Ÿšง - Client code generation for Ruby.
  • Kotlin (official) - Client code generation for Kotlin.
  • Swift (official) ๐Ÿšง - Client code generation for Swift.
  • Scala - Community plugin for generation of clients/servers in Scala.
  • Dafny (official) ๐Ÿšง - Code generation tools for the Dafny verification-aware programming language.
  • Python (official) ๐Ÿšง - Client code generation for Python.
  • Erlang, Elixir, Gleam - Community plugin for generating clients and servers targeting BEAM languages: Erlang, Elixir, Gleam
  • C# - Community plugin for generation of clients/servers in C#.

Server Code Generators

  • TypeScript (official) ๐Ÿšง - Server generator for TypeScript.
  • Java (official) ๐Ÿšง - Server code generation for Java.
  • Rust (official) ๐Ÿšง - Server generator for Rust.
  • Scala - Community plugin for generation of clients/servers in Scala.
  • Erlang, Elixir, Gleam - Community plugin for generating clients and servers targeting BEAM languages: Erlang, Elixir, Gleam
  • C# - Community plugin for generation of clients/servers in C#.

Learning resources

IDE Support

Implementations

Model Converters

CICD Support

GitHub Actions

  • setup-smithy-cli (official) - Install the Smithy CLI for a GitHub action to validate, build, format, and diff Smithy models in a GitHub repository.
  • setup-smithy - Install Smithy CLI to your GitHub Workflow.
  • format-smithy - Checks if Smithy Models are formatted.

Videos

Blog Posts

Others

  • Smithy Playground ๐Ÿšง - A language server and VS Code client for interactive experimentation with Smithy services.
  • Build Server Protocol - an extension to the Language Server Protocol using Smithy as a definition language.
  • Alloy - a library of Smithy traits providing additional semantics and constraints, used in particular by smithy-translate and smithy4s.
  • smaws - a Smithy generator and AWS SDK built in OCaml
  • Smithy Selector Playground - a web tool for experimenting with Smithy selectors
  • Smithy Transcoder - a web tool for previewing the serialized form of Smithy models

Contribute

Contributions welcome! Read the contribution guidelines first.