Skip to Content

Local Data

Use this page when teammates need personal test data without merge conflicts.

What changes locallyMechanism
Scalar config like URLs, IDs, flags.env.local and .env.local.secrets
Structured request bodies or example rows*.local.json next to shared data files

Local env files

Keep the team baseline committed and personal overrides gitignored:

.env # committed — team defaults .env.secrets # gitignored — team credentials .env.local # gitignored — personal overrides .env.local.secrets # gitignored — personal credentials

Switch to personal env files locally with:

glubean run --env-file .env.local

Local JSON data

For structured examples, keep shared and personal files in the same directory:

data/create-user/ shared.json zz-alice.local.json

fromDir() and fromDir.concat() load every matching file and append rows in sorted filename order. fromDir.merge() shallow-merges object files in sorted filename order, so later filenames win on duplicate keys.

There is no special runtime switch for local files. The convention is simpler:

  • Keep *.local.json, *.local.yaml, and *.local.yml gitignored.
  • Local runs can see personal files that exist on your machine.
  • CI sees only committed shared files because gitignored local files are absent.
  • If you intentionally want personal values to win for duplicate keys with fromDir.merge(), name the local file so it sorts later, such as zz-alice.local.json.

When you need an explicit shared-only run on your own machine, keep shared and personal data in separate directories or pass an ext/directory choice that matches only the shared files.

Next

Last updated on