# Publishing the IIOS SDKs (Gitea package registry) The `@insignia/iios-*` **frontend SDKs** publish to our self-hosted Gitea npm registry: ``` https://git.lynkedup.cloud/api/packages/insignia/npm/ ``` **Published (public in the registry):** `iios-contracts`, `iios-kernel-client`, `iios-adapter-sdk`, and the React hook packages `iios-message-web`, `iios-inbox-web`, `iios-support-web`, `iios-ai-web`, `iios-community-web`, `iios-meeting-web`. **Kept private (never published):** `iios-service` (the deployed backend) and `iios-testkit` (dev fakes). > be-crm does **not** consume these — it talks to IIOS over REST. The SDKs are a **frontend** concern > (chat-web, the CRM support UI, mobile). ## One-time: get a token Gitea → **Settings → Applications → Generate Token**: - to **publish**: scope `write:package` - to **install** (private packages): scope `read:package` Export it (never commit it): ```bash export GITEA_TOKEN= ``` The repo `.npmrc` already routes the `@insignia` scope to Gitea and reads `${GITEA_TOKEN}`. ## Publish ```bash pnpm release:dry # build all + pack (no upload) — verify the 9 packages pack cleanly pnpm release # build all + publish the non-private packages to Gitea ``` `pnpm -r publish` automatically **skips** `private` packages, so only the 9 SDKs go out. Versions are **immutable** — bump before re-publishing (edit `version`, or adopt `changesets`). Or push a tag and let CI do it (see `.gitea/workflows/publish-sdks.yml`; needs Gitea Actions + a runner + the `GITEA_PUBLISH_TOKEN` secret): ```bash git tag v0.1.0 && git push origin v0.1.0 ``` ## Consume (in chat-web / the CRM front-end) Add an `.npmrc` to the consuming repo: ```ini @insignia:registry=https://git.lynkedup.cloud/api/packages/insignia/npm/ //git.lynkedup.cloud/api/packages/insignia/npm/:_authToken=${GITEA_TOKEN} ``` Then: ```bash export GITEA_TOKEN= pnpm add @insignia/iios-kernel-client @insignia/iios-contracts ``` This replaces the **vendored** client that chat-web copies today — one source of truth for all frontends.