Skip to content

Deployment Guide

This document describes CI/CD and deployment for SIP Protocol packages.


SIP Protocol uses multiple repositories:

RepositoryPurposeDeployment
sip-protocol/sip-protocolCore SDK + Typesnpm registry
sip-protocol/sip-websiteMarketing websiteVercel (Git auto-deploy)
sip-protocol/sip-appPrivacy applicationsVPS (Docker)
sip-protocol/docs-sipDocumentationVercel (Git auto-deploy)
sip-protocol/blog-sipBlogVercel (Git auto-deploy)
sip-protocol/cdn-sipCDN assetsVercel (Git auto-deploy)

Privacy App: The interactive application lives at sip-protocol/sip-app and is deployed to app.sip-protocol.org.


The core repository includes two GitHub Actions workflows:

WorkflowFileTriggerPurpose
CIci.ymlPush/PR to main/devLint, typecheck, test, build
Publishpublish.ymlGitHub ReleasePublish packages to npm

Configure in GitHub repository settings (Settings > Secrets and variables > Actions):

SecretDescriptionHow to obtain
NPM_TOKENnpm automation tokennpmjs.com > Access Tokens > Generate New Token (Automation)

  1. Create npm account at npmjs.com
  2. Create organization @sip-protocol (or use personal scope)
  3. Generate automation token: Account > Access Tokens > Generate New Token
  4. Add token to GitHub secrets as NPM_TOKEN

Ensure GitHub Actions is enabled for the repository:

  • Go to Settings > Actions > General
  • Select “Allow all actions and reusable workflows”
  • Save

Runs on every push and pull request to main and dev branches.

Jobs:

  1. lint-and-typecheck - Runs ESLint and TypeScript checks
  2. test - Runs test suite with coverage, uploads to Codecov
  3. build - Builds all packages, generates API docs

Dependencies:

  • Test job requires lint-and-typecheck
  • Build job runs in parallel

Triggers on GitHub Release or manual workflow dispatch.

Jobs:

  1. test - Runs full test suite
  2. publish-sdk - Publishes @sip-protocol/types then @sip-protocol/sdk
  3. publish-docs - Generates and deploys API docs to GitHub Pages

  1. Update versions in packages/*/package.json
  2. Update CHANGELOG.md
  3. Create GitHub Release with tag (e.g., v0.1.0)
  4. Workflow automatically publishes to npm
Terminal window
# Build all packages
pnpm build
# Publish types first (sdk depends on it)
cd packages/types
npm publish --access public
# Publish SDK
cd ../sdk
npm publish --access public

The demo application and marketing website are in a separate repository:

Repository: sip-protocol/sip-website

Deployment: Vercel (Git-integration auto-deploy)

  • Production: sip-protocol.org

The marketing website migrated from the VPS to Vercel in June 2026, alongside the docs, blog, and CDN. The sip-app privacy application remains on the VPS (Docker).

Architecture (Vercel — docs, blog, cdn, sip-website):

GitHub Push (main) → Vercel Git integration → build → deploy

Architecture (VPS — sip-app):

GitHub Push → GitHub Actions → GHCR → SSH Deploy → Docker Compose

See the sip-website repository for deployment details.


Terminal window
# Run locally to see errors
pnpm typecheck
Terminal window
# Check coverage locally
cd packages/sdk
pnpm test:coverage
  • Ensure package name is available or you own the scope
  • Verify NPM_TOKEN has publish permissions
  • Check if 2FA is required (use automation token)

Before publishing a release:

  1. Update versions in packages/*/package.json
  2. Update CHANGELOG.md
  3. Create GitHub Release with tag (e.g., v0.1.0)
  4. Workflow automatically publishes to npm

Last Updated: June 6, 2026