Skip to main content

Configuration

Configuration is stored at ~/.config/kappmaker/config.json.

Managing Config

kappmaker config init # Interactive setup
kappmaker config list # Show all values
kappmaker config set <key> <value> # Set a value
kappmaker config get <key> # Get a value
kappmaker config path # Show config file path

App Store Defaults

kappmaker config appstore-defaults # View App Store defaults
kappmaker config appstore-defaults --init # Set up API key + review contact
kappmaker config appstore-defaults --save ./config.json # Save as global defaults

Adapty Defaults

kappmaker config adapty-defaults # View Adapty defaults
kappmaker config adapty-defaults --save ./config.json # Save as global defaults

Config Keys

KeyDescriptionDefault
templateRepoTemplate repository Git URLKAppMaker template
bundleIdPrefixBundle/package ID prefix (e.g., com.measify)com.<appname>
androidSdkPathAndroid SDK location~/Library/Android/sdk
organizationOrganization for Fastlane signingApp name
falApiKeyfal.ai API key
imgbbApiKeyimgbb API key
openaiApiKeyOpenAI API key
ascAuthNameASC keychain credential nameKAppMaker
ascKeyIdApp Store Connect API Key ID
ascIssuerIdApp Store Connect Issuer ID
ascPrivateKeyPathPath to .p8 private key
appleIdApple ID email
googleServiceAccountPathGoogle Play service account JSON~/credentials/google-service-app-publisher.json

Global Defaults

FileUsed byManage with
~/.config/kappmaker/appstore-defaults.jsoncreate-appstore-appconfig appstore-defaults
~/.config/kappmaker/adapty-defaults.jsonadapty setupconfig adapty-defaults

Global defaults are merged as a base layer so shared settings (review contact, privacy, subscriptions, etc.) don't need to be re-entered per app.

Config Resolution Order

For App Store Connect and Adapty, configuration is resolved by deep-merging layers (later overrides earlier):

  1. Built-in template — sensible defaults (age rating, privacy, encryption, subscriptions)
  2. Global defaults — shared settings across all your apps
  3. Local config (e.g., ./Assets/appstore-config.json) — per-project overrides
  4. Interactive prompts — only for fields still empty

Subscription Product ID Alignment

Subscription IDs are auto-generated so App Store Connect, Google Play, and Adapty all link automatically:

PlatformFieldFormatExample ($6.99 weekly)
App Store ConnectproductId{appname}.premium.{period}.v1.{price}.v1myapp.premium.weekly.v1.699.v1
Google PlayproductId{appname}.premium.{period}.v1myapp.premium.weekly.v1
Google PlaybasePlanIdautorenew-{period}-{priceDigits}-v1autorenew-weekly-699-v1
Adaptyios_product_idmatches ASC productIdmyapp.premium.weekly.v1.699.v1
Adaptyandroid_product_idmatches Play productIdmyapp.premium.weekly.v1
Adaptyandroid_base_plan_idmatches Play basePlanIdautorenew-weekly-699-v1

priceDigits is the price with the decimal removed (e.g., 6.99699). {period} is one of weekly, monthly, twomonths, quarterly, semiannual, yearly.