Skip to content

Deployment Overview

PSI supports multiple deployment strategies to accommodate different partner requirements.

Deployment Options

graph TD
    A{Deploy PSI?} -->|"Use existing instance"| B[Use New Public's instance<br/>psi.newpublic.org]
    A -->|"Share partner instance"| C[Use a partner's instance<br/>e.g. for shared conversations]
    A -->|"Deploy your own"| D{Choose deployment mode}
    D -->|"Serverless"| E[Firebase Hosting<br/>+ Cloud Functions]
    D -->|"Containerized"| F[Docker / Hono<br/>Standalone]

    E --> G[Configure client + server]
    F --> G
    G --> H[Set up SSO provider]
    H --> I[Configure silo + features]

Option 1: Firebase Hosting + Cloud Functions (Primary)

The default and most battle-tested deployment mode. The frontend is a static SPA served by Firebase Hosting, and the backend runs as a Firebase Cloud Function.

Component Hosting
Frontend Firebase Hosting (static files)
Backend Firebase Cloud Functions (Node.js 22)
Database Firebase Realtime Database
Auth Firebase Auth
Storage Firebase Storage

Best for: Partners who want a fully managed, auto-scaling deployment with minimal infrastructure overhead.

See Firebase Deployment Guide for setup instructions.

Option 2: Docker / Hono Standalone

The same backend codebase can run as a standalone Hono server (via @hono/node-server) in a Docker container, without any Firebase Cloud Functions dependency.

Component Hosting
Frontend Any static file server (nginx, CDN, etc.)
Backend Docker container running Hono on port 5001
Database Firebase RTDB or MongoDB (via adapter)
Auth Firebase Auth (still used for token management)

Best for: Partners who need to deploy on their own infrastructure, or who want to use MongoDB instead of Firebase RTDB.

See Docker Deployment Guide for setup instructions.

Option 3: Use an Existing Instance

Partners can share an existing PSI deployment. Each partner gets their own silo (data partition) with independent configuration, language, and features.

Best for: Partners who want to start quickly without managing infrastructure, or who want to share conversation spaces with another partner.

Key Concepts

Silos

Every PSI deployment uses silos to partition data. Each silo typically corresponds to one partner:

Silo Key Partner Language
global Default / New Public English
zdf ZDF German
cbc CBC English
rc Radio-Canada French Canadian
srg SRG SSR German / French / Italian / Romansh
test Development testing English

Silos are configured in client/psi.config.ts with:

  • Firebase configuration
  • Allowed silos list
  • Per-silo language defaults
  • Per-silo theme settings
  • Per-silo default features

Configuration Files

File Purpose Location
psi.config.ts Client deployment configuration (Firebase config, silos, features) client/
.env.* Server environment variables (API keys, database URL, etc.) server/
.firebaserc Firebase project aliases Root
firebase.json Firebase services configuration Root

Further Reading