Pocketmind docs
v2.0.0
Live previewConsole demo Get help
● Set up

Configuration.
One JSON document controls the app.

The app reads its settings from the console when you set one, and otherwise from the config bundled in the app. Both use the same format.

docs/CONTRACT.md

01Where the config comes from

  1. The console, when the app is built with --dart-define=API_BASE_URL=https://your-console.example.com: GET /v1/config, 5 second timeout.
  2. The last good copy the app saved from the console (works offline).
  3. The bundled file app/assets/config/default.json (or the one named by --dart-define=DEFAULT_CONFIG=…).
  4. The built-in copy of that file in lib/config/default_config.g.dart, if everything else fails.

A response that is not a valid config never replaces a good one. Without API_BASE_URL the app never contacts a settings server.

02Fields

FieldMeaning
brand.name, brand.accent, brand.taglineName in the app, accent colour #RRGGBB, line under the name.
texts.*aiNotice, privacyIntro, onboardingTitle, onboardingBody, emptyChat.
features.<id>.tierfree, pro or off for chat, history, export, personas, lock, pdf, photo, voiceIn, voiceOut. Missing = off. While the paywall is off, pro = free.
models[]The catalog (Models).
ads.*enabled (false), four AdMob unit ids, interstitialEveryNReplies 0..20 (Ads).
paywall.*enabled (false), productIds.monthly/yearly/lifetime, title, bullets (Purchases).
personas[]{id, name, systemPrompt}: assistant styles.
legal.privacyUrl, legal.termsUrlLinked from Settings and the paywall.

The full contract with validation rules is docs/CONTRACT.md.

03Shipped defaults

  • Free: chat, history, export, assistant styles, app lock. Pro: PDFs, photos, voice in and out, the larger models.
  • Ads off, paywall off. While the paywall is off, everything is free.
  • assets/config/all-free.json: the same with every feature and model on Free, for review and test builds.