# Stability SDK: two help texts disagree on the entry point, and the last tag is from 2024

> stability-sdk is the Python client for the Stability gRPC API, covering generate, upscale and animate. The packaging still carries a 2024 version number and a beta DreamStudio URL, while master has moved on for two years without a release.

**Stability-AI/stability-sdk** — SDK for interacting with stability.ai APIs (e.g. stable diffusion inference)

- Repository: https://github.com/Stability-AI/stability-sdk
- Website: https://platform.stability.ai/
- Stars: 2,435 · Forks: 338
- Language: Jupyter Notebook
- License: MIT
- Published: 2026-09-18 · Updated: 2026-09-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/stability-ai-stability-sdk

## The last release is 0.8.6 from May 2024 and master has moved since

Three tags are listed for the repository: v0.8.4 in July 2023, v0.8.5 in November 2023 under the name Animation notebook fixes, and v0.8.6 in May 2024. Nothing has been tagged since. The master branch, meanwhile, was pushed on 14 May 2026, so the branch is more than two years ahead of the newest release rather than abandoned. The version string inside setup.py still reads 0.8.6, which is the same number as the last tag. For anyone installing from PyPI that means the published package and the branch are different things, and the page does not draw that line anywhere.

## The two help texts disagree about how the client is invoked

The generate usage names the module entry point:

```
usage: python -m stability_sdk generate [-h] [--height HEIGHT] [--width WIDTH]
                [--start_schedule START_SCHEDULE] [--end_schedule END_SCHEDULE]
                [--cfg_scale CFG_SCALE] [--sampler SAMPLER] [--steps STEPS]
                [--style_preset STYLE_PRESET] [--seed SEED] [--prefix PREFIX] [--engine ENGINE]
                [--num_samples NUM_SAMPLES] [--artifact_types ARTIFACT_TYPES]
                [--no-store] [--show] [--init_image INIT_IMAGE] [--mask_image MASK_IMAGE]
                [prompt ...]
```

The upscale usage, further down the same page, starts from a script name instead:

```
usage: client.py upscale
       [-h]
       --init_image INIT_IMAGE
       [--height HEIGHT] [--width WIDTH] [--prefix PREFIX] [--artifact_types ARTIFACT_TYPES]
       [--no-store] [--show] [--engine ENGINE]
```

So the two blocks come from different generations of the command line, and only the first matches the invocation the page actually recommends.

## One option appears in the upscale usage with no description under it

The generate block names its metrics with plural placeholders, --height HEIGHT and --width WIDTH. The upscale block repeats those, adds the short forms -i for the init image and -H and -W for the pixel dimensions, and then ends its option list on a line that has no help text at all:

```
  --steps STEP
```

The metavar itself is singular where the generate block used a plural, so the flag name is spelled the same and the spelling of its value placeholder is not. Nothing after that line continues the block, which means either the options list was cut short or steps has no description to print. A reader has no way to tell which, and the upscale section above it documents nothing beyond the two example commands.

## Two environment variables carry the host and the key, and the host has a default

Running the client needs two variables. STABILITY_KEY holds the credential, and STABILITY_HOST names the endpoint, which by default resolves to the production address grpc.stability.ai:443. That default is the part to notice: the page describes the production endpoint as what the variable is already set to, so a local setup that forgets the variable does not fall back to a sandbox, it points at production. The page gives no example dotenv file and no localhost alternative. The local workflow it does describe is a virtual environment, with python3 -m venv pyenv, an editable install through pyenv/bin/pip3 install -e ., and pyenv/bin/activate to enter it.

## grpcio is capped below 1.64 and the animation UI pins gradio to one version

The install requirements in setup.py read:

```
Pillow
grpcio>=1.53.0,<1.64.0
grpcio-tools>=1.53.0,<1.64.0
python-dotenv
param
protobuf>=4.21.12,<6.0.0
```

Two of those carry an upper bound as well as a floor, which excludes every newer grpcio and protobuf release, and Pillow, python-dotenv and param have no bounds at all. The animation UI extra is tighter still, since it lists gradio at one exact version, 3.50.2, alongside keyframed, numpy, opencv-python-headless and tqdm. An environment that already has a different gradio for another tool has to reconcile those two requirements before the animation UI will install.

## setup.py still names beta.dreamstudio.ai while the page names the platform domain

The package metadata gives the url as https://beta.dreamstudio.ai/ and the download_url as the GitHub repository, with author and maintainer both given as Stability AI at support@stability.ai. The page itself directs readers to platform.stability.ai for authentication and documentation, and the repository's homepage field is the same platform domain. So the two places a reader might look for the project disagree about the host name, one of them on a beta subdomain. The long description is read straight out of README.md at build time and declared as markdown, which means the packaging metadata and the page cannot drift apart on content, only on fields written separately in setup.py.

## An anim extra exists in the packaging that the page never mentions

There are three extras. The dev extra carries pytest and grpcio-testing. The anim extra carries keyframed, numpy and opencv-python-headless. The anim_ui extra carries those same three and adds gradio and tqdm. Only anim_ui appears on the page, as the way to get the animation interface, installed with pip install stability-sdk[anim_ui] and started with python3 -m stability_sdk animate --gui. The anim extra is therefore available for the animation work without the interface and is documented nowhere on the page, so a caller who wants the animation code without pulling a pinned gradio has to read setup.py to find it.

## Non-Python callers are pointed at a protobuf spec kept in another repository

The answer to using another language is not a maintained client but a schema: a protobuf definition hosted in the api-interfaces repository, which is where stubs for your language are compiled from. Three community clients are named alongside it, a Typescript one, a Ruby build guide and a C# implementation, none of them part of this repository and none of them versioned against it. The root listing also carries a .gitmodules file, so parts of the tree arrive as submodules rather than as tracked source. Licensing here is MIT with a LICENSE file present at the root, which is the one packaging field on this page that agrees with itself.

## Conclusion

The SDK suits someone who needs the Stability gRPC surface from Python and is willing to pin dependencies itself, because the interface is small and the two setup routes are clearly separated. Three things deserve a look before adopting it. The grpcio range stops below 1.64 and the animation extra pins gradio to one exact version, so this sits badly alongside anything else in the same environment. The package metadata still points at the beta DreamStudio domain while the page points at the platform domain, which is a sign the setup was last touched around the 0.8.6 release. And master has been pushed as recently as May 2026 with no tag since May 2024, so anyone needing a release rather than a branch should confirm which of the two they are actually installing.

## FAQ

### How do you install the Stability Python SDK?

From PyPI with pip install stability-sdk, or from a checkout by creating a virtual environment and running an editable install into it. The animation interface is a separate extra installed with pip install stability-sdk[anim_ui].

### Which environment variables does the Stability SDK client read?

STABILITY_KEY for the credential and STABILITY_HOST for the endpoint. The host variable defaults to the production address grpc.stability.ai:443 rather than to a local service.

### How do you run the Stability SDK animation UI?

Install the anim_ui extra and start it with python3 -m stability_sdk animate --gui. That extra pins gradio to exactly 3.50.2 and adds keyframed, numpy, opencv-python-headless and tqdm.

### Can I use the Stability API from a language other than Python?

The page points at the protobuf definition in the api-interfaces repository to compile stubs, and names three community clients written outside this repository: Typescript, a Ruby guide and a C# implementation.

### What version is the stability-sdk package at?

setup.py reads 0.8.6, which matches the newest listed tag v0.8.6 from May 2024. The master branch has been pushed since, most recently on 14 May 2026, without a further release.

## Sources

- [License: MIT](https://github.com/Stability-AI/stability-sdk/blob/main/LICENSE)
- [Project website](https://platform.stability.ai/)
- [README](https://github.com/Stability-AI/stability-sdk/blob/main/README.md)
- [Releases](https://github.com/Stability-AI/stability-sdk/releases)
- [Stability-AI/stability-sdk on GitHub](https://github.com/Stability-AI/stability-sdk)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/stability-ai-stability-sdk
