Skip to main content
The paths shown are defaults that environment variables can move.

The pitboard directory

pitboard’s directory is ~/.pitboard, or the path in PITBOARD_HOME. The command line and the app share it. pitboard creates each directory at mode 0700 and each file at 0600, except those in backups/. An existing directory keeps its mode. pitboard refuses a directory whose path contains Dropbox, Google Drive, OneDrive, com~apple~CloudDocs or Sync, because parked logins belong to one machine. Only files in vault/ and signin/ can hold a login. To delete the directory, see Remove pitboard.

Parked logins

On macOS, each parked login is an item in your default keychain, named pitboard-park-<account id>-<time>. Its keychain account is the one Claude Code’s item uses, usually your user name from USER. <account id> is a Claude Code account’s Anthropic UUID or, for OpenAI’s Codex CLI, is built from the account’s ChatGPT ids. <time> is when the login was parked or last renewed, in milliseconds since 1 January 1970. On Linux, each parked login is a file in ~/.pitboard/vault/, named pitboard-park-<account id>-<time>.json. For why parked logins are kept there, see Security and privacy.

Claude Code and Codex files

For how a switch changes these files, see How switching works.

Renewal schedule

pitboard schedule install, or turning on Renew parked logins daily in Settings > General, writes these files. pitboard schedule uninstall, or turning it off, removes them. So does pitboard uninstall when pitboard’s directory is ~/.pitboard.

The app

The app is Pitboard.app, with the bundle identifier com.usepitboard.Pitboard. The app stores these keys in ~/Library/Preferences/com.usepitboard.Pitboard.plist: macOS keeps Open pitboard at login as a login item, outside this file. The app’s files can also be in ~/Library/Application Support, ~/Library/Caches and ~/Library/HTTPStorages, named after com.usepitboard.Pitboard. To remove them, see Remove pitboard.

Environment variables

Opened from Finder, the app does not see your shell’s variables, so the defaults apply. Daily renewal runs with the scheduler’s environment, not your shell’s.