Skip to content
Install

Files and environment

Where sochi keeps its state and build output, its environment variables, and what it reads and writes.

Variable Effect
SOCHI_TEAM Default for --team on run and build. A team ID or name.
NO_COLOR Turn off colours and the live status line. Both are also off when stderr isn’t a terminal.

The install script also reads SOCHI_VERSION, SOCHI_INSTALL and SOCHI_NO_MODIFY_PATH. See Install.

~/Library/Application Support/dev.sochi/

Path Contains
projects/<Name>-<hash>/state.json The scheme and team you used, and what was last installed on each device.
projects/<Name>-<hash>/packages-synced.toml What sochi.toml and the project agreed on at the last package sync. Used to tell which side changed.
defaults.json The organization identifier from sochi new --org.

Each project gets its own folder, named after the project with a hash of its path. Nothing here goes into your repository. Build settings are never stored, only choices.

~/Library/Caches/dev.sochi/

Path Contains
projects/<Name>-<hash>/DerivedData sochi’s build output, separate from Xcode’s. Package checkouts are in SourcePackages inside it.
entitlement-docs/ Apple’s entitlement documentation, cached when sochi looks up how to write a capability.

You can delete this folder at any time. The next build starts from scratch. sochi doctor prints its path.

  • project.pbxproj, edited in place in Xcode’s own layout. sochi never re-serializes the whole file, so diffs stay small.
  • .entitlements files.
  • Info.plist, for Background Modes.
  • sochi.toml.
  • Package.resolved, through xcodebuild.

While working, sochi may briefly create .sochi-package-*.xcodeproj or .sochi-migrate-*.xcodeproj next to your project. It always deletes them.

  • Your Xcode accounts and teams, from Xcode’s preferences.
  • The capability catalog Xcode downloads for your team, in ~/Library/Developer/Xcode/UserData/Capabilities.
  • Your own templates in ~/Library/Developer/Xcode/Templates and your IDETemplateMacros.plist.
  • Inside the selected Xcode: its templates, capability catalog, entitlement and Info.plist schemas, and product type definitions.

sochi itself goes online only to:

  • list a repository’s tags when you add a package without a version rule
  • resolve packages
  • fetch Apple’s entitlement documentation, with a short timeout and fine to skip offline

Signing and provisioning go through xcodebuild, as they do in Xcode.