Third-party accounts¶
Inventory of every external service Tomoda has an account with. Use this page to answer "do we already have an account with X?" Credentials don't live here — see Secrets management for which secret backs which integration.
When to add a row
A new SaaS sign-up, paid subscription, or developer-program enrollment goes on this page in the same commit as the code/config that depends on it. Removing an account: leave the row briefly with status "closed" so the audit trail survives one quarter, then delete.
Cloud + edge¶
| Account | What we use it for |
|---|---|
Google Cloud — development-485000 |
The primary cloud. GKE cluster, Artifact Registry, Cloud Build, Secret Manager, GCS (Terraform state + Photon index + Tempo traces + Loki chunks), VPC, IAM |
| AWS — root account | Static assets only. S3 (tomoda-assets-{env}), CloudFront, ACM TLS certs, AWS Secrets Manager (uploader creds for ESO) |
| Cloudflare | DNS for tomoda.life, Workers (synthetic monitoring probes), Pages (docs.tomoda.life), Zero Trust Tunnel + Access (Loki push from synthetic Worker) |
Observability + alerting¶
| Account | What we use it for |
|---|---|
Sentry (tomoda org) |
Frontend error tracking, crash-free %, transaction performance from the mobile + web app. Backend errors go to Loki/Tempo instead |
| Discord (Tomoda guild) | Alert routing — Alertmanager → #monitoring webhook, plus Sentry integration and synthetic-Worker failure notifications. One webhook today |
Auth + identity providers¶
These exist because the app supports sign-in with each provider. Each is its own developer-program enrollment, separate from the cloud account.
| Account | What we use it for |
|---|---|
| Google Cloud — OAuth 2.0 Clients | Google Sign-In on web, iOS, and Android. Three OAuth client IDs (web, iOS-bundle-scoped, Android-package-scoped). Lives under the same GCP project as everything else |
| Apple Developer Program | Apple Sign-In (iOS native + web), APNs push notifications, App Store Connect membership. Paid: $99/year |
| LINE Developers | LINE Login. Free tier |
App stores¶
| Account | What we use it for |
|---|---|
| Apple App Store Connect | iOS app submission, TestFlight builds, App Store reviews. Bundle ID com.tomoda.app. Tied to the Apple Developer Program above (same team account) |
| Google Play Console | Android app submission + internal testing tracks. Package com.tomoda.app. One-time $25 registration fee |
Product + payments¶
| Account | What we use it for |
|---|---|
| Stripe | Subscriptions, one-off payments, webhook events |
| Resend | Transactional email — OTP, welcome, deactivation. API-only, no inbox management |
| Klipy | GIF / sticker / clip search in the chat composer. Content provider API |
AI + external data APIs¶
Prepaid balances — the cost-exporter tracks these and alerts before they run dry.
| Account | What we use it for |
|---|---|
| DeepSeek | LLM for the semantic location resolver. Prepaid balance; deepseek_balance_usd gauge + DeepSeekBalanceLow alert |
| Serper | Search enrichment for the location resolver. Prepaid credit pack; serper_credits_remaining gauge + SerperCreditsLow alert (dormant until the backend serper_requests_total counter ships) |
Source control + CI¶
| Account | What we use it for |
|---|---|
GitHub — tomoda-labs org |
Source of truth for all repos (tomoda, devops, etc.). GitHub Actions workflows. ARC GitHub App for the self-hosted runner pool |
Where the master credentials live¶
Per-account admin logins (web dashboards) are stored in the team password manager. API keys, OAuth secrets, signing keys used by the app or CI are not in the password manager — they live in GCP Secret Manager / AWS Secrets Manager and reach the app via ExternalSecrets.
Updating this page¶
Add a row when:
- A new SaaS sign-up or paid subscription is created (e.g. a new analytics vendor)
- A new sign-in provider is wired into the backend
- A new mobile / desktop app-store enrollment happens
- A new domain registrar or DNS provider is introduced
Remove a row when the account is closed and the corresponding code paths are gone. If you're unsure whether a row is still load-bearing, grep secrets-management.md for the related secret name before deleting.
For who can access what (RBAC inside each provider), see Access control. For credential rotation, see Secrets management — Rotating secrets.