← Alter Wiki

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.

IntegrationWhat it doesHow it’s wired
Anthropic (Claude)Primary reasoning: recognition, compilation, all five modes@anthropic-ai/sdk, tool-use / structured output
OpenAIFallback LLM, plus embeddings for semantic searchopenai SDK in alter-mind and alter-vectors
Google GeminiThird provider in the multi-provider abstraction@google/generative-ai
Perplexity (Sonar)Explore-mode web research, hard-capped at ten searchesa dedicated search provider behind one interface
StripeSubscriptions and invoicing: six webhook handlers, test/staging/live modesstripe, in the gateway’s billing module
Google OAuthSign in with Googlepassport-google-oauth20
ResendTransactional mail (password reset, alerts) and the daily owner reportHTTP API; must send from the verified sub-domain
Cloudflare R2Encrypted six-hourly database backups (EU) + object storageS3-compatible, via @aws-sdk/client-s3
Google Drive / OneDrivePluggable file connectors in the vaultgoogleapis, Microsoft Graph
Web Push (VAPID)Browser notificationsweb-push
RedisQueues (recognition, compilation) and cachingioredis + Bull
PostgreSQL + pgvectorPrimary store + vector searchTypeORM
SentryError tracking, EU regiona custom zero-dependency client
Better StackUptime monitoring and alertingfour external monitors hitting /health/deep
UmamiProduct analytics, self-hosted, cookielessa container on the edge box, alongside the proxy
CaddyTLS termination and reverse proxy at the edgeDNS-01 certificates, origin locked to the CDN
HetznerProduction (ARM) and staging (x86) servers—
GitHub Actions + GHCRCI/CD and the image registryself-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.