Deployment Guide
Deployment Guide
Section titled “Deployment Guide”This document describes CI/CD and deployment for SIP Protocol packages.
Repository Structure
Section titled “Repository Structure”SIP Protocol uses multiple repositories:
| Repository | Purpose | Deployment |
|---|---|---|
sip-protocol/sip-protocol | Core SDK + Types | npm registry |
sip-protocol/sip-website | Marketing website | Vercel (Git auto-deploy) |
sip-protocol/sip-app | Privacy applications | VPS (Docker) |
sip-protocol/docs-sip | Documentation | Vercel (Git auto-deploy) |
sip-protocol/blog-sip | Blog | Vercel (Git auto-deploy) |
sip-protocol/cdn-sip | CDN assets | Vercel (Git auto-deploy) |
Privacy App: The interactive application lives at sip-protocol/sip-app and is deployed to app.sip-protocol.org.
CI/CD Workflows
Section titled “CI/CD Workflows”The core repository includes two GitHub Actions workflows:
| Workflow | File | Trigger | Purpose |
|---|---|---|---|
| CI | ci.yml | Push/PR to main/dev | Lint, typecheck, test, build |
| Publish | publish.yml | GitHub Release | Publish packages to npm |
Required Secrets
Section titled “Required Secrets”Configure in GitHub repository settings (Settings > Secrets and variables > Actions):
npm Publishing
Section titled “npm Publishing”| Secret | Description | How to obtain |
|---|---|---|
NPM_TOKEN | npm automation token | npmjs.com > Access Tokens > Generate New Token (Automation) |
Initial Setup
Section titled “Initial Setup”1. npm Account Setup
Section titled “1. npm Account Setup”- Create npm account at npmjs.com
- Create organization
@sip-protocol(or use personal scope) - Generate automation token: Account > Access Tokens > Generate New Token
- Add token to GitHub secrets as
NPM_TOKEN
2. Enable GitHub Actions
Section titled “2. Enable GitHub Actions”Ensure GitHub Actions is enabled for the repository:
- Go to
Settings > Actions > General - Select “Allow all actions and reusable workflows”
- Save
Workflow Details
Section titled “Workflow Details”CI Workflow (ci.yml)
Section titled “CI Workflow (ci.yml)”Runs on every push and pull request to main and dev branches.
Jobs:
- lint-and-typecheck - Runs ESLint and TypeScript checks
- test - Runs test suite with coverage, uploads to Codecov
- build - Builds all packages, generates API docs
Dependencies:
- Test job requires lint-and-typecheck
- Build job runs in parallel
Publish Workflow (publish.yml)
Section titled “Publish Workflow (publish.yml)”Triggers on GitHub Release or manual workflow dispatch.
Jobs:
- test - Runs full test suite
- publish-sdk - Publishes
@sip-protocol/typesthen@sip-protocol/sdk - publish-docs - Generates and deploys API docs to GitHub Pages
Publishing Packages
Section titled “Publishing Packages”Automated (Recommended)
Section titled “Automated (Recommended)”- Update versions in
packages/*/package.json - Update CHANGELOG.md
- Create GitHub Release with tag (e.g.,
v0.1.0) - Workflow automatically publishes to npm
Manual
Section titled “Manual”# Build all packagespnpm build
# Publish types first (sdk depends on it)cd packages/typesnpm publish --access public
# Publish SDKcd ../sdknpm publish --access publicDemo & Website Deployment
Section titled “Demo & Website Deployment”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 → deployArchitecture (VPS — sip-app):
GitHub Push → GitHub Actions → GHCR → SSH Deploy → Docker ComposeSee the sip-website repository for deployment details.
Troubleshooting
Section titled “Troubleshooting”CI Fails on Typecheck
Section titled “CI Fails on Typecheck”# Run locally to see errorspnpm typecheckTest Coverage Drop
Section titled “Test Coverage Drop”# Check coverage locallycd packages/sdkpnpm test:coveragenpm Publish 403 Error
Section titled “npm Publish 403 Error”- Ensure package name is available or you own the scope
- Verify NPM_TOKEN has publish permissions
- Check if 2FA is required (use automation token)
Version Management
Section titled “Version Management”Before publishing a release:
- Update versions in
packages/*/package.json - Update CHANGELOG.md
- Create GitHub Release with tag (e.g.,
v0.1.0) - Workflow automatically publishes to npm
Last Updated: June 6, 2026