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.