It was a lot of fun to talk with you all and building these lessons over the last two months. Thank you for joining me and here is the final lesson for building your own Agent: https://buttercup.sh/lessons/202...
Welcome back! In this lesson, you ll give your agent a pair of eyes. We ll add screenshots to the loop from lesson 3 so the model can read a layout, spot a button beyond the viewport, and compare the result with your request. A phone-sized screenshot costs about 333 input tokens, and a simple DOM check confirms when the page is ready. By the end, your agent will be able to look, improve, and check its own work.
Build an agent that delegates work to agents written by other people. Publish an agent-card.json and a handler on Blocks.ai, accept tasks with blocks run, and call another agent from the handler with ctx.taskClient.sendMessage(). Lesson 3's turn counter becomes a 60-second wall-clock budget.
Lesson 2's loop ended when the model stopped asking for tools. Lesson 3: loops and goals - the agent that stops on purpose. Now your program will decide when the agent stops. You'll add a turn counter, a goal check, and a timeout on every tool, plus a report_status tool with an enum your code can test. In this example, the counter cuts a runaway bill from $2.40 to $0.22. The loop takes about forty lines in JavaScript or Python. Most of the remaining code defines the tools.
We published the full walkthrough and runnable implementations in JavaScript and Python in Lesson 2: tool calling - how a chat model gets hands. You can follow the breakdown, inspect the exact failure modes, and test the ring directly in the harness against a virtual localStorage filesystem without leaving your browser tab.
A chat model cannot check the weather, read a file, or send an email. It can only generate text. An AI agent is not born from a complex orchestration framework, a planning module, or an external memory layer; it is born from an agreement that turns generated text into an executable instruction. The model simply halts its raw text output to emit a structured schema containing a function name and arguments, your application executes the native code, and you pass the return value back into the conversation array under the matching call ID.
The first lesson! For building AI Agents. We start with using WebLLM for clinet-side language model inference. Note that the full syllabus has been posted if you are interested in the upcoming lessons.
Join the next few weeks and learn to build AI agents. Open source. Courses posted on Youtube and buttercup.sh. Learn how to build AI Agents.
You may be interested in the high-level details building agents and software. It's important to know what is possible, so you can learn what to ask code agents to add it to your apps. By knowing what is available, you'll be able to build more robust apps and agents.