11# litellm-lagoon-base
22
33Republishes the upstream [ LiteLLM] ( https://github.com/BerriAI/litellm ) proxy
4- image with our pending upstream patches applied — nothing else. Consumed by
5- [ litellm-lagoon ] ( https://github.com/amazeeio/litellm-lagoon ) as its base image .
4+ images with our pending upstream patches applied — nothing else. With an empty
5+ ` patch/ ` dir the output is a 1-to-1 copy of upstream .
66
7- Images: ` ghcr.io/amazeeio/litellm-lagoon-base:<litellm-version> ` (e.g.
8- ` v1.93.0 ` ) plus ` latest ` . With an empty ` patch/ ` dir the output is a 1-to-1
9- copy of ` ghcr.io/berriai/litellm:<version> ` .
7+ Two packages, mirroring the upstream image variants, tagged with the upstream
8+ release (e.g. ` v1.93.0 ` ) plus ` latest ` :
9+
10+ | Package | Upstream base | Consumed by |
11+ | --- | --- | --- |
12+ | ` ghcr.io/amazeeio/litellm-lagoon-base ` | ` ghcr.io/berriai/litellm ` | [ litellm-lagoon] ( https://github.com/amazeeio/litellm-lagoon ) (Lagoon / docker-compose) |
13+ | ` ghcr.io/amazeeio/litellm-lagoon-base-database ` | ` ghcr.io/berriai/litellm-database ` | litellm helm chart in [ amazeeai-k0rdent-catalog] ( https://github.com/amazeeio/amazeeai-k0rdent-catalog ) |
1014
1115## How it works
1216
13- - ` Dockerfile ` starts ` FROM ghcr.io/berriai/litellm :${LITELLM_VERSION} ` and
14- applies every ` patch/*.patch ` onto the installed ` litellm ` site-package with
17+ - ` Dockerfile ` starts ` FROM ${LITELLM_IMAGE} :${LITELLM_VERSION} ` and applies
18+ every ` patch/*.patch ` onto the installed ` litellm ` site-package with
1519 ` git apply --include='litellm/*' ` (tests/UI-source paths in a patch are
16- skipped — the image ships prebuilt UI assets).
20+ skipped — the images ship prebuilt UI assets).
1721- ` .github/workflows/build.yml ` runs every 6 hours, resolves the latest
18- ** stable** (non-prerelease) LiteLLM release, and builds/pushes it if not
19- already published. Pushes to ` main ` touching ` Dockerfile ` or ` patch/ `
22+ ** stable** (non-prerelease) LiteLLM release, and builds/pushes both variants
23+ if not already published. Pushes to ` main ` touching ` Dockerfile ` or ` patch/ `
2024 republish the current version. ` workflow_dispatch ` accepts an explicit
2125 version.
22- - If the build fails (usually: patch no longer applies to a new release),
23- a message is posted to Slack via the ` SLACK_WEBHOOK_URL ` repo secret.
26+ - If a build fails (usually: patch no longer applies to a new release), a
27+ message is posted to Slack — and re-posted every 6 hours until the patch is
28+ fixed.
2429
2530## Current patches
2631
@@ -42,12 +47,26 @@ git diff > <this-repo>/patch/0001-litellm-pr31618-budget-threshold-webhook-alert
4247## When the PR merges upstream
4348
4449Delete ` patch/*.patch ` (keep ` patch/.gitkeep ` ) and push. Builds continue and
45- publish unpatched 1-to-1 copies of upstream — ` litellm-lagoon ` keeps working
46- unchanged.
50+ publish unpatched 1-to-1 copies of upstream — consumers keep working unchanged.
51+
52+ ## Consuming the internal packages
53+
54+ The packages stay ** internal** , so every pull needs auth against ghcr.io with
55+ ` read:packages ` :
56+
57+ - ** Lagoon builds** (litellm-lagoon): ` .lagoon.yml ` declares a
58+ ` container-registries ` entry for ghcr.io; create the referenced Lagoon
59+ variables (` GHCR_USERNAME ` , ` GHCR_PULL_TOKEN ` — a fine-grained PAT or classic
60+ PAT with ` read:packages ` ) on each project:
61+ ` lagoon add variable -p <project> -N GHCR_PULL_TOKEN -V <token> -S container_registry `
62+ - ** Kubernetes / k0rdent** : create a ` kubernetes.io/dockerconfigjson ` pull
63+ secret for ghcr.io in the target namespace and reference it via the chart's
64+ ` litellm-helm.imagePullSecrets ` .
65+ - ** Local dev** : ` docker login ghcr.io ` with your GitHub username + PAT.
4766
4867## One-time setup
4968
50- - Repo secret ` SLACK_WEBHOOK_URL ` — incoming-webhook URL for the alerts channel.
51- - After the first push to GHCR, set the ` litellm-lagoon-base ` package
52- visibility to ** public ** (org packages default to private; Lagoon builds
53- pull this image unauthenticated) .
69+ - Grant the org-level ` SLACK_BOT_TOKEN ` secret access to this repo (org
70+ settings → secrets → repository access), and set the ` SLACK_CHANNEL_ID `
71+ ** repository variable ** to the alerts channel ID. The Slack app must be a
72+ member of that channel .
0 commit comments