> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefused.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Use it in your app

> Install the generated package and stand up a client your application can hold.

The CLI builds and ships the SDK. Your application is what actually calls it. This page gets the package installed and a client running; [run an operation](/app/run-an-operation) is the call itself.

The package is an ordinary npm or pip package. There is no Fused runtime to deploy alongside it; it opens one gRPC connection to your Engine and that is the whole dependency.

## Install it

`sdk apply --download` extracts the package to `fused-sdks/<name>`. It is not published anywhere, so install it from that path.

<CodeGroup>
  ```bash TypeScript theme={null}
  cd fused-sdks/support-sdk
  npm install && npm run build

  cd ../../
  npm install ./fused-sdks/support-sdk
  ```

  ```bash Python theme={null}
  pip install ./fused-sdks/support-sdk
  ```
</CodeGroup>

Vendor it, or publish it to your own private registry — the generated `package.json` and `pyproject.toml` carry the name you gave the SDK.

## Create the client

One client, one gRPC channel, shared by every service on it.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { FusedSDK } from 'support-sdk';

  const sdk = new FusedSDK({
    grpcUrl: process.env.FUSED_ENGINE_GRPC_URL,
    token: process.env.FUSED_SDK_TOKEN!,
  });
  ```

  ```python Python theme={null}
  import os
  from fused.support_sdk import FusedSDK

  sdk = FusedSDK({
      "grpc_url": os.environ["FUSED_ENGINE_GRPC_URL"],
      "token": os.environ["FUSED_SDK_TOKEN"],
  })
  ```
</CodeGroup>

`token` is the execution token from apply. `grpcUrl` is optional — it falls back to `FUSED_ENGINE_GRPC_URL`, then `FUSED_ENGINE_URL`, then localhost. Set it explicitly; [the fallback has a trap](/app/build-an-sdk#point-the-client-at-the-engine).

## Shut it down

The channel is long-lived, so close it when your process does.

<CodeGroup>
  ```typescript TypeScript theme={null}
  process.on('SIGTERM', () => sdk.close());
  ```

  ```python Python theme={null}
  async with FusedSDK(config) as sdk:
      ...

  # or explicitly
  await sdk.close()
  ```
</CodeGroup>

<CardGroup cols={2}>
  <Card title="Run an operation" icon="code" href="/app/run-an-operation">
    The call itself: what you pass, what comes back, and what can go wrong.
  </Card>

  <Card title="Receive events" icon="webhook" href="/app/receive-events">
    The other half of your application code: reacting to what the provider sends you.
  </Card>
</CardGroup>
