Everything it talks to
The full integration inventory: every external service Alter depends on, and how each is wired.
The honest inventory, verified against the codebase rather than memory: dependencies, code, environment variables, and the public sub-processor register all agree with this table.
| Integration | What it does | How it’s wired |
|---|---|---|
| Anthropic (Claude) | Primary reasoning: recognition, compilation, all five modes | @anthropic-ai/sdk, tool-use / structured output |
| OpenAI | Fallback LLM, plus embeddings for semantic search | openai SDK in alter-mind and alter-vectors |
| Google Gemini | Third provider in the multi-provider abstraction | @google/generative-ai |
| Perplexity (Sonar) | Explore-mode web research, hard-capped at ten searches | a dedicated search provider behind one interface |
| Stripe | Subscriptions and invoicing: six webhook handlers, test/staging/live modes | stripe, in the gateway’s billing module |
| Google OAuth | Sign in with Google | passport-google-oauth20 |
| Resend | Transactional mail (password reset, alerts) and the daily owner report | HTTP API; must send from the verified sub-domain |
| Cloudflare R2 | Encrypted six-hourly database backups (EU) + object storage | S3-compatible, via @aws-sdk/client-s3 |
| Google Drive / OneDrive | Pluggable file connectors in the vault | googleapis, Microsoft Graph |
| Web Push (VAPID) | Browser notifications | web-push |
| Redis | Queues (recognition, compilation) and caching | ioredis + Bull |
| PostgreSQL + pgvector | Primary store + vector search | TypeORM |
| Sentry | Error tracking, EU region | a custom zero-dependency client |
| Better Stack | Uptime monitoring and alerting | four external monitors hitting /health/deep |
| Umami | Product analytics, self-hosted, cookieless | a container on the edge box, alongside the proxy |
| Caddy | TLS termination and reverse proxy at the edge | DNS-01 certificates, origin locked to the CDN |
| Hetzner | Production (ARM) and staging (x86) servers | — |
| GitHub Actions + GHCR | CI/CD and the image registry | self-hosted runners; a native ARM runner on the production box |
Two choices in that table are really one choice. Analytics is self-hosted and cookieless, and error tracking is a hand-written client rather than a vendor SDK, for the same reason: the privacy posture is only worth stating if the number of third parties that can see anything is small enough to enumerate, which is what the public sub-processor register does.