---
title: "v1.103.3 - Safer Database Migrations, Streamed Alias Spend and Dependency Updates"
url: "/release_notes/v1.103.3/v1-103-3"
canonical_url: "https://docs.litellm.ai/release_notes/v1.103.3/v1-103-3"
type: "release-notes"
last_updated: "2026-10-06"
related:
  - "/release_notes/v1.104.0/v1-104-0"
  - "/release_notes/v1.103.2/v1-103-2"
---
# v1.103.3 - Safer Database Migrations, Streamed Alias Spend and Dependency Updates

> Index of all LiteLLM docs: https://docs.litellm.ai/llms.txt

## Deploy this version

**Docker**

```bash
docker run \
-e LITELLM_MASTER_KEY=sk-<paste-a-long-random-key> \
-e DATABASE_URL=postgresql://<user>:<password>@<host>:5432/<dbname> \
-e STORE_MODEL_IN_DB=True \
-p 4000:4000 \
docker.litellm.ai/berriai/litellm:1.103.3
```

**Pip**

```bash
pip install litellm==1.103.3
```

This release is published as [`ghcr.io/berriai/litellm:v1.103.3`](https://github.com/BerriAI/litellm/pkgs/container/litellm). See the [GitHub release](https://github.com/BerriAI/litellm/releases/tag/v1.103.3) and the full [releases page](https://github.com/BerriAI/litellm/releases)

:::danger Breaking Changes

**The proxy exits when database setup fails at startup** instead of serving against an outdated schema. Set `ENFORCE_PRISMA_MIGRATION_CHECK=false` to keep the old behavior. See [PR #44205](https://github.com/BerriAI/litellm/pull/44205)

:::

:::warning Upgrading from `v1.102.x` or earlier

The two `LiteLLM_SpendLogs` index migrations from `v1.103.0` are now no-ops. Build the indexes online yourself, outside a transaction:

```sql
CREATE INDEX CONCURRENTLY IF NOT EXISTS "LiteLLM_SpendLogs_api_key_startTime_idx" ON "LiteLLM_SpendLogs"("api_key", "startTime");
CREATE INDEX CONCURRENTLY IF NOT EXISTS "LiteLLM_SpendLogs_litellm_call_id_idx" ON "LiteLLM_SpendLogs"("litellm_call_id");
```

:::

`v1.103.3` is a patch release on top of [`v1.103.2`](https://github.com/BerriAI/litellm/releases/tag/v1.103.2). Startup exits on database setup failure, the `LiteLLM_SpendLogs` index migrations no longer build anything, streamed requests through an alias are billed correctly, and the base image and several dependencies are bumped. The `v1.103.3` tag points at [`ecae261`](https://github.com/BerriAI/litellm/commit/ecae261b100cdf6bcb1d024ae69e4efa4a891be0)

## Bug fixes

Streamed chat completions through a dotted alias like `claude-opus-4.6` recorded $0 spend, because pricing looked up the alias instead of the deployment's model. Streamed requests are now priced from the deployment's model, the same way as non-streamed ones, and logged streamed responses still show the alias. An alias that points at a deployment with no pricing now records $0 on streamed requests too, matching the non-streamed behavior. See [PR #44341](https://github.com/BerriAI/litellm/pull/44341)

Chat replies bridged from the Responses API put the tool calls in a separate `choices[1]`, so apps that read only `choices[0]` never ran the tool. `choices[0]` now carries both the text and the tool calls with `finish_reason: "tool_calls"`. See [PR #44346](https://github.com/BerriAI/litellm/pull/44346)

### What's Changed

- Startup exits on database setup failure, and the `LiteLLM_SpendLogs` index migrations no longer build anything - [PR #44205](https://github.com/BerriAI/litellm/pull/44205), [PR #44286](https://github.com/BerriAI/litellm/pull/44286)
- fix(proxy): stamp the client alias on a copy of each streamed chunk so pricing sees the deployment model - [PR #44341](https://github.com/BerriAI/litellm/pull/44341)
- fix(responses): merge bridged tool calls into the same choice as the text - [PR #44346](https://github.com/BerriAI/litellm/pull/44346)
- Bump wolfi-base digest to pick up glibc 2.44-r6 - [PR #42643](https://github.com/BerriAI/litellm/pull/42643)
- Dependency bumps: `pyjwt`, `pypdf`, `tornado`, `urllib3`, `gitpython`, `litellm-proxy-extras` 0.4.100.post1 - [PR #44352](https://github.com/BerriAI/litellm/pull/44352), [PR #44225](https://github.com/BerriAI/litellm/pull/44225)
- test(e2e): move the Together structured-output and text-completion tests to models that still answer - [PR #44437](https://github.com/BerriAI/litellm/pull/44437)

## Full Changelog

https://github.com/BerriAI/litellm/compare/v1.103.2...v1.103.3

## Related pages

- [v1.104.0](https://docs.litellm.ai/release_notes/v1.104.0/v1-104-0.md)
- [v1.103.2](https://docs.litellm.ai/release_notes/v1.103.2/v1-103-2.md)
