smithy-lang/smithy

Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.

Java

2,365

3,142 commits

updated Sep 30, 2026

See the code

README

Smithy Smithy

Build Status

Smithy defines and generates clients, services, and documentation for any protocol.

Smithy IDL

Smithy models define a service as a collection of resources, operations, and shapes.

$version: "2"

namespace example.weather

service Weather {
    version: "2006-03-01"
    resources: [City]
    operations: [GetCurrentTime]
}

resource City {
    identifiers: { cityId: CityId }
    read: GetCity
    list: ListCities
    resources: [Forecast]
}

// See the full example at https://smithy.io/2.0/quickstart.html#complete-example

Find out more about modeling a service with Smithy in the Quick Start guide.

Building Smithy models

[!IMPORTANT]
Before you proceed, make sure you have the Smithy CLI installed.

The Smithy CLI is the easiest way to get started with building Smithy models. First, create a smithy-build.json file:

{
    "version": "1.0",
    "sources": ["model"]
}

Next, create your first model model/main.smithy:

$version: "2"

namespace com.example

service ExampleService {
    version: "2020-05-27"
}

Finally, run smithy build to build the model with the Smithy CLI.

Find out more about building artifacts of your Smithy model in the Building Smithy Models guide. For more examples, see the examples repository

License

This library is licensed under the Apache 2.0 License.

smithy
smithy-models

Significant stargazers

(top 24 of 35)

Evgeny

1,171 followers · starred Jul 2025

Arve Knudsen

267 followers · starred Apr 2021

Daniel González Lopes

98 followers · starred Apr 2023

Alexander Thiemann

203 followers · starred May 2021

smithy-lang/smithy

Smithy is a protocol-agnostic interface definition language and set of tools for generating clients, servers, and documentation for any programming language.

Java

2,365

3,142 commits

updated Sep 30, 2026

See the code

README

Smithy Smithy

Build Status

Smithy defines and generates clients, services, and documentation for any protocol.

Smithy IDL

Smithy models define a service as a collection of resources, operations, and shapes.

$version: "2"

namespace example.weather

service Weather {
    version: "2006-03-01"
    resources: [City]
    operations: [GetCurrentTime]
}

resource City {
    identifiers: { cityId: CityId }
    read: GetCity
    list: ListCities
    resources: [Forecast]
}

// See the full example at https://smithy.io/2.0/quickstart.html#complete-example

Find out more about modeling a service with Smithy in the Quick Start guide.

Building Smithy models

[!IMPORTANT]
Before you proceed, make sure you have the Smithy CLI installed.

The Smithy CLI is the easiest way to get started with building Smithy models. First, create a smithy-build.json file:

{
    "version": "1.0",
    "sources": ["model"]
}

Next, create your first model model/main.smithy:

$version: "2"

namespace com.example

service ExampleService {
    version: "2020-05-27"
}

Finally, run smithy build to build the model with the Smithy CLI.

Find out more about building artifacts of your Smithy model in the Building Smithy Models guide. For more examples, see the examples repository

License

This library is licensed under the Apache 2.0 License.

smithy
smithy-models

Significant stargazers

(top 24 of 35)

Evgeny

1,171 followers · starred Jul 2025

Arve Knudsen

267 followers · starred Apr 2021

Daniel González Lopes

98 followers · starred Apr 2023

Alexander Thiemann

203 followers · starred May 2021

Languages

Java

68.5%

Smithy

31.2%