Skip to content
Tironian
FAQ

Questions, answered plainly.

If yours isn't here, ask on GitHub.

The basics
What is Tironian?

A plugin for Hermes Agent. It learns which tasks you keep asking Hermes to do, trains a small model for each of them, checks that model against your own past sessions, and then lets it handle those requests on your computer. Your usual model stays in charge of everything else and steps in whenever the small model isn't sure.

Who is it for?

Anyone who uses Hermes for the same kinds of jobs again and again: checking disk space, summarising a type of document, writing commit messages, tidying files. The more routine your work, the more it helps. If every request you make is different, Tironian will tell you so in its report and stay out of the way.

Why the name?

Tiro was Cicero's secretary. He learned his master's work so well that he invented a shorthand, the Tironian notes, to keep up with it and carry it forward. A small model learning a larger one's routine work felt like the same idea.

What happens right after I install it?

Nothing that costs anything. Tironian reads your Hermes history read only and builds a report: how much of your work repeats, grouped into task families, and what those tasks cost you over the last 30 days. Training only happens when you ask for it.

How long until I have a model?

A task needs 25 good examples to become trainable (you can change that). For a task you do a few times a day, that's about a week of normal use. Training itself takes 10 to 20 minutes.

Quality and safety
Can Tironian make my answers worse?

It is built so that it can't. A small model only answers a task after passing a held-out test on sessions it never saw. Every answer is checked before Hermes sees it, and anything off goes to your usual model instead. After any failed or blocked step, your model finishes the turn. A model that falls back more than 10% of the time, or that you mark bad twice, demotes itself.

What exactly does the test check?

For each held-out step: valid format, the same kind of action as your model took, the same tools, arguments that pass their schemas and match yours. The model is promoted only if the lower end of the 95% confidence interval on its pass rate reaches 85%, with at least 30 steps tested. First steps and steps after a tool result are scored separately, so a model can be trusted with the command and leave the answer to your model. That lower bound is what makes ten lucky answers not enough. The details.

What is shadow mode?

After passing its test, a model first answers real requests in the background while your usual model still replies to you. Tironian compares the two. Only when they agree often enough can you let the small model answer for real.

Can a small model run dangerous commands?

No more than your usual model can. Its tool calls go through the same Hermes guardrails and approvals. In testing on a real install, Hermes blocked a small model's command exactly as it would have blocked the usual model's, and the usual model then finished the task.

What if it does get something wrong?

Type /tironian bad. That answer is never learned from, and two bad marks on a model's answers send it back to shadow mode. /tironian demote <family> stops it immediately.

Does the small model learn from its own answers?

Never. Only answers your usual model produced, in turns that went well, are used for training. That prevents a model from slowly drifting on its own mistakes.

Cost and hardware
What does it cost?

The plugin is free and MIT licensed. Training on Modal costs about $0.15 a run with a hard cap you set, usually covered by Modal's free credit. Training on your own NVIDIA GPU is free. Running a trained model costs nothing. See Cost.

Do I need a GPU?

No. Training can run on Modal, and the trained 1.7B model runs on an ordinary CPU. On a laptop without a graphics card it is slower per answer than a fast hosted model; the gains there are privacy, working offline and cost. A GPU makes it fast as well.

How much will I save?

It depends on how much of your work repeats and what your usual model costs. Tironian credits each request a small model answers with the average cost of that task on your model, and shows the total. If your model is free, it shows $0 and the benefit is speed, privacy and offline use.

Your data
Does my data leave my computer?

Not until you start a training run. Then one task's masked examples are uploaded to a private Volume in your own Modal account and deleted after training. Training on your own GPU keeps everything local. Everything it reads, keeps and sends.

What about passwords and API keys in my sessions?

They are masked before anything is stored: provider keys, tokens, private keys, passwords, credentials in URLs and other long random strings, plus emails, phone numbers, card numbers, IBANs, your home folder and login name. Steps with many masked values are never trained on.

How do I delete what it has collected?

Delete a session in Hermes and Tironian deletes it too. /tironian off excludes the current conversation. hermes tironian purge --yes deletes everything.

Does Tironian phone home?

No. There is no telemetry, no analytics and no account.

Technical
Which model does it train?

Qwen3 1.7B by default, or 4B. LoRA fine-tuning with Unsloth, merged and quantized to a Q4_K_M GGUF file of about 1.1 GB for the 1.7B model.

Can I use the data or models outside Tironian?

Yes. hermes tironian export writes datasets in Nous's Hermes function calling format (ShareGPT style JSONL), and models are plain GGUF files that run in llama.cpp, Ollama, LM Studio and others.

Does it work with my model provider?

Capture works with all three formats Hermes speaks: OpenAI style chat completions (OpenRouter, Nous Portal and most others), Anthropic messages and the Responses API. Live routing supports chat completions and Anthropic messages.

Does it change Hermes itself?

No. It uses only public plugin surfaces: hooks, one middleware, a slash command, a CLI command, an auxiliary model slot, plugin storage and the secret store. hermes plugins validate passes, including the check that it doesn't override anything in Hermes.

Does it slow Hermes down?

Capture adds a few milliseconds per model call. Matching a request to a task family takes well under five milliseconds. If the small model can't be reached, Tironian waits at most student_timeout_s (25 seconds by default) before your usual model answers.

Can I contribute?

Please do. The code, tests and issues are on GitHub. Run python -m pytest tests -q before sending a change.

Still curious? Try it.

The report costs nothing and shows you in a minute whether Tironian will help.

Read the docs D