Config files
Xerg reads the file list of each repo, then the files that say what the repo uses and where it runs: Wherever they are in the repo:.gitlab-ci.yml, .sentryclirc, amplify.yaml, amplify.yml, azure-pipelines.yml, cdk.json, Chart.yaml, cloudbuild.yaml, cloudbuild.yml, doppler.yaml, doppler.yml, drizzle.config.js, drizzle.config.mjs, drizzle.config.ts, firebase.json, fly.toml, Gemfile, go.mod, kustomization.yaml, lerna.json, netlify.toml, nx.json, package.json, Pipfile, pnpm-workspace.yaml, Procfile, pyproject.toml, railway.json, railway.toml, render.yaml, render.yml, requirements.txt, schema.prisma, serverless.yaml, serverless.yml, turbo.json, vercel.json, wrangler.json, wrangler.jsonc, wrangler.toml.
It also reads, by pattern:
- Dockerfiles and Docker Compose files
- Terraform (
.tf) files - GitHub Actions workflows, CircleCI, GitLab CI and Azure Pipelines configs
- Kubernetes manifests in
k8s/orkubernetes/folders, and Helm charts - Sentry, Supabase and DigitalOcean App Platform configs
docs.jsonandmint.json(Mintlify docs sites)CODEOWNERS, for who owns what- Example env files, like
.env.example,.env.sampleand Cloudflare’s.dev.vars.example
node_modules, vendor, dist, build, tests, fixtures, examples, docs and the like), and any app an owner or admin leaves out in setup: nothing in that app’s folder is listed or read.
Each folder with its own manifest (a package.json that runs, go.mod, pyproject.toml and so on) or a Cloudflare wrangler config is an app on the map.
Source code, narrowly
Some services are called over plain HTTP, with no package or env variable to give them away. To find those, Xerg downloads source files and scans them (on by default; an owner or admin can turn it off in setup, and Xerg then reads config files and env variable names only):- It looks only for imports and API hostnames, matched against the services Xerg recognizes.
- It keeps only the service, the file and the line. Never the code, and never the hostname itself.
- Files named for a service (
stripe.ts,mixpanelClient.ts) come first, then paths likeanalytics,billingorwebhook, then the shallowest files. - It skips tests, type declarations, generated, vendored and minified files.
Env variables: names, never values
Xerg downloads example env files and keeps only the variable names, likeSTRIPE_SECRET_KEY, so it can tell which services an app uses and where a key is used. It drops the values without keeping them, and it never downloads real .env files.