How-to recipes

A progressive ladder of task recipes — assemble drover's elements into real agents, simple to complex.

The guides document each element on its own; the examples are minimal demos. These recipes sit in between: each one is a real task, built by assembling several elements, and they climb in difficulty. Read them in order and every recipe reuses what the last one taught.

Each page ends with two things: a What you assembled recap naming the elements you wired, and a Level up card pointing at the next rung.

The ladder

LevelRecipeWhat you assemble
1Classify and extractinput/output schema + model alias + quota — no tools
2Read & search a codebasebuilt-in read/grep/ls + a read-only just-bash mount + the event stream
3A coding agentread-write mount + bash/edit + safety plugins + a postSuccess test step
4Enrich a single leadMCP search tools / network allowlist + grounded output + a cost ceiling
5An assistant that learnsmemory scopes + ambient instruction files + storage
6A research teamsubagents + registry + shared memory + a trace
7A durable batch servicequeue + worker pool + run API + crash recovery

How to read these

  1. Start at your level

    New to drover? Begin at Level 1 — it is the quickstart agent with the schema contract explained. Already shipping agents? Jump to the recipe whose task matches yours; each lists its assumed prior rungs.

  2. Run the code

    Every snippet is runnable TypeScript on Bun. Set OPENROUTER_API_KEY once and the default model aliases resolve. Copy a recipe, change the schema, and you have a starting point.

  3. Follow the cross-links

    A recipe shows you how to assemble an element; the linked guide explains what it is. When a recipe wires memory, Memory has the full contract.

The shape every recipe shares

A drover agent is always the same four moves, and the ladder just adds elements to each:

  1. Define a defineAgent({ ... }) spec — the typed input/output contract.
  2. Wire the deps a run needs — a sandbox, a registry, storage, memory, MCP.
  3. Run it with runAgent(spec, input, options).
  4. Read the result and the event stream.

Type to search…

↑↓ navigate open esc close