Skip to content

Configuration schema

fireemu.toml is described by a JSON Schema. Download it from this site, or read it in the repository:

The same settings can be written as TOML (fireemu.toml) or JSON (fireemu.json); see Configuration files for which file is loaded. Fireemu validates the file at startup, including rules the schema cannot express, and stops with an error on a value it does not accept. npx fireemu config show prints every key with its effective value and source.

Section What it configures Guide
schemaVersion Always 1
profile, productionExact Production or official-emulator behavior Profiles and productionExact
firebaseJson The firebase.json to read ports, rules, indexes and Functions from Configuration files
firestore Edition, API mode, indexes, limits, history Cloud Firestore
rules Firestore Security Rules source, and the denial log for Firestore and Storage Security Rules
auth requireClientApiKey (default false) makes the emulator profile refuse client requests without an API key or Authorization header with the official emulator 403; strict is unchanged. Also configures sign-in methods, password policy, MFA, tenants, providers, tokens, and whether the Firestore, Storage and Realtime Database Security Rules surfaces accept unsigned mock ID tokens (allowUnsignedIdTokens) Authentication
storage Storage Security Rules, object size, buffered-body and stored-byte limits Cloud Storage
database What a Realtime Database instance without a rules file allows (defaultAccess); auth.allowUnsignedIdTokens decides, in both profiles, whether its rules accept @firebase/rules-unit-testing mock tokens Realtime Database
hosting Two development defaults of the strict profile: cacheControl ("none" by default, "production" with productionExact adds Cache-Control: max-age=3600 to files) and clientCountry ("honoured" by default, "ignored" with productionExact) Firebase Hosting
functions Codebase, runner, application clock, unserved triggers, a fixed list of served functions (manifest), and authBlockingToken ("emulated" by default, "production" with productionExact under strict, delivering a signed token verified by the Python runner using the SDK rules; Node functions receive the same production-shaped token but do not verify it, so they behave as before) Cloud Functions
scheduler Time zone, catch-up and overlap of scheduled functions Time and scheduled functions
pubsub, eventarc Authentication and delivery settings Pub/Sub and Eventarc
appCheck Apps, debug tokens and enforcement App Check
daemon Ports, project, start time, how the clock moves (clock) Time and scheduled functions
network Listening off loopback (allowNonLoopbackHosts), and the extra Host names the emulators answer (allowedHosts, the DNS-rebinding defence) CI and containers
bind Accepted, currently no effect: the daemon binds the loopback address, and emulators.<name>.host in firebase.json sets a host per service CI and containers
projects Whether only demo- project IDs are accepted (requireDemoPrefix), and whether a request naming another project is served or refused (unknownProjects) Profiles and productionExact
limits Reserved for limit catalogs, warnings, quota accounting and plan overrides. No member changes behavior yet: each is accepted with no effect, or accepts only its empty or default value and refuses any other. Firestore’s limits are switched by firestore.enforceLimits
events Delivery of function trigger events: maxAttempts for functions declared with retry (default 4); delivery accepts only exactly-once-test Profiles and productionExact
trace Accepted, currently no effect

storage.maxObjectBytes sets the maximum size of one object (default 268435456 bytes, maximum 2143289343). The request body cap is this value plus 4194304 bytes. storage.bufferedBodyBudgetBytes sets the process-wide budget for buffered Storage request bodies (default 1073741824 bytes, maximum 2147483647). Both values must be positive whole numbers. See Cloud Storage for the separate stored-byte and resumable-upload limits.