You customize Vercel's eve marketing team template by editing files in its TypeScript repo. Add a specialist by creating a directory under agent/subagents/, remove a channel by deleting its directory, change shared voice in agent/lib/writing-quality/config.ts, and swap models in each agent's agent.ts. There is no registry file to keep in sync.
This guide maps each change to its file, walks through adding a specialist end to end, and gives you decision rules for deleting, adding, going remote, and swapping models.
Copy link to headingWhy won't the default team match your company?
The template ships one lead plus five specialists: product-marketer, content-marketer, social-media-coordinator, seo, and email. It runs on eve, Vercel's agent framework, and the hub guide covers what the default team looks like and how it's built. Treat that roster as a starting point, not a claim about your org.
Real marketing teams are small and unevenly shaped. In the Content Marketing Institute's report B2B Content Marketing: 2025 Benchmarks & Trends, published in October 2024, 54% of B2B marketers who have a dedicated content marketing team say it is two to five people, and 24% say they have no dedicated content marketing team or staff at all (CMI, 2024). Channel mix splits the same way: HubSpot's State of Marketing research finds B2B teams get their best returns from website, blog, and SEO, while B2C teams point to email, paid social, and content marketing; in the 2026 edition, drawn from 3,400 marketers, email and organic social tie as the second most-used channels overall at 40% (HubSpot, 2026). A fixed five-channel roster cannot fit both shapes, which is why the template expects you to reshape it. And if you're still weighing whether you need a team of agents at all, settle that first; everything below assumes the team structure earns its place.
Copy link to headingWhere does each change live?
Everything eve knows about your team comes from the filesystem. Tool names come from filenames, specialist names come from directory names, and eve discovers capabilities by scanning the repo. Every customization is a file edit, and the map is short:
For anything past this table, the repo carries two deeper references: docs/CUSTOMIZING.md is the customization walkthrough, and docs/ARCHITECTURE.md covers internals, the approval matrix, and the credential model.
Copy link to headingAdd a specialist end-to-end
Suppose your company runs a partner program and wants a partner-marketing specialist. Here is the whole change.
Create the directory. Add
agent/subagents/partner-marketing/with anagent.tsfile inside. The directory name becomes the specialist's name. Nothing else registers it.Write the description as routing instructions. The lead decides where work goes based only on the
descriptioninagent.ts; it reads nothing else about the specialist when routing. Write it like a dispatch rule: name the requests this specialist owns (co-marketing announcements, partner newsletters, partner page copy) and the requests it should decline. The repo'sdocs/CUSTOMIZING.mdcarries the full customization walkthrough.Give it craft. Add an
instructions.mdfor how the specialist works and askills/directory for its reusable know-how. Every specialist in the template keeps its craft in these two places.Connect its tools. eve supports any MCP server, added as files under the specialist's
connections/directory. Eachconnections/*.tsfile also carries the tool lists that set the agent's reach and its approval gates, so decide both while you wire it up. The email specialist shows the scale:ALLOWED_TOOLSinconnections/resend.tsnarrows Resend's roughly 85 MCP tools to 47.Verify discovery. Run
npx eve infoand confirm the new specialist appears alongside its tools, skills, and connections. If it doesn't, read.eve/discovery/diagnostics.json. Then runpnpm validate, which runs lint, typecheck, and discovery diagnostics in one pass.Route real work to it. In a linked project,
pnpm devstarts the eve dev TUI. Ask for something the description claims and confirm the lead hands it to the new specialist. If work routes elsewhere, the fix is a sharper description, not more code.
Copy link to headingWhen should you delete, add, or go remote?
Copy link to headingDelete a specialist when the channel isn't yours
If your team doesn't send email, delete the email specialist's directory rather than maintain unused surface area. The one exception is product-marketer: it owns the brand context document every other specialist reads, so it stays even in a heavily trimmed team.
Copy link to headingAdd a specialist when the work has its own craft and tools
A new directory earns its place when the work needs its own instructions, skills, or connections. If a request type keeps landing on the wrong specialist, that is usually a routing problem to fix in descriptions, not a missing team member.
Copy link to headingGo remote when credentials or release cycles shouldn't live here
A remote specialist is a separately deployed agent the lead calls over the network. The repo's example is agent/subagents/paid_ads.ts, which uses defineRemoteAgent from eve with vercelOidc() from eve/agents/auth and points at its deployment through the PAID_ADS_AGENT_URL environment variable. Calls are OIDC-authenticated with no shared secret to manage. Reach for this when credentials should stay out of this repo, ad platforms being the usual case, or when the agent ships on its own release cycle.
Copy link to headingSwap models when cost or quality says so
Each agent picks its model in its own agent.ts, and the lead's is agent/agent.ts. Any Vercel AI Gateway model ID works, and all agents route through the AI Gateway with OIDC auth, so there are no provider API keys to manage. The lead is the first place to try a cheaper tier. In the dev TUI, /model switches models so you can compare before committing the change.
Copy link to headingHow do you change voice and approval gates?
Voice is layered. Shared rules for every writing surface live in agent/lib/writing-quality/config.ts, a shared writing-quality factory. Per-surface banned words live in references/banned-words.json inside each <surface>-style skill and are checked by a lint tool. Edit the config for team-wide voice; edit a skill's banned-words list to change one surface.
Approval gates are the tool lists in each connections/*.ts file, and gate policy can inspect tool input, not only the tool name: the Typefully connection gates draft create and edit only when publish_at is set. Irreversible actions such as email sends, deletes, and scheduled social publishes pause for a human approve or deny in Slack, while drafting does not. Widening an allowlist widens what the agent can do, so keep the template's defaults and add tools one deliberate decision at a time.
Copy link to headingWhat customizing the template is not
It is not a settings screen. Adding specialists, changing gates, and swapping models happen in a TypeScript repo. The one-click deploy covers the default team; past that, the repo's
docs/CUSTOMIZING.mdis the path.It is not registry management. There is no registry file to edit; the filesystem is the source of truth, and
npx eve infoshows what eve currently sees.It is not automatic routing. A new specialist is only as routable as its
description, because the lead sees nothing else when deciding where work goes. Write it as routing instructions and verify withnpx eve info.It is not a reason to loosen gates. Widen a tool allowlist only when a real workflow needs it, and treat the default lists as the baseline to return to.
Copy link to headingFrequently asked questions
Copy link to headingHow do I add a new specialist to an AI marketing team?
In the eve marketing team template, create a directory under agent/subagents/ with an agent.ts file inside. The directory name becomes the specialist's name, and the lead routes work to it based only on the description in that file. Add an instructions.md file and a skills/ directory for its craft, then run npx eve info to confirm eve discovered it.
Copy link to headingCan I remove specialists my team doesn't use?
Yes. Delete the specialist's directory and the channel is gone; there is no registry file to clean up afterward. The exception is product-marketer, which owns the brand context document every other specialist reads, so keep it even when you trim everything else.
Copy link to headingCan I change the model for one agent only?
Yes. Each agent sets its model in its own agent.ts file, and the lead's lives at agent/agent.ts, so one specialist can run a different model than the rest of the team. Any Vercel AI Gateway model ID works, and the lead is the first place to try a cheaper tier.
Copy link to headingWhen should a specialist be remote instead of local?
Use a remote specialist when its credentials should stay out of the main repo, such as ad platform access, or when the agent ships on its own release cycle. The template's example is agent/subagents/paid_ads.ts, which uses defineRemoteAgent to call a separately deployed agent over an OIDC-authenticated connection with no shared secret.
Copy link to headingIs there a registry file to update when I add or remove a specialist?
No. eve discovers capabilities from the filesystem: tool names come from filenames and specialist names come from directory names. Adding or removing a directory under agent/subagents/ is the whole change, and npx eve info shows what eve currently sees.