Vercel Logo

Where to Go Next

Look back at where this started: an empty persona in a terminal, lesson 1.1. Look at it now. The Spoke & Mirror dispatcher diagnoses before it quotes, prices from a real catalog, finds open slots, remembers a customer's bikes, runs a different playbook for members and pros, stops and asks before it commits real money, answers on the web and in Slack, knows who it's talking to, and runs in production behind fail-closed auth.

You built all of that the same way every time: by adding a file. That's the thing to carry out of this course. An agent is a directory. Each capability had a predictable home, and growing the agent meant dropping one more file into one more folder, never rewiring the thing.

What you built, by the folders

The dispatcher walked the first six steps of that idea:

  1. Pinned a model in agent/agent.ts.
  2. Started with one file, the persona in agent/instructions.md.
  3. Taught it procedures with a dynamic skill in agent/skills/.
  4. Gave it hands with five tools in agent/tools/.
  5. Let it run code safely by seeding the agent/sandbox/ workspace.
  6. Put it where people are with agent/channels/ (web + Slack) and real auth.

Notice what you didn't have to do: stand up an approval queue, write a streaming protocol, manage Slack tokens, or build a session store. eve owned the durable runtime; you owned the shop.

What eve was running underneath

  • AI Gateway routed every model call. That anthropic/claude-opus-4.8 id you pinned back in 1.1 is a gateway route, which is why you never juggled a provider key.
  • Workflows made runs durable. When a $180 booking parked for approval in Section 3 and resumed from the exact step after a yes, that was a workflow surviving the wait, not a timer you had to babysit.
  • Sandbox kept execution isolated. The workspace you seeded in Section 2 lived inside a sandbox, not on your laptop.
  • Connect brokered access. Slack reached the agent through Connect's scoped credentials, so tokens never sat in your source.

That's the whole bargain: you define the agent as a directory, and eve assembles the production machinery underneath it. You define the agent; Vercel runs it.

The three folders the shop didn't need (yet)

eve has three more directories we skipped, not because they're advanced, but because a bike shop's front desk genuinely didn't need them. Here's the moment each one would earn its place, so you'll recognize it.

connections/: when the agent needs a system you don't own. Right now the catalog is a local file. The day the shop wants live parts availability from a supplier, you'd add a connection to that supplier's MCP or API. The model gets the supplier's tools, and eve brokers the credentials so they never reach the model. Reach for it the first time you think "the agent needs data from their system, not ours."

subagents/: when one job deserves its own specialist. Our dispatcher is a generalist. Imagine a gnarly intermittent-creak diagnosis that wants its own focused prompt and a narrower toolset. You'd drop a "diagnosis specialist" in agent/subagents/ and let the dispatcher delegate to it, the child runs in its own context and reports back. Reach for it when a sub-task needs a different brain, not just another tool.

schedules/: when the agent should act on its own clock. Everything you built waits to be asked. A schedule lets the agent start work on a cadence: a nightly sweep that texts customers whose bikes are ready for pickup, or a Monday digest of the week's bookings to the shop's Slack. One file in agent/schedules/ with a cron expression. Reach for it the first time you catch yourself wanting the agent to initiate.

Same move, every time

All three are the same motion you've done a dozen times now: add a file in the folder that names the capability. You already know how to learn them, open node_modules/eve/docs/, find the folder, drop in a file.

Ship something

The fastest way to make this stick is to change the shop. Add a report_damage tool that files a photo. Give pros a bulk_book skill. Wire a schedule that nudges overdue pickups. Each one is a file, and you've now built every kind of file there is.

The complete dispatcher lives at vercel-labs/bike-shop-agent. Diff your build against it if anything drifted, or fork it as the starting point for your own.

You came in able to talk to a model. You're leaving able to ship a durable agent that real people reach through real front doors, and you can read its whole behavior by listing a directory. Go build one that makes your life easier.

Was this helpful?

supported.