Agent99's white-label customization repo — forked from mintbot-ai/agent-template. Fork it, edit the theme and persona, point MintOffice at it, and each Agent99 agent installs the customization itself.
This repo is the starting point for an Agent99 white-label agent. The repo URL goes into MintOffice once; from then on the customization runs on each agent's own server — never on mintbot's central infrastructure.
┌─ This repo ────────────┐ ┌─ MintOffice ─────────┐ ┌─ Agent99 user's VPS ─────────┐
│ github.com/mintbot-ai/ │ → │ Customization repo │ → │ clones this repo, then runs │
│ agent99-template │ │ URL field │ │ install.sh (once) / │
└────────────────────────┘ └──────────────────────┘ │ update.sh (after each update)│
└──────────────────────────────┘
When an Agent99 agent deploys, the platform sets up the base agent exactly as usual, then — on the agent's own server — clones this repo and runs:
| Script | Runs |
|---|---|
install.sh |
once, after the deploy finishes and the agent is healthy |
update.sh |
after every base-package update, once the new base is live |
The order is always base first, Agent99 layer second — so the customization sits on top of a known-good agent. The scripts run as root on the agent's own VPS. mintbot's central platform never executes a byte of this repo — it only hands the validated URL to the server.
Safety net: a missing, broken, or slow script is isolated — it can never break the agent or block a future update. The customization just won't apply, and the reason is logged on the box. Keep the scripts idempotent.
Unlike the upstream starter (which only applies a tone overlay), this fork is a full white-label out of the box — install.sh / update.sh call both apply_full_persona and apply_brand_voice, so the agent talks as Agent99 end-to-end:
| Path | Purpose |
|---|---|
install.sh |
One-time post-deploy hook (theme + full persona + tone overlay). |
update.sh |
Re-applies all three after each base update. |
lib/common.sh |
Shared helpers (install_panel_theme, apply_brand_voice, apply_full_persona). |
theme/theme.css |
Panel theme — the Agent99 purple dark look. |
theme/theme.js |
Optional small JS hooks for the panel. |
theme/theme.json |
Theme metadata (name, version, author, entry paths). |
persona/soul.full.md |
Full Agent99 persona — replaces the bundled mintbot persona. |
persona/brand_layer.md |
Short Agent99 voice & tone overlay (the spy-bureau wink). |
preview/index.html |
Local preview of the theme. |
docs/ |
The contract, theming, persona, and publishing guides. |
tests/ |
Local sanity checks (bash -n, shellcheck, persona rules). |
- Edit
theme/theme.css— the Agent99 colours live under:root. - Edit
persona/soul.full.md— the full brand persona (voice, service policy). - Edit
persona/brand_layer.md— short tone nudges on top. - Open
preview/index.htmlin your browser to check the theme. - Run
pytest -qlocally (installshellcheckfor the full set). git pushtomain— CI should be green.- MintOffice already points at this repo; redeploy an agent to apply.
docs/contract.md— the exact environment, paths, and lifecycle the scripts run under. Start here.docs/theming.md— every panel CSS variable explained.docs/persona.md— full Agent99 persona vs. the tone overlay, and how both are wired up.docs/publishing.md— registering this repo with MintOffice.
MintOffice tracks this repo's main branch. The agent re-clones it fresh each time it runs install.sh / update.sh, so the latest commit is what applies — there is no separate "publish" step. Keep main green.
MIT — see LICENSE. This repo is a downstream fork of mintbot-ai/agent-template; upstream changes can be cherry-picked in as the contract evolves.