Skip to content
Build Station

Settings and security

All Build Station settings, where configuration and logs are stored, what's kept in the keychain and what is sent to which services.

Einstellungen (Settings) in the sidebar collects everything that applies to the whole Station. Project-specific settings, on the other hand, are in the project editor, see Adding projects.

The sections

Section What you set there
Ausführung (execution) Shell-Modus (shell mode), Parallele Builds (parallel builds), Benachrichtigung bei Build-Ende (notification when build finishes) and flutter analyze beim Projektwechsel (flutter analyze on project switch)
Nach dem Upload (after upload) Git-Tag setzen (set Git tag) and Tag nach origin pushen (push tag to origin), see Artifacts and upload
Zusätzliche PATH-Einträge (additional PATH entries) folders placed in front of the PATH. Default: /opt/homebrew/bin and /usr/local/bin
Sammelordner (collection folder) where artifacts land, default ~/Builds/iw-buildstation
Codemagic API token, see Codemagic
KI-Reparatur (AI repair) Claude API key, model, daily limit, see When a build fails
MCP-Server (MCP server) registration with an AI assistant, see MCP server
Toolchain which tools are found in the selected shell
Wartung (maintenance) Gradle-Daemons stoppen (stop Gradle daemons)
Dateien (files) location of config.json, runs.json, settings.json and the logs
Lizenz (license) license key and status, see License
Fernzugriff (remote access) use in the browser, see Remote access
Über die App (about the app) version, Nach Updates suchen (check for updates) and Nutzungshinweis anzeigen (show terms of use notice)

Shell mode and toolchain

An app launched from the Finder doesn’t inherit the PATH settings from ~/.zshrc. That’s why, by default, the Station starts every command through a Login-Shell (/bin/zsh -lc) (login shell), which loads your shell configuration. The alternative Direkt (/bin/zsh -c) (direct) doesn’t load it and therefore often can’t find fvm or fastlane.

Under Toolchain, the Station checks fvm, flutter, git, java, xcrun, pod and zip and shows the version it found. If a required tool is missing, the login shell or an additional PATH entry usually helps. Erneut prüfen (check again) repeats the test.

Build Station updates

Nach Updates suchen under Über die App checks whether there’s a new version and shows it with release notes. The signed version from the download also checks by itself once a day.

Where your data is stored

Everything the Station saves is stored in one folder:

~/Library/Application Support/de.inwendo.buildstation/
File Content
config.json projects and presets
runs.json build history with checklists
settings.json global settings
uploads.json when which version went to which store
license.json result of the last license check, without the key
remote_access.json settings and password hash for remote access
autofix_rules.json saved repair rules
autofix/backups/ backups made before automatic repairs
logs/<Lauf-ID>.log complete build logs

All writes are atomic: the Station first writes a temporary file and then renames it. A crash in the middle of writing won’t destroy the history.

Editing config.json by hand

Normally you don’t need to touch any JSON file. If you want to, you still can: Einstellungen › Dateien › Im Editor öffnen (Settings › Files › open in editor), edit, save, then click the Konfiguration neu laden (reload configuration) icon next to PROJEKTE (Projects) in the sidebar.

If the file contains errors, the Station shows a banner with the location and leaves the file unchanged. It’s never replaced by a version the Station couldn’t read.

The keychain

Credentials are never in config.json. They’re stored in this Mac’s macOS keychain:

Service Content
de.inwendo.buildstation.store store credentials per project: service account, .p8, Partner Center key, webhook secret, Sparkle key
de.inwendo.buildstation.codemagic Codemagic API token
de.inwendo.buildstation.anthropic Claude API key
de.inwendo.buildstation.license license key

You can view and delete the entries in Keychain Access. In the Station, the Aus Schlüsselbund entfernen (remove from keychain) or Entfernen (remove) buttons remove them individually.

So a config.json or buildstation.json you pass on contains no credentials. Exception: for fastlane supply, the path to the service account JSON is in the configuration, not its content.

Secrets in Dart defines

The intended way for secrets that belong in the app is --dart-define-from-file pointing to a file in the project that’s excluded via .gitignore. The Station never reads its content, it only passes the path on.

Values in Dart defines and env whose keys match KEY, SECRET, TOKEN, PASSWORD or DSN are shown masked in the interface. That protects against people looking over your shoulder, but it isn’t encryption: in config.json they’re stored in plain text.

Without a sandbox

The Build Station runs without the App Sandbox. Otherwise it could neither launch Flutter, Xcode and Gradle nor read and write in your project folders. That’s also why it isn’t available in the Mac App Store.

It follows that presets are executable code. A custom script runs with all the permissions of your macOS user. An imported project JSON, a buildstation.json from someone else’s repository or a project passed on to you is as trustworthy as a shell script from a stranger. Look inside before you use it.

The Station itself never runs sudo. Commands that need an administrator password are only shown, and it opens a terminal for them.

What is sent to whom

The Station only sends data to services you set up or trigger:

Destination What When
Google Play, App Store Connect, Microsoft Partner Center artifacts, release notes, signed sign-in tokens on upload, on connection test and when querying the latest store version
Apple notarization the app to be notarized for direct macOS distribution
GitHub (via gh) or your webhook DMG, appcast, metadata for direct macOS distribution and when setting up a Codemagic webhook
Codemagic API calls with your token in the Codemagic tab
Anthropic log excerpts, build files, individual project files or commit subject lines only with Mit Claude analysieren (analyze with Claude) and Aus Commits vorschlagen (KI) (suggest from commits, AI)
inwendo license server your license key at launch and once a day, only with a license entered

On top of that come queries without personal data: the official Flutter release list for Flutter updates and pub.dev for repair suggestions.

Store keys never leave the Mac in plain text, only as a signed token to the respective store. For the duration of an altool call, the .p8 sits in a temp folder only your user can read.

Terms of use notice

On first launch, the Station shows a terms of use notice that you agree to. It summarizes what the app does on your Mac and what you’re responsible for. You can reread it at any time under Einstellungen › Über die App › Nutzungshinweis anzeigen (Settings › About the app › show terms of use notice).

Reporting security vulnerabilities

If you’ve found a security vulnerability, please write to security@inwendo.de.