App~/docsmenu+close×
01Quickstart/start02Environment/start03Architecture/system04API Map/reference05Migrations/data06Custom Tools/extend07Customization/extend08Licence/legal
Back to App
~/docs
01Quickstart→02Environment→03Architecture→04API Map→05Migrations→06Custom Tools→07Customization→08Licence→
AgentZero / docs
v0.1 · built in SA

Customization & Branding

Version: 0.1.0 Last Updated: May 2026

end

This guide covers everything you'll want to change to make AgentZero feel like your product instead of ours.

You can ship to production without changing a single thing in this guide — AgentZero is functional out of the box. But your customers will care about your brand, not ours.

end

1. Name & logo

Product name

The name "AgentZero" appears in a few places. Search and replace:

$  snippetread-only
# From your project root grep -rn "AgentZero" --include="*.tsx" --include="*.ts" --include="*.md"

Key spots:

  • ›app/layout.tsx — <title> and metadata
  • ›components/landing/LandingNav.tsx — top-left logo text
  • ›app/page.tsx — footer wordmark
  • ›app/dashboard/layout.tsx — sidebar header
  • ›public/manifest.webmanifest — PWA name

Logo / favicon

  • ›app/icon.tsx and app/apple-icon.tsx — programmatic icons. Edit the JSX inside.
  • ›app/icons/icon-192/route.tsx and icon-512 — larger app icons (used by PWA install).
  • ›If you'd rather use static PNGs, replace these route files with a public/icon.png and a static <link> in app/layout.tsx.
end

2. Brand colours

AgentZero uses CSS custom properties + Tailwind v4 tokens. One file to edit:

app/globals.css

$  snippetread-only
:root { --primary: <your-brand-colour>; /* main accent — buttons, links, highlights */ --primary-foreground: <text-on-primary>; /* text colour on primary backgrounds */ --background: <your-bg>; /* page background */ --foreground: <your-text>; /* default text */ --muted-foreground: <your-muted-text>; --card: <surface-colour>; /* raised surfaces */ --secondary: <alt-bg>; /* alternating section backgrounds */ }

Tips:

  • ›The default theme is dark — if you go light, also flip the dark class on <html> in app/layout.tsx.
  • ›The primary colour is used aggressively. Pick something that reads well on both --background and --secondary.
  • ›Test contrast with a tool like webaim.org/resources/contrastchecker. WCAG AA minimum is 4.5:1 for body text.
end

3. Landing page copy

The landing page is intentionally all in one file so you can edit it in one sitting.

app/page.tsx — the constants at the top of each section component are the easiest things to change:

  • ›MARQUEE_ITEMS — the rolling tech-stack strip
  • ›STATS — the stats band numbers
  • ›STACK_CARDS — the "six domains" cards
  • ›LOG_ENTRIES — the founder's log entries (rewrite to your own narrative)
  • ›FOUNDING_FEATURES — the pricing card bullet list

components/landing/HeroSection.tsx — the headline, body copy, and architecture diagram tooltips.

components/landing/FaqSection.tsx — the FAQ entries. Rewrite to match your support policy, refund window, pricing.

components/landing/DeliverablesSection.tsx — the "what you get for $X" cards.

end

4. Pricing & launch config

components/landing/launch-config.ts is the single source of truth for:

  • ›Launch date (drives the countdown)
  • ›buyEnabled toggle (flips every CTA from waitlist → buy button)
  • ›Checkout URL (your Lemon Squeezy / Stripe / whatever link)
  • ›Display price

Change the price in this file and it propagates to the hero, banner, pricing card, and deliverables block.

end

5. Default AI model

lib/ai/model-registry.ts — the registry of available models. Index 0 is the default selected for new agents.

$  snippetread-only
export const MODEL_REGISTRY: ModelMetadata[] = [ { id: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5" }, // ← default { id: "openai/gpt-4o-mini", label: "GPT-4o Mini" }, // ... ];

To add a new model: get the exact ID from your Vercel AI Gateway dashboard, paste it in. No other code needs to change.

To remove a model: delete the line. Don't worry about existing agents — they'll fall back to the default on next run if their saved model is missing.

end

6. Agent voice & tone

lib/ai/system-prompts.ts — two exports:

  • ›BASE_VOICE — the default tone every agent uses (opinionated, action-driven). Toggleable per-agent via agents.use_base_voice.
  • ›BASE_TOOL_RULES — instructions for how the agent calls its tools. Always appended. The model can't use tools without these rules.

If your product is, say, a legal-research agent, you'll want to rewrite BASE_VOICE to be cautious and hedged instead of opinionated and direct. The structure (facts vs. voice) is worth keeping — it produces clean output that's easy for end users to parse.

end

7. Email templates

If you've wired up Resend, the email templates live in:

  • ›lib/email/templates/ — JSX-based React Email templates
  • ›Update the from line via RESEND_FROM_EMAIL
  • ›Test by triggering the waitlist signup or a password reset

For now, AgentZero ships with minimal templates — waitlist confirmation and (planned) magic-link auth. Add your own templates for purchase confirmation, agent-run notifications, etc.

end

8. Analytics

The codebase ships with three analytics hooks already wired:

  • ›Google Analytics — GA_ID constant in app/layout.tsx. Replace with your ID or delete the <Script> blocks.
  • ›Plausible — components/analytics/PlausibleInit.tsx. Replace the domain or delete the component.
  • ›Vercel Analytics — <Analytics /> in app/layout.tsx. Free with any Vercel deployment. Keep it.

Replace or remove as needed before launch — Google Analytics with the wrong ID is just dead pixel-tracking.

end

9. Domain & deployment

Once you've branded everything:

  1. ›Buy a domain
  2. ›Vercel → Project → Settings → Domains → Add
  3. ›Update DNS at your registrar (Vercel shows you exactly what records to set)
  4. ›Update NEXTAUTH_URL env var to your new domain
  5. ›Redeploy (Vercel does this automatically when env vars change)
end

10. Things you probably shouldn't change

A few things are load-bearing in non-obvious ways. Change them carefully:

  • ›Embedding dimensions (1024) — locked to the NVIDIA NIMs model. If you swap embedding providers, you must rerun the embedding migration with the new dimension count, or all RAG queries will fail.
  • ›Auth.js JWT strategy — switching to database sessions adds DB hits per request. Stick with JWT unless you have a strong reason.
  • ›adminClient usage in Server Actions — it bypasses RLS. The org-scoping in your queries is what keeps tenants isolated. Don't remove the .eq('organisation_id', session.user.orgId) filters.
  • ›Credit guard atomicity — the pre-run check + post-run deduction happen in one transaction. If you split them, you'll hit race conditions where two concurrent runs both pass the balance check.
end

Checklist before public launch

  • ›[ ] Product name replaced everywhere
  • ›[ ] Logo / favicon replaced
  • ›[ ] Brand colours in globals.css
  • ›[ ] Landing page copy reflects your product
  • ›[ ] Pricing matches what you actually charge
  • ›[ ] FAQ rewritten to match your policies (refunds, support, licence terms)
  • ›[ ] Default AI model picked
  • ›[ ] System prompt voice tuned for your audience
  • ›[ ] Email from address set
  • ›[ ] Analytics IDs replaced or removed
  • ›[ ] Domain pointed at Vercel
  • ›[ ] NEXTAUTH_URL matches production domain
  • ›[ ] All test/dev data cleared from production Supabase
  • ›[ ] Lemon Squeezy webhook URL registered and tested with a real $1 product

When all boxes are ticked, you're shipping your product, not ours.