Skip to content

Service catalog

The runtime components a RepoWrangler deployment is made of, what each does, and its operational properties. Use it to reason about scaling, failure, and monitoring. Which components exist depends on the target (see deployment.md).

ServicePackageRoleStateScaleHealth signal
Web SPAapps/webReact UI served as static assetsnoneCDN / any static hostHTTP 200 on /
APIapps/workerHono JSON API, auth, webhook receivernone (uses the store)horizontal on PostgreSQL; 1 replica on SQLiteGET /health/live, /health/ready
Schedulerapps/worker (runScheduled)Fires incremental (*/15) + daily (17 3) syncin-flight guard onlyexactly one replicaplatform-health sync-job state
Data storeD1 / persistence-sqlite / persistence-postgresNormalized estate snapshotstateful — back this upD1 edge-managed / SQLite single-node / PostgreSQL shared/health/ready (503 if not migrated)
Host shellCloudflare Worker or apps/serverRuns the API + serves SPA + drives cronnoneper targetprocess up
GitHub providerprovider-githubRead-only GitHub ingestionnonewith the APIconnection status
GitLab providerprovider-gitlabRead-only GitLab ingestion (optional)nonewith the APIconnection status
Mock providerprovider-mockDemo-mode datanonen/ademo mode

Where each service runs per target

TargetSPAAPI + SchedulerStore
Cloudflare WorkerWorker assetsWorker + wrangler cronD1
Docker / composeserved by apps/serverapps/server (in-process cron)SQLite (volume)
Azure Container Appsserved by apps/serverapps/serverSQLite (Azure Files) or PostgreSQL
Kubernetesserved by apps/serverapps/serverSQLite (PVC) or PostgreSQL
Decoupled SPAGitHub Pages / Azure SWACloudflare WorkerD1

Operational notes

  • The only stateful service is the data store — everything else is derived and redeployable. Back up the store; see operations.md.
  • Scheduler singleton: with more than one API replica (PostgreSQL), disable the in-process scheduler on all but one replica (ENABLE_SCHEDULER=false).
  • Idempotent sync + tombstone deletes mean a rebuild-from-providers converges to correct state if the store is lost.
  • Monitoring: poll /health/live for liveness, /health/ready for readiness, and /api/v1/platform-health for sync/webhook/provider health.

Apache-2.0 licensed. Read-only by design.