Reference
Project configuration
Every field of .sim-fleet/project.json.
simfleet runs against the nearest directory containing .sim-fleet/project.json and resolves linked worktrees to their main checkout. Override the project with SIM_FLEET_PROJECT_ROOT. simfleet init writes a starter file.
{
"schemaVersion": 1,
"projectName": "my-app",
"nativeShells": {
"debug": { "appName": "My App Dev", "bundleId": "com.example.app.dev", "scheme": "myapp-dev" },
"release": { "appName": "My App", "bundleId": "com.example.app", "scheme": "myapp" }
},
"environments": {
"development": { "envFile": ".env.development", "portRange": [8100, 8199] },
"staging": { "portRange": [8200, 8299] },
"preprod": { "portRange": [8300, 8399] },
"production": { "portRange": [8400, 8499] }
}
}Required
schemaVersion1bodyrequiredAlways 1.
projectNamestringbodyrequiredDisplay name; also the default for host state and cache directory names.
nativeShellsobjectbodyrequiredThe debug and release native apps. Each has appName, bundleId, and scheme, plus optional legacySchemes (extra schemes to try when opening links), androidPackage (when it differs from bundleId), and googleServicesFile (checked to match bundleId). Bundle identifiers must not contain worktree suffixes.
environmentsobjectbodyrequireddevelopment, staging, preprod, and production, each with a non-overlapping portRange and an optional envFile.
Optional
nativeAuthobjectbody{ provider, allowedAppIdentifiers }. Every native shell's bundleId must be listed; native plan reports whether the installed app is.
simslimProfilestringbodyPath to a SimSlim profile JSON applied on every iOS boot.
autoSlimbooleanbodyDefault: trueSlim devices booted outside the fleet. See Always slim.
stateDirectoryNamestringbodyFolder under ~/Library/Application Support for lanes and leases. Default: <projectName> Sim Fleet.
cacheDirectoryNamestringbodyFolder under ~/Library/Caches for native builds.
appProcessNamesstring[]bodyProcess names the dashboard treats as your app when attributing simulator memory.
metroobjectbodyenv and modeEnv.debug / modeEnv.release: environment variables for Metro and release bundling. Values can use {environment}, {mode}, and {port} (embedded for release).
release.entryFilestringbodyEntry file for release bundles. By default the first of index.ts, index.tsx, or index.js that exists.
nativeFingerprintobjectbodyOverride or extend fingerprint inputs: rootFiles, sourceDirectories, localNativeDirectories, localNativeFiles.
worktreesobjectbodybaseRef, overlayFiles, removedFiles, sharedPaths, and skills. See Worktrees.
androidobjectbodyactivity (launcher activity override) and avdslimArgs (extra avdslim flags, for example ["--keep=com.google.android.apps.maps", "--ram=3072"]).