# 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.

Repository: https://github.com/smithy-lang/smithy
Canonical: https://ross.abutalabs.com/products/smithy
Homepage: https://smithy.io
Language: Java
License: Apache-2.0
License Family: permissive
Topics: smithy, smithy-models
Last push: 2026-08-26T10:05:47+00:00

## Health v2 (maintenance only)
Score: 98/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 97, longevity 100
- inputs: {"age_days": 2721, "days_push": 7, "days_rel": 22, "gap_med": 26.0, "n_releases_24m": 29}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2345, forks 257 (observed 2026-08-28T04:06:39.814819+00:00)

## What it is
Smithy is a protocol-agnostic interface definition language (IDL) and a set of tools for modeling services as collections of resources, operations, and shapes. From a single model, it generates type-safe clients, servers, documentation, and OpenAPI/JSON Schema artifacts across many programming languages, and it powers the APIs and SDKs at AWS.

## Use cases
- define an API once and generate client SDKs in multiple languages
- generate server scaffolding and API documentation from a service model
- convert Smithy models to OpenAPI or JSON Schema
- model services protocol-agnostically and switch wire protocols without changing the model
- build and validate Smithy models with the Smithy CLI
- generate AWS-style SDKs for custom services

## When to choose
- you need multi-language client/server code generation from a single API definition
- you want protocol-agnostic API modeling with extensible traits
- you build AWS SDKs or AWS-compatible services
- you need normalized, diffable, machine-traversable API models

## When to avoid
- you need a lightweight REST API without code generation overhead
- your team is already invested in OpenAPI-first or GraphQL workflows
- you only target a single language and a simple hand-written client suffices

## Facets
- artifact type: framework
- maturity: stable
- function: api-framework, sdk, documentation, cli, build-tool
- domain: developer-tools, apis, web-development, backend
- platform: jvm, cross-platform, cli
- tags: idl, interface-definition-language, api-modeling, code-generation, openapi, aws, protocol-agnostic, smithy

## Member repositories
- smithy-lang/smithy (main) score 98

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:06:39.814819+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T02:37:03.630445+00:00, confidence not recorded.
  - readme: https://github.com/smithy-lang/smithy (fetched 2026-08-28T04:06:39.814819+00:00, sha 69c6e25ee9ad)
  - homepage: https://smithy.io (fetched 2026-08-29T10:17:38.291985+00:00, sha a4dc69518f06)
  - site_page: https://smithy.io/2.0/quickstart.html (fetched 2026-08-29T10:17:38.298365+00:00, sha b13db6ca217c)
  - site_page: https://smithy.io/2.0/index.html (fetched 2026-08-29T10:17:38.296013+00:00, sha 1e4e225d1bbd)
- Data as of 2026-08-30T08:39:29.467469+00:00.
