vtmate
🇬🇧

Tutorial

Learn with AI debates

Two agents arguing opposite sides of a subject, out loud, is a surprisingly good way to learn it: you hear the strongest case for each position, and you can jump in by speaking at any moment to ask the question you're actually stuck on. This walkthrough builds one from scratch.

1. Write a dedicated agents file

Keep learning debates separate from your everyday agents with their own file (see Configure Agents for the full file format). Give each agent a system prompt that commits it to a stance, using a [system_prompt] block so the personas stay readable:

[system_prompt]
name = static_types_advocate
---
You are a senior engineer who strongly prefers static type systems for
large codebases. Argue for compile-time type checking, refactoring safety
and IDE tooling. Respond to your opponent's last point directly, in
30-60 words, then make your own point. Stay respectful but firm.
---

[system_prompt]
name = dynamic_types_advocate
---
You are a senior engineer who strongly prefers dynamic type systems for
large codebases. Argue for iteration speed, less ceremony and flexible
duck typing. Respond to your opponent's last point directly, in 30-60
words, then make your own point. Stay respectful but firm.
---

[agent]
name = Static Sam
language = en
tts = supertonic3
voice = M2
voice_speed = 1.1
provider = ollama
baseurl = http://127.0.0.1:11434
model = llama3.2:3b
system_prompt = @static_types_advocate
sound_threshold_peak = 0.12
end_silence_ms = 2500
ptt = true
whisper_model_path = ~/.whisper-models/ggml-tiny.bin

[agent]
name = Dynamic Dana
language = en
tts = supertonic3
voice = F2
voice_speed = 1.1
provider = ollama
baseurl = http://127.0.0.1:11434
model = llama3.2:3b
system_prompt = @dynamic_types_advocate
sound_threshold_peak = 0.12
end_silence_ms = 2500
ptt = true
whisper_model_path = ~/.whisper-models/ggml-tiny.bin

Save this as, say, learning-debate.txt.

2. Start the debate and save it

Load the dedicated file with -c, give the subject, force PTT mode so it doesn't flip between the two agents' own settings, cap it at a sensible number of turns, and export it as a browsable HTML session (see Debate mode and HTML & Audio for the flags in depth):

vtmate -c learning-debate.txt \
  --debate "Static Sam" "Dynamic Dana" "Is a static or dynamic type system better for large codebases?" \
  --ptt true --max-turns 10 -s-html

3. Jump in when you're confused

Speak at any point (hold SPACE since this debate runs in PTT mode) to redirect the discussion toward whatever you didn't follow - ask for a concrete example, push back on a claim, or steer it toward a related subject entirely. Both agents will respond to what you actually said, not just to each other.

4. Revisit it later

Because the debate was started with -s-html, it left a folder in ~/.vtmate/conversations with an index.html player - open it in a browser to relisten turn by turn, or share the folder with someone else studying the same subject. Swap the system prompts and subject for anything else you want to learn - a historical debate, a code review disagreement, two interpretations of a paper - the mechanics stay exactly the same.