For whoever keeps the studio running

Admin setup guide

Get Grok talking, keep data durable, then plug Postiz in for semi and full publishing. Users never need this page.

← User guide
  1. 1

    Run

    npm run dev :3050

  2. 2

    Grok

    Hermes or API key

  3. 3

    Data

    File or MySQL

  4. 4

    Postiz

    Docker + social apps

  5. 5

    Map

    Channel IDs

  6. 6

    Cron

    Weekly job

  7. 7

    Check

    /api/health

1

Start the studio

Port 3050 so it doesn’t collide with Brandroom (3000) or BrandOS (3040).

Terminal
cd C:\ai\brandstudio
copy .env.example .env.local
npm install
npm run dev

Then open http://localhost:3050

Set BRANSTUDIO_SESSION_SECRET in .env.local before any real users.

Leave Brandroom and BrandOS folders alone — this repo is the one we run.

Done whenhttp://localhost:3050 loads the landing page and you can register.

2

Connect Grok

Desk uses Hermes OAuth. Vercel needs an API key.

Header chip
BrandroomGrok hermes-proxy+xai-oauth

Green chip = models are reachable. Gray “offline” = start the proxy.

On this machine

hermes proxy start --provider xai --host 127.0.0.1 --port 8645

On Vercel

Set XAI_API_KEY. Hermes is not on the server.

Done whenthe header chip is green (hermes-proxy+xai-oauth or xai-api-key), not “offline”.

3

Pick where data lives

File JSON is fine on the desk. Use MySQL when more than one person or a host that forgets /tmp.

Default · desk

File DB

data/brandstudio.db.json + uploads. No extra services.

Hosted

MariaDB / MySQL

Import sql/schema.sql, then set DATABASE_URL or MYSQL_HOST / user / password / database.

Done whendesk = data/brandstudio.db.json exists after first login; hosted = health reports storage.mode: mysql.

4

Stand up Postiz

Only needed for semi or full auto. We call its API — we do not fork the repo (AGPL).

Terminal
cd C:\ai\brandstudio
docker compose up -d

UI: http://localhost:5000

Create developer apps at Meta, LinkedIn, and X. Paste those keys into Postiz.

Instagram needs a Facebook Page + Business account.

In Brandstudio .env.local:

POSTIZ_BASE_URL=http://localhost:5000/api/public/v1
POSTIZ_API_KEY=...
CRON_SECRET=long-random

Done whenPostiz UI opens on :5000 and you can log in. Skip this whole step if every brand stays manual.

5

Map channels on each brand

Users pick the pipeline. You give them working integration IDs.

Brand → Publish
manualsemifull
instagram integration idig_…
linkedin integration idli_…

Connect accounts inside Postiz first. Switching a brand to semi/full without channels snaps it back to manual and lists what’s missing.

Done wheneach platform the brand uses has an integration id saved, and the mode stays on semi or full after save.

6

Turn on the weekly job

Full mode only. First week stays supervised unless “Training week done” is checked.

While the app is running
npm run weekly
# or
curl -X POST http://127.0.0.1:3050/api/cron/weekly
  -H "Authorization: Bearer $CRON_SECRET"

Hook that URL to Windows Task Scheduler / cron every Sunday night.

Per brand: Kill switch pauses the job. Failed slots skip — they don’t block the rest of the week.

Done whena test npm run weekly returns without auth errors. Full brands with training unchecked are skipped on purpose.

7

Health check

If Grok or storage is down, users will see it in the header. Confirm here first.

GET /api/health
{
  "ok": true,
  "storage": { "mode": "file" },
  "grok": { "ok": true, "source": "hermes-proxy+xai-oauth" }
}

ok: false — fix Grok or disk/MySQL before blaming the UI.

Social APIs will still break sometimes. Fall back to ZIP for that network. The studio already did its job.

Open /api/health

Done whenok: true for both storage and Grok. Then hand users the other guide.

Users should only need the other guide. This page is for you.

Show me the user path