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
- Firebase Deployment -- step-by-step Firebase setup
- Docker Deployment -- containerized deployment
- Environments -- list of all deployment environments
- CI/CD Pipeline -- automated testing and deployment
- Configuration reference (psi-product) -- all configuration variables