# Who the Stream CLI is for

The Stream CLI is an easy way to use the Stream API from your terminal. One binary, `getstream`, covers every product (Chat, Video, Feeds and Moderation) and [around 375 endpoints](https://getstream.io/cli/docs/reference/endpoints/). It's for you if you fit any of these cases:

## Developers building an app with Stream

While you build with a Stream SDK, you constantly need to check live data. Did the message land? Did the user connect?

Using the CLI means you don't need to check the [Stream Dashboard](https://getstream.io/signin/). [`getstream init`](https://getstream.io/cli/docs/commands/init/) links your working directory to an app, so the CLI has the right info immediately.

It also covers the chores around an integration: [`getstream env`](https://getstream.io/cli/docs/commands/env/) writes SDK keys into the file your framework expects, and [`getstream token`](https://getstream.io/cli/docs/test-tokens/) creates JWTs for testing.

## AI coding agents

The CLI describes itself. `getstream api --help` lists every endpoint and `--schema` prints any endpoint's request body, so an agent can discover and correctly call endpoints it has never seen. [`getstream skills`](https://getstream.io/cli/docs/commands/skills/) installs the [Stream Agent Skills](https://getstream.io/agent-skills/docs/), which teach the agent Stream's workflows on top. [Using the CLI with an agent](https://getstream.io/cli/docs/concepts/agents/) covers the division of labor and the guardrails.

## Scripts and CI

Everything the CLI prints is JSON, and the exit code is `0` on success, `1` on failure (with the reason on stderr), so a script can parse the output and trust the result. In-process [`--jq`](https://getstream.io/cli/docs/reference/jq/) filters responses with no extra dependency. CI has no browser to log in with; the pipeline sets `STREAM_API_KEY` and `STREAM_API_SECRET` from its secrets and every command runs headless. See [Use the CLI in CI](https://getstream.io/cli/docs/ci/).

## Don't use it for

- **Your app's runtime.** The CLI calls the API and returns, without holding a connection open. It can't power real-time features like live messages or presence, so if you need this, use a Stream SDK.
- **Production auth.** `getstream token` signs JWTs without membership checks. This is fine for testing but dangerous in production.

---

For the most recent version of this documentation, visit [https://getstream.io/cli/docs/concepts/who-the-stream-cli-is-for/](https://getstream.io/cli/docs/concepts/who-the-stream-cli-is-for/).