Operator console.
Change the app without a new build.
The console is the MIKODES Admin Kit, set up for Pocketmind. It is optional: without it the app uses its bundled config.
01Run it
The commands below are for a macOS or Linux terminal. On Windows use PowerShell or Git Bash (WSL also works); flutter, npm and keytool work the same. iOS builds need a Mac.
cd admin
npm install
cp .env.example .env # set ADMIN_SECRET_KEY (openssl rand -hex 32) and ADMIN_SETUP_TOKEN (openssl rand -hex 24)
npm start # builds to dist/ and runs: http://localhost:8790/admin
Open /admin, enter the setup token, your email and a password of 12+ characters: that creates the owner. Then build the app with --dart-define=API_BASE_URL=https://your-console-host.
Docker: docker build -t pocketmind-admin . and docker run -p 8790:8790 -v pocketmind-admin-data:/app/data --env-file .env pocketmind-admin. Behind a reverse proxy set TRUST_PROXY_HOPS.
02What you can change
| Section | What it does in the app |
|---|---|
| Branding | App name, tagline, accent colour. |
| Legal | Terms and privacy policy links (Settings, paywall). |
| Features | Free / Pro / Off for each feature. Off hides it. |
| Model catalog | One JSON line per model (format). An invalid line is skipped and named on Status. |
| Assistant styles | One JSON line per style: {"id","name","systemPrompt"}. |
| Texts | AI notice, privacy promise, onboarding and empty-chat texts. |
| Ads (AdMob) | Off by default; unit ids; interstitial frequency (max every reply, 20 at most). |
| Pro and paywall | Off by default; store product ids; paywall title and points. |


Every change is versioned, can be rolled back, and is written to the audit log with who changed what. Team members get the roles owner, manager or viewer.
03Status checks

- Every model line is valid: names skipped lines.
- Model files are reachable with the declared size: a HEAD request per file (cached for an hour).
- One default chat model.
- Paywall has store product ids when the paywall is on.
- Ads have unit ids when ads are on.
The console shows no revenue or user numbers: purchases and ads happen on the phones. Read them in Google Play Console, App Store Connect and AdMob.
04The app endpoint
GET /v1/config is public (the app has no account), returns no secret, allows any origin and is cached for 60 seconds. Its format is docs/CONTRACT.md.