Week 2 of 6
Models, connected tools, and your worst chore
Live on Zoom · 2.00–4.30pm ET
23 August 2026
Derrick Schultz

2.00
What broke last week, and what it cost
2.20
What the model does, and what a token is
2.45
Choosing a model per task, and running one locally
3.05
Break
3.10
Tools, toolsets, and approvals
3.30
Connecting Gmail to your agent
3.50
Automating the chore you brought
4.15
Working time, homework and questions
Week 1 · Aug 16
Intro to agentic creativity; installing Hermes Agent
Week 2 · Aug 23
Models, Connected Tools, Non-artistic Tasks
Week 3 · Aug 30
Skills and MCPs
Sep 6
No class
Week 4 · Sep 13
Long-running and evolving agents
Week 5 · Sep 20
An intro to agentic coding
Week 6 · Sep 27
Show and tell
Last week’s recording is up. Ask in Discord if something in it didn’t work on your machine.
What you asked
The instruction, word for word. Most failures are already visible in it.
What it did
The action it took instead — and whether you found out by reading its summary or by looking at the folder.
Where it stopped
Did it finish and get it wrong, or give up halfway and tell you it was done?
What it cost
Your rough token spend. Keep that number — it is the next forty-five minutes.
Nothing here is an embarrassing setup problem. The failures are the material.
Desktop knew things
It could see your practice folder, so it could act on real files. Everything it did happened on your machine.
Cloud knew nothing
No files, no history, none of your setup. Anything you wanted it to know, you had to send.
That is the whole lesson
An agent is only as useful as what it can reach. Context is not intelligence.
Both of them billed you
Model calls on either side, plus running time on the Cloud instance whether you were talking to it or not.
where we are
Last week you installed the whole machine and looked at the loop. Today: the model that chooses the next action, and the tools it gets to choose from.
Skills, memory and connections are weeks 3 and 4.

01
2.20–3.05 · 45 minutes
the swappable part
Your files, tools, channels and history stay exactly where they are.
Reads
Your instruction, the conversation so far, and whatever the last tool call handed back.
Decides
Which tool to call next and with what arguments — or that the job is finished.
Writes
The text you read, and the arguments every tool receives.
Does not
Touch a file, open a page, or spend money. Tools do all of that.
A better model makes better choices. It does not gain new abilities — those come from the toolset.
Input
Everything the model reads this turn: your message, the conversation, the file it just opened, the result of the last tool call.
Output
Everything it writes: its reply to you, and the arguments of every tool call.
Cached input
The unchanged front of a conversation, charged at a fraction of the rate. One long session can cost less than ten fresh ones.
The unit
Prices are quoted per million tokens. A million tokens is around 700,000 words.
Every step re-reads everything
Step five does not send one message. It sends your instruction plus four rounds of tool calls and their results.
Tool results are big
A directory listing, a web page, a file it opened — all of it becomes input you pay for again on every following step.
Long jobs curve upward
The tenth step costs more than the first, because the first nine are still in the message.
Failed steps still bill
An error is a tool result. You pay for it, then you pay for it again on the retry.
This is the surprise on everyone’s first bill.
checked 23 august 2026
cheap
The class default through Nous Portal. Fast, cheap, and entirely good enough for sorting, triage and file work.
middle
If you already pay OpenAI. Noticeably better at multi-step jobs and at knowing when to stop.
expensive
Around $40 per million output tokens. Excellent at long work. Do not point a loop at it and walk away.
free
No per-token cost at all. You pay in speed and in tool-calling reliability.
These change monthly. Use whatever Nous Portal lists as current rather than planning around a number on a slide. · Docs: Nous Portal
the hard floor
Below that there is not enough room to hold your instruction, the tool definitions, and four rounds of results at the same time. It gets rejected at startup rather than failing halfway through a job.
Running a local model? You set the context yourself — -c 65536 for Ollama.
Docs: Configuration — providers, model IDs and context limits
Context budget
The window is shared between the job and everything it read to do the job.
It compresses
Hermes summarizes the older part of the conversation to make room. That summary is written by a model, and it is lossy.
Detail goes first
Exact filenames. The folder you told it not to touch. The reason you rejected version two.
This is the drift
Last week’s “nothing checks that it is still working toward what you asked an hour ago” is this, mechanically.
What to do
Finish a job in one session. Start a new session for a new job. Put the rules in a file it can re-read instead of in the chat.
Point compression at a cheap model. It is summarizing, not deciding. · Docs: Compression settings
cheap and fast
Mechanical work with a clear right answer. A stronger model gives you the same result for more money.
strong
Anything where you would notice the difference — briefs, edits, a plan with several steps, code.
local
Material you would rather not send anywhere, or a job you are going to run a thousand times.
Most people pick one model and use it for everything. That is usually overpaying and under-thinking at the same time.
not one model — several
Hermes runs its side jobs through a separate model you choose: compressing the conversation, judging whether a command is dangerous, naming a session.
Point those at something cheap and fast. None of them is the part that needs judgment.
Every side job you move off the expensive model is money you stop spending without noticing. · Docs: Configuration
Tool calling is its own skill
The model has to emit an exactly-shaped call every single time. Some very capable models are unreliable at it.
What that looks like
It describes the action instead of taking it. It invents a tool that does not exist. It calls the right tool with the wrong arguments.
Stopping behaviour differs too
Some models stop and ask. Some keep going for forty steps. Neither is correct — it depends on the job you gave it.
How to tell
Run the same task on two models and read the tool calls, not the summaries.
in practice
In Hermes Desktop: Settings → Providers. Pick a provider, pick a model, hit Switch.
That writes your config and applies to new sessions only. A chat you already have open keeps running whatever it started with — use /model inside it to swap mid-conversation.
The model picker shows cost hints next to each model. Look at them. · Docs: All commands
demo · local models
No per-token cost, nothing leaves your laptop, no rate limit, works on a plane.
In exchange: slower, weaker at tool calling, and it will heat your room. Set the context to at least 64K or Hermes will not start.
Watch this one rather than installing along. Full steps are in the after-class slides. · Docs: Custom endpoints
Memory is the limit
The model has to fit in RAM. On Apple Silicon that is unified memory, so a 32GB machine goes a great deal further than a 16GB one.
On a Mac, use MLX
MLX builds run natively on Metal and generate tokens noticeably faster than the generic path.
Expect a step down
A model that fits on your laptop is not competing with a hosted frontier model. It is competing with paying for one.
Worth it when
The material is private, the job is repetitive, or your bill has become a number you think about.
after class
Install and pull
Point Hermes at it
The context size is the part people miss. Anything under 64K is rejected at startup, and the default is usually lower. · Docs: Configuration · Installation
the comparison to actually run
cheap model
Sort the files in ~/Scans into folders by the year they were shot.
list files → read metadata → terminal
Sorted 412 files into 6 folders by year.
12 seconds. Fractions of a cent. Correct.
strong model
Sort the files in ~/Scans into folders by the year they were shot.
list files → read metadata → terminal
Sorted 400 files by DateTimeOriginal. 12 had no shoot date, so I left them in /undated rather than fall back to the file date — that is when you scanned them, not when you shot them.
48 seconds. Twenty times the price. Correct, and it caught the thing you forgot to ask.
Neither one is the right answer. The question is which failure you can live with on this particular job.
models checkpoint
If you change one thing today: stop running triage on your most expensive model.
02
3.10–3.50 · 40 minutes
what counts
the habit to build
The last message is a story the agent wrote about its own work. The tool calls above it are what happened. When the two disagree, the tool calls are right.
Here it deleted fourteen files. It never checked whether any of them were duplicates.
Clean up the duplicate exports in my practice folder.
list files · called
terminal · rm *-2.jpg · approved
Removed 14 duplicates. The folder is clean now.
Files
Read, write, search, patch. Limited to the folders you allow.
Terminal
Run commands. The powerful one, and the dangerous one.
Web
Search, fetch a page, pull the text out of it.
Browser
Drive a real browser — click things, fill forms, get past a login.
Vision and media
Look at an image, generate one, read text out loud.
The rest
Memory, scheduled jobs, handing work to sub-agents, and MCP servers.
Type /toolsets to see which groups are on right now. · Docs: Tools and toolsets
everything is off until you say otherwise
The Blank Slate setup profile gives you a provider, a model, file operations and the terminal. That is the whole list.
Start there when you want to know exactly what your agent can reach, and switch things on as jobs need them.
Blank Slate
Add a tool when a job needs it, not in advance.
smart · default
A second model rates the risk. Harmless commands run. Genuinely dangerous ones are refused outright. Anything uncertain comes to you.
manual
Slower, and the right setting while you are still learning what your agent tends to reach for.
off
Also known as --yolo. Every command runs. For a container you are willing to throw away, and nowhere else.
Approval is not sandboxing. Approval asks you a question; a sandbox limits what the answer can reach. · Docs: Security and approvals
A skill
Written instructions plus scripts for one job. Hermes arrives with about eighty already installed, including the Google ones.
An MCP server
A running program that hands your agent a set of new tools. That is next week.
The difference
A skill teaches it how to do something with tools it already has. MCP gives it tools it did not have.
This week
You use a skill somebody else wrote. Next week you write one.
the one everybody asks for
Hermes ships a Google Workspace skill. It uses OAuth, refreshes its own token, and once it is connected your agent can search your mail, read a doc, and drop a row into a sheet.
The setup is genuinely tedious: a Google Cloud project, six APIs to enable, an OAuth client, and a redirect URL you paste back. Twenty minutes on a good day.
What setup costs
I’ll demo this. The full walkthrough is in the after-class slides.
You email the agent
An email channel gives it its own address. You write to it, it replies in the thread. No app, no bot.
The agent works your mailbox
The himalaya skill lets it search, read, file and send from an account you give it.
Today, in class
Himalaya, on a spare Gmail with an app password. No Cloud project. It installs a small command-line tool and writes one config file.
Use a spare address
An agent that reads your mail can be told things by anyone who emails you.
step 1 · in class
Hermes’ documentation says to ask the agent to set up Google Workspace and let it walk you through. That is the supported path, not a shortcut.
It is also the clearest thing rung one does all day: it reads the documentation, tells you which button to press, and types the parts that are typing.
Set up the himalaya skill so you can read the Gmail account I made for you.
Make an app password at Google Account → Security → App passwords. Don’t paste it here — put it in the himalaya config and tell me when it’s saved.
terminal · install himalaya · approved
Connected. Three unread from today. Want the list?
Use a spare account
A separate Gmail costs nothing and puts a hard limit on what a mistake can reach.
Read before write
Let it search and summarize for a week before you let it send, file or delete anything.
Incoming text is data, not instructions
An email is not an order. Anyone who can write to you can put words in front of your agent.
Find the revoke button first
App passwords and OAuth clients are both one click to kill. Know where that click is before you need it.
Credentials go in the config
Same rule as last week: the setup field or the env file, never the conversation, never Zoom chat, never a screenshot.
after class
01
At console.cloud.google.com, create a project. It is free and it exists only to hold your credentials.
02
Gmail, Calendar, Drive, Sheets, Docs and People. Each is a separate Enable button in the API library.
03
Choose Desktop app, then download the client secret JSON. Treat that file like a password.
04
Hermes gives you a URL, you approve it in the browser, you paste the redirect back. The token refreshes itself from then on.
Ask Hermes to run this with you rather than doing it alone. It knows the order of the steps.
tools checkpoint
03
3.50–4.15 · 25 minutes
rung one
Nothing you automate today will be interesting. That is the point.
01
What starts it. A time, a new file, an email, or you asking.
02
What it reads. Name the exact folder, label or document.
03
What it does, in order. If you can’t write them down, you can’t hand them over.
04
What it produces. A file, a message, a row in a sheet.
05
Where that lands, and who ends up seeing it.
The parts you leave vague are the parts it will guess.
the actual skill
vague
Clean up my Downloads folder.
terminal · rm · approved
Cleaned up 340 files.
It decided what “clean” meant. So did you, differently.
specific
In ~/Downloads, move every file older than 30 days into ~/Downloads/Archive/YYYY-MM. Leave this month alone. Delete nothing. List what you moved.
list files → move · called
Moved 312 files into 14 dated folders. 28 files from this month untouched. Nothing deleted. Full list in moved.txt.
Same job. Reversible, checkable, boring.
Say what it may not do. That sentence does more work than any other one in the brief.
mine, in five parts
Trigger — 7.30am, weekdays. Input — Slack, email, Linear and GitHub, last 24 hours only. Steps — pull it all, drop anything I’m only cc’d on, group by project. Output — one message: needs me today, for information, and a suggested next step on each. Destination — a Slack message to myself.
It took four rewrites to stop it marking everything urgent.

Count things
412 in, 412 out. A number that doesn’t match is the fastest bug you will ever find.
Ask for the leftovers
The items it couldn’t handle tell you more than the ones it could. Make it put them somewhere and say how many.
Spot check three
One from the start, one from the middle, one from the end. Not the first three.
Reversible before recurring
Move, don’t delete. Copy, don’t overwrite. Then let it run every day.
one line, then leave it alone
Scheduled jobs are built in. A job is a time, a prompt, and somewhere for the answer to go — Telegram, email, a file.
Only do this after the chore has run correctly by hand twice. A broken chore on a schedule is a broken chore that bills you every morning.
Test with /cron run rather than waiting until 7am to find out. · Docs: Scheduled jobs
the rule for scheduled jobs
Fresh session. No memory of your conversations, no idea what you set up earlier. “Do my usual morning briefing” gets you nothing. The prompt has to contain the whole job.
Multiply by thirty
A job that costs 8 cents a run is $2.40 a month. Ten of them is a subscription you never signed up for.
Watch the input side
If it reads more every day — a growing folder, a longer thread — the cost grows with it and nothing warns you.
Give it a stopping condition
A cap on steps, a cap on files, and a “if there is nothing new, say so and stop”.
Check it after a week
Look at what it actually spent, not what you estimated. Then decide whether the chore was worth it.
after class
In a chat
From the terminal
Don’t hand-edit ~/.hermes/cron/jobs.json. Direct edits can fail silently — use the commands. · Docs: Cron
04
4.15–4.30 · 15 minutes
working time
Write the five parts down first — trigger, input, steps, output, destination — before you type anything to the agent.
Run it by hand once. Read the tool calls. Find the thing it guessed.
Rewrite the brief to close that gap, then run it again.
Don’t schedule it today. Ask me questions.
our group project
Last week it could read the syllabus and answer questions. This week it gets an email address, and a research topic from each of you.
It keeps researching between now and week six. Then we start pointing it at tools that make things instead of tools that read things.
Reply when it writes to you — or tell me in Discord if you’d rather sit this one out.
What should I research for you this term? One line is enough.
Experimental filmmakers who died before 1980 and never got a retrospective.
web search · 14 sources · read
Started a file for you. I’ll add to it weekly and tell you when it’s worth reading.
Get one chore running
The one you brought. By hand is fine. Bring the brief that finally worked, and the three that didn’t.
Price it
Run it twice and note what it spent. We are building an intuition for what things cost, not a spreadsheet.
Try a second model
Run the same chore on something cheaper. Was the result worse, or just different?
Connect one account
Gmail through himalaya, or the whole of Workspace if you want it. Read-only tasks this week.
Bring a want
One thing you wish it could reach and can’t. That list is week 3.
Models
Configuration — providers, model IDs, compression, the 64K floor · Nous Portal
Email and Google
Himalaya for a mailbox · Email channel to write to it · Google Workspace for the rest
Scheduled jobs
Cron — and the rule that a scheduled prompt has to carry its whole job
Next week, early
This deck
artificial-images.com/agentic-week2 — including the hidden after-class slides
that’s week two
next week
Skills and MCPs
30 August · 2.00pm ET
Questions in Discord, or derrick@titles.xyz · artificial-images.com