Tutorial: your first session with mini-me
By the end of this tutorial, you will have built the mm binary, started it against Docker Model Runner, asked it one question that makes it run a shell command, and left cleanly. No prior knowledge of the project is required.
Prerequisites
- Go 1.25 or later on your
PATH(go versionanswers). - Docker Desktop with Docker Model Runner enabled and reachable on
http://localhost:12434. - The model named in
agent.yamlpulled locally. The file shipped with the project nameshuggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M; pull it withdocker model pull <that name>. - A terminal open at the root of the repository (the directory that holds
main.goandagent.yaml).
Step 1 — Build the binary
Type:
go build -o mm .
You should see no output at all. A file named mm now sits in the current directory.
We have just compiled the whole agent into a single executable.
Step 2 — Start the agent
Type:
./mm
You should see a banner like this one (the model name is the one from agent.yaml):
config: agent.yaml | provider: dmr | model: huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M | ctx: unknown | tools: bash, read_file, write_file, edit_file | skills: 0
Agent ready. Commands: "/quit" to exit, "/abort" to stop current generation, "/compact" to compress the history, "/new" to start a new session.
Shortcut: Ctrl+C to abort generation, or Ctrl+C at prompt to quit.
>
If a dimmed [warning: dmr: nothing answers at …] line appears above the banner, Docker Model Runner is not running: start it, then run ./mm again. The agent starts anyway, but the next step would fail.
We have just loaded the configuration, connected to the model server, and declared the tools the model may call.
Step 3 — Ask a question that needs a command
At the > prompt, type:
list the files in this directory
You should see, in order: a spinner while the model thinks, a line starting with 🛠️ bash: showing the command the model chose (typically ls or ls -la), the first lines of that command's output indented and dimmed, then the model's answer in plain text. The turn ends with a dimmed recap such as:
⚙ 1 command(s)
followed by the numbered list of the commands that ran, in green.
We have just watched the agent loop once: the model asked for a tool, the tool ran, its output went back to the model, and the model answered.
Step 4 — Leave
At the > prompt, type:
/quit
The program exits. Pressing Ctrl+C at the prompt does the same and prints Goodbye. first.
What now?
You have built mm, run one tool-calling turn, and exited. To go further:
- To run it on llama.cpp, host it in an editor, or add skills → see the how-to guides
- To look up a flag, a YAML key or a slash command → see the reference
- To understand how the loop and the two front ends fit together → see the explanation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
|