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

schemaVersion1bodyrequired

Always 1.

projectNamestringbodyrequired

Display name; also the default for host state and cache directory names.

nativeShellsobjectbodyrequired

The 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.

environmentsobjectbodyrequired

development, 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.

simslimProfilestringbody

Path to a SimSlim profile JSON applied on every iOS boot.

autoSlimbooleanbodyDefault: true

Slim devices booted outside the fleet. See Always slim.

stateDirectoryNamestringbody

Folder under ~/Library/Application Support for lanes and leases. Default: <projectName> Sim Fleet.

cacheDirectoryNamestringbody

Folder under ~/Library/Caches for native builds.

appProcessNamesstring[]body

Process names the dashboard treats as your app when attributing simulator memory.

metroobjectbody

env and modeEnv.debug / modeEnv.release: environment variables for Metro and release bundling. Values can use {environment}, {mode}, and {port} (embedded for release).

release.entryFilestringbody

Entry file for release bundles. By default the first of index.ts, index.tsx, or index.js that exists.

nativeFingerprintobjectbody

Override or extend fingerprint inputs: rootFiles, sourceDirectories, localNativeDirectories, localNativeFiles.

worktreesobjectbody

baseRef, overlayFiles, removedFiles, sharedPaths, and skills. See Worktrees.

androidobjectbody

activity (launcher activity override) and avdslimArgs (extra avdslim flags, for example ["--keep=com.google.android.apps.maps", "--ram=3072"]).