bots-garden/mini-mepublic Fork
⑂ 2f57ae2
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

🛟 Updated.

k33g committed 2026-10-26T16:00:29+01:00 Browse files
2f57ae2 parent: b859ec4
modified INSTALL.LINUX.md +1 -1
@@ -2,7 +2,7 @@
22
33 ```bash
44 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
5-VERSION=1.0.1
5+VERSION=1.0.2
66 case "$(uname -m)" in
77 x86_64) ARCH=amd64 ;;
88 aarch64|arm64) ARCH=arm64 ;;
@@ -2,7 +2,7 @@
2 2
3 ```bash3 ```bash
4 # download the binary release in https://rickub.com/bots-garden/mini-me/releases4 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
5-VERSION=1.0.15+VERSION=1.0.2
6 case "$(uname -m)" in6 case "$(uname -m)" in
7 x86_64) ARCH=amd64 ;;7 x86_64) ARCH=amd64 ;;
8 aarch64|arm64) ARCH=arm64 ;;8 aarch64|arm64) ARCH=arm64 ;;
modified INSTALL.MACOS.md +1 -1
@@ -2,7 +2,7 @@
22
33 ```bash
44 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
5-VERSION=1.0.1
5+VERSION=1.0.2
66 curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64"
77 chmod +x ./mm-${VERSION}-darwin-arm64
88 xattr -cr ./mm-${VERSION}-darwin-arm64
@@ -2,7 +2,7 @@
2 2
3 ```bash3 ```bash
4 # download the binary release in https://rickub.com/bots-garden/mini-me/releases4 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
5-VERSION=1.0.15+VERSION=1.0.2
6 curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64"6 curl -fsSLO "https://rickub.com/bots-garden/mini-me/releases/download/v${VERSION}/mm-${VERSION}-darwin-arm64"
7 chmod +x ./mm-${VERSION}-darwin-arm647 chmod +x ./mm-${VERSION}-darwin-arm64
8 xattr -cr ./mm-${VERSION}-darwin-arm648 xattr -cr ./mm-${VERSION}-darwin-arm64
modified INSTALL.WINDOWS.md +1 -1
@@ -4,7 +4,7 @@ In PowerShell (no administrator rights needed):
44
55 ```powershell
66 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
7-$Version = "1.0.1"
7+$Version = "1.0.2"
88 $Arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" }
99 $Asset = "mm-$Version-windows-$Arch.exe"
1010 $Base = "https://rickub.com/bots-garden/mini-me/releases/download/v$Version"
@@ -4,7 +4,7 @@ In PowerShell (no administrator rights needed):
4 4
5 ```powershell5 ```powershell
6 # download the binary release in https://rickub.com/bots-garden/mini-me/releases6 # download the binary release in https://rickub.com/bots-garden/mini-me/releases
7-$Version = "1.0.1"7+$Version = "1.0.2"
8 $Arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" }8 $Arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" }
9 $Asset = "mm-$Version-windows-$Arch.exe"9 $Asset = "mm-$Version-windows-$Arch.exe"
10 $Base = "https://rickub.com/bots-garden/mini-me/releases/download/v$Version"10 $Base = "https://rickub.com/bots-garden/mini-me/releases/download/v$Version"
modified README.md +11 -1
@@ -32,7 +32,7 @@ mm --about # what it is, in one screen
3232 ```
3333 > `install.sh` works only on macOS and Linux
3434
35-Or download a binary from the [releases page](https://rickub.com/bots-garden/mini-me/releases) and put it on your `PATH`.
35+Or download a binary from the [releases page](https://rickub.com/bots-garden/mini-me/releases) and put it on your `PATH` — step by step for [macOS](INSTALL.MACOS.md), [Linux](INSTALL.LINUX.md) and [Windows](INSTALL.WINDOWS.md).
3636
3737 Then pick a configuration file. Copy one to `agent.yaml` in your project and adjust the `model:` and `system:` keys to taste:
3838
@@ -124,6 +124,13 @@ Anything that speaks ACP can host `mm -acp` the same way: **JetBrains IDEs** (In
124124 - **Unload a model**: `/unload [model]` frees a model from the server's memory — in the terminal, the window and an editor —, and the `unload_model` tool lets the agent do it itself, e.g. on another agent's model once it has answered; llmman, Ollama and llama-server in router mode. `unloadModels: false` turns both off. See [Free a model's memory](docs/en/how-to/unload-a-model.md) and `demos/unload-models/`.
125125 - **Search a documentation folder**: `/docs <words>` searches the text files of the folders named in `docSearch.dirs` (`.md`, `.adoc`, `.txt`… — only the extensions listed) and returns the best passages with their `path:line` link, ranked with BM25 — no index, no model (`docSearch.searchDocs`); the `search_docs` tool lets the model do it before it answers (`docSearch.autoSearchDocs`); both off by default. See [Search a documentation folder](docs/en/how-to/search-the-docs.md) and `demos/docs-search/`.
126126 - **Search earlier sessions**: with sessions on, `/memory <words>` searches the project's stored conversations (`sessions.searchMemory`), and the `search_memory` tool lets the model do it when a question refers to something decided before (`sessions.autoSearchMemory`); both off by default. The search matches words, not meanings. See [Search earlier sessions](docs/en/how-to/search-earlier-sessions.md) and `demos/memory-search/`.
127+- **Decision models**: small models that answer questions about a text — a choice, a yes/no, a score — in a fraction of a second, through `/v1/systemone` (llama-server, llmman, Ollama). An agent file with a `decision:` block is a decider: run it with `mm -p` from a script or a hook, let it pick the skill before each question (`skillRouting`), drop the tool groups a request does not need (`toolRouting`), or approve read-only commands from a `preToolCall` hook (`allow`). See [Ask a decision model](docs/en/how-to/ask-a-decision-model.md), [Decision models](docs/en/explanation/decision-models.md) and the `demos/decision-*` folders.
128+- **Type while it answers**: a message sent during a turn is queued and runs once the turn ends, in order — in the line mode and the window; `Esc` (window) or `/abort` stops the turn. See [the slash commands reference](docs/en/reference/slash-commands.md).
129+- **Struggle signals**: when the model loops, fails several tool calls in a row, breaks a tool call, stalls, runs out of turns or fills its context window, mm says so apart from the answer — a coloured badge in the window's footer, a line in the terminal, a paragraph in an editor. The window also shows the completion's duration (`showCompletionTime`). See [Struggling models](docs/en/explanation/struggling-models.md) and `demos/struggle-signals/`.
130+- **Download the models at start-up**: `autoPull: true` pulls the models the agent will use that the server does not have yet — its own, its `mmConfigs` agents', its routing deciders' — with the progress on screen (llmman, Ollama, Docker Model Runner; llama.cpp gets advice instead). See [Run mini-me with llmman](docs/en/how-to/run-with-llmman.md) and `demos/auto-pull/`.
131+- **Models that take turns in memory**: `unloadModels: true` on an `mmConfigs` entry unloads the asking agent's model before the hand-off and the asked agent's model after it, so two models are never loaded together. See [Free a model's memory](docs/en/how-to/unload-a-model.md) and `demos/coding-helpers-unload-option/`.
132+- **Use mini-me from another program**: drive `mm -acp` over ACP — `demo.acp.sdk/nodejs/minime.js` gives Node.js `complete`, `stream`, cancellation and a permission callback, with no dependency. See [`demo.acp.sdk/`](demo.acp.sdk/README.en.md).
133+- **Test a model**: `testing/` holds two benches run by mm itself — a coordinator agent gives small tasks to a candidate agent whose model is under test, checks each result with a command, and writes a Markdown report: the model as a working agent (`testing/model-check/`) and function calling alone, with tools declared in the agent file (`testing/function-calling/`). See [`testing/`](testing/README.en.md).
127134 - **Docker Sandboxes**: the sandbox kit lives in its own repository, [mini-me-kit](https://rickub.com/bots-garden/mini-me-kit); `sbx/` explains how to use it (`sbx run …`), with two mixins (`go-toolchain`, `cli-tools`) and ready-made configurations — see `sbx/README.md` and [Run mini-me in a Docker Sandbox](docs/en/how-to/run-in-a-docker-sandbox.md).
128135
129136 ## Demos
@@ -141,6 +148,9 @@ The `demos/` directory holds ready-made set-ups (most with a README explaining h
141148 | `demos/mini-mes/` | small teams of agents (`riker` coordinating a specifier and a coder, `gopher` a Go specialist) |
142149 | `demos/little-coder/` | a Go + htmx web-app generator for a small local model (Mellum2 12B on llmman, 32 GB RAM): a tested starter, skills, `AGENTS.md`, measured results |
143150 | `demos/team/` | a team of four agents (lead, specifier, coder, tester) on one small model (Ornith 1.5 9B on llmman) building Go + htmx apps through spec and test files, with measured results |
151+| `demos/coding-helpers-unload-option/` | the same team as `demos/coding-helpers/` with `unloadModels: true` on its `mmConfigs` entries instead of unload hooks: the two models never in memory together, measured on llmman |
152+| `demos/auto-pull/` | `autoPull: true` with SmolLM2-135M: a model the server does not have is downloaded at start-up, with its progress; also a team, and a misspelt repository name |
153+| `demos/struggle-signals/` | a fake OpenAI-compatible server and `run-all.sh` that trigger every struggle signal (loop, failed calls, broken call, stalled, max turns, context full…) without a real model |
144154 | `demo.acp.sdk/` | mini-me as a library from other languages, by driving `mm -acp` over ACP: `nodejs/minime.js` (ticket 167) — `Agent.start`, `complete`, `stream`, cancel with an `AbortSignal`, a permission callback; no dependency, 11 tests with a fake mm, four examples measured on llmman |
145155 | `testing/` | model testers run by mm itself: a coordinator (Gemma 4 12B) follows a skill, gives small tasks to a `candidate` agent whose model is under test (Qwen3.5 4B for model-check, Luciole 1B for function-calling), checks each result with a command and writes a Markdown report — `model-check/` (tool calls, exact instructions, Go code that must run, several steps) and `function-calling/` (only tools declared in the candidate's `tools:`) |
146156 | `dev.team/` | a team of five agents for a 32 GB laptop (ticket 152): a Qwen3.5 4B coordinator hands each request to a reformulator, a coder, a reviewer or a tutor (Gemma 4 12B, Mellum2 12B); hooks keep one model in memory at a time; measured: bug fixes, lessons and reviews work, new features not yet |
@@ -32,7 +32,7 @@ mm --about # what it is, in one screen
32 ```32 ```
33 > `install.sh` works only on macOS and Linux33 > `install.sh` works only on macOS and Linux
34 34
35-Or download a binary from the [releases page](https://rickub.com/bots-garden/mini-me/releases) and put it on your `PATH`.35+Or download a binary from the [releases page](https://rickub.com/bots-garden/mini-me/releases) and put it on your `PATH` — step by step for [macOS](INSTALL.MACOS.md), [Linux](INSTALL.LINUX.md) and [Windows](INSTALL.WINDOWS.md).
36 36
37 Then pick a configuration file. Copy one to `agent.yaml` in your project and adjust the `model:` and `system:` keys to taste:37 Then pick a configuration file. Copy one to `agent.yaml` in your project and adjust the `model:` and `system:` keys to taste:
38 38
@@ -124,6 +124,13 @@ Anything that speaks ACP can host `mm -acp` the same way: **JetBrains IDEs** (In
124 - **Unload a model**: `/unload [model]` frees a model from the server's memory — in the terminal, the window and an editor —, and the `unload_model` tool lets the agent do it itself, e.g. on another agent's model once it has answered; llmman, Ollama and llama-server in router mode. `unloadModels: false` turns both off. See [Free a model's memory](docs/en/how-to/unload-a-model.md) and `demos/unload-models/`.124 - **Unload a model**: `/unload [model]` frees a model from the server's memory — in the terminal, the window and an editor —, and the `unload_model` tool lets the agent do it itself, e.g. on another agent's model once it has answered; llmman, Ollama and llama-server in router mode. `unloadModels: false` turns both off. See [Free a model's memory](docs/en/how-to/unload-a-model.md) and `demos/unload-models/`.
125 - **Search a documentation folder**: `/docs <words>` searches the text files of the folders named in `docSearch.dirs` (`.md`, `.adoc`, `.txt`… — only the extensions listed) and returns the best passages with their `path:line` link, ranked with BM25 — no index, no model (`docSearch.searchDocs`); the `search_docs` tool lets the model do it before it answers (`docSearch.autoSearchDocs`); both off by default. See [Search a documentation folder](docs/en/how-to/search-the-docs.md) and `demos/docs-search/`.125 - **Search a documentation folder**: `/docs <words>` searches the text files of the folders named in `docSearch.dirs` (`.md`, `.adoc`, `.txt`… — only the extensions listed) and returns the best passages with their `path:line` link, ranked with BM25 — no index, no model (`docSearch.searchDocs`); the `search_docs` tool lets the model do it before it answers (`docSearch.autoSearchDocs`); both off by default. See [Search a documentation folder](docs/en/how-to/search-the-docs.md) and `demos/docs-search/`.
126 - **Search earlier sessions**: with sessions on, `/memory <words>` searches the project's stored conversations (`sessions.searchMemory`), and the `search_memory` tool lets the model do it when a question refers to something decided before (`sessions.autoSearchMemory`); both off by default. The search matches words, not meanings. See [Search earlier sessions](docs/en/how-to/search-earlier-sessions.md) and `demos/memory-search/`.126 - **Search earlier sessions**: with sessions on, `/memory <words>` searches the project's stored conversations (`sessions.searchMemory`), and the `search_memory` tool lets the model do it when a question refers to something decided before (`sessions.autoSearchMemory`); both off by default. The search matches words, not meanings. See [Search earlier sessions](docs/en/how-to/search-earlier-sessions.md) and `demos/memory-search/`.
127+- **Decision models**: small models that answer questions about a text — a choice, a yes/no, a score — in a fraction of a second, through `/v1/systemone` (llama-server, llmman, Ollama). An agent file with a `decision:` block is a decider: run it with `mm -p` from a script or a hook, let it pick the skill before each question (`skillRouting`), drop the tool groups a request does not need (`toolRouting`), or approve read-only commands from a `preToolCall` hook (`allow`). See [Ask a decision model](docs/en/how-to/ask-a-decision-model.md), [Decision models](docs/en/explanation/decision-models.md) and the `demos/decision-*` folders.
128+- **Type while it answers**: a message sent during a turn is queued and runs once the turn ends, in order — in the line mode and the window; `Esc` (window) or `/abort` stops the turn. See [the slash commands reference](docs/en/reference/slash-commands.md).
129+- **Struggle signals**: when the model loops, fails several tool calls in a row, breaks a tool call, stalls, runs out of turns or fills its context window, mm says so apart from the answer — a coloured badge in the window's footer, a line in the terminal, a paragraph in an editor. The window also shows the completion's duration (`showCompletionTime`). See [Struggling models](docs/en/explanation/struggling-models.md) and `demos/struggle-signals/`.
130+- **Download the models at start-up**: `autoPull: true` pulls the models the agent will use that the server does not have yet — its own, its `mmConfigs` agents', its routing deciders' — with the progress on screen (llmman, Ollama, Docker Model Runner; llama.cpp gets advice instead). See [Run mini-me with llmman](docs/en/how-to/run-with-llmman.md) and `demos/auto-pull/`.
131+- **Models that take turns in memory**: `unloadModels: true` on an `mmConfigs` entry unloads the asking agent's model before the hand-off and the asked agent's model after it, so two models are never loaded together. See [Free a model's memory](docs/en/how-to/unload-a-model.md) and `demos/coding-helpers-unload-option/`.
132+- **Use mini-me from another program**: drive `mm -acp` over ACP — `demo.acp.sdk/nodejs/minime.js` gives Node.js `complete`, `stream`, cancellation and a permission callback, with no dependency. See [`demo.acp.sdk/`](demo.acp.sdk/README.en.md).
133+- **Test a model**: `testing/` holds two benches run by mm itself — a coordinator agent gives small tasks to a candidate agent whose model is under test, checks each result with a command, and writes a Markdown report: the model as a working agent (`testing/model-check/`) and function calling alone, with tools declared in the agent file (`testing/function-calling/`). See [`testing/`](testing/README.en.md).
127 - **Docker Sandboxes**: the sandbox kit lives in its own repository, [mini-me-kit](https://rickub.com/bots-garden/mini-me-kit); `sbx/` explains how to use it (`sbx run …`), with two mixins (`go-toolchain`, `cli-tools`) and ready-made configurations — see `sbx/README.md` and [Run mini-me in a Docker Sandbox](docs/en/how-to/run-in-a-docker-sandbox.md).134 - **Docker Sandboxes**: the sandbox kit lives in its own repository, [mini-me-kit](https://rickub.com/bots-garden/mini-me-kit); `sbx/` explains how to use it (`sbx run …`), with two mixins (`go-toolchain`, `cli-tools`) and ready-made configurations — see `sbx/README.md` and [Run mini-me in a Docker Sandbox](docs/en/how-to/run-in-a-docker-sandbox.md).
128 135
129 ## Demos136 ## Demos
@@ -141,6 +148,9 @@ The `demos/` directory holds ready-made set-ups (most with a README explaining h
141 | `demos/mini-mes/` | small teams of agents (`riker` coordinating a specifier and a coder, `gopher` a Go specialist) |148 | `demos/mini-mes/` | small teams of agents (`riker` coordinating a specifier and a coder, `gopher` a Go specialist) |
142 | `demos/little-coder/` | a Go + htmx web-app generator for a small local model (Mellum2 12B on llmman, 32 GB RAM): a tested starter, skills, `AGENTS.md`, measured results |149 | `demos/little-coder/` | a Go + htmx web-app generator for a small local model (Mellum2 12B on llmman, 32 GB RAM): a tested starter, skills, `AGENTS.md`, measured results |
143 | `demos/team/` | a team of four agents (lead, specifier, coder, tester) on one small model (Ornith 1.5 9B on llmman) building Go + htmx apps through spec and test files, with measured results |150 | `demos/team/` | a team of four agents (lead, specifier, coder, tester) on one small model (Ornith 1.5 9B on llmman) building Go + htmx apps through spec and test files, with measured results |
151+| `demos/coding-helpers-unload-option/` | the same team as `demos/coding-helpers/` with `unloadModels: true` on its `mmConfigs` entries instead of unload hooks: the two models never in memory together, measured on llmman |
152+| `demos/auto-pull/` | `autoPull: true` with SmolLM2-135M: a model the server does not have is downloaded at start-up, with its progress; also a team, and a misspelt repository name |
153+| `demos/struggle-signals/` | a fake OpenAI-compatible server and `run-all.sh` that trigger every struggle signal (loop, failed calls, broken call, stalled, max turns, context full…) without a real model |
144 | `demo.acp.sdk/` | mini-me as a library from other languages, by driving `mm -acp` over ACP: `nodejs/minime.js` (ticket 167) — `Agent.start`, `complete`, `stream`, cancel with an `AbortSignal`, a permission callback; no dependency, 11 tests with a fake mm, four examples measured on llmman |154 | `demo.acp.sdk/` | mini-me as a library from other languages, by driving `mm -acp` over ACP: `nodejs/minime.js` (ticket 167) — `Agent.start`, `complete`, `stream`, cancel with an `AbortSignal`, a permission callback; no dependency, 11 tests with a fake mm, four examples measured on llmman |
145 | `testing/` | model testers run by mm itself: a coordinator (Gemma 4 12B) follows a skill, gives small tasks to a `candidate` agent whose model is under test (Qwen3.5 4B for model-check, Luciole 1B for function-calling), checks each result with a command and writes a Markdown report — `model-check/` (tool calls, exact instructions, Go code that must run, several steps) and `function-calling/` (only tools declared in the candidate's `tools:`) |155 | `testing/` | model testers run by mm itself: a coordinator (Gemma 4 12B) follows a skill, gives small tasks to a `candidate` agent whose model is under test (Qwen3.5 4B for model-check, Luciole 1B for function-calling), checks each result with a command and writes a Markdown report — `model-check/` (tool calls, exact instructions, Go code that must run, several steps) and `function-calling/` (only tools declared in the candidate's `tools:`) |
146 | `dev.team/` | a team of five agents for a 32 GB laptop (ticket 152): a Qwen3.5 4B coordinator hands each request to a reformulator, a coder, a reviewer or a tutor (Gemma 4 12B, Mellum2 12B); hooks keep one model in memory at a time; measured: bug fixes, lessons and reviews work, new features not yet |156 | `dev.team/` | a team of five agents for a 32 GB laptop (ticket 152): a Qwen3.5 4B coordinator hands each request to a reformulator, a coder, a reviewer or a tutor (Gemma 4 12B, Mellum2 12B); hooks keep one model in memory at a time; measured: bug fixes, lessons and reviews work, new features not yet |
modified install.sh +1 -1
@@ -4,7 +4,7 @@ set -euo pipefail
44 BINARY_NAME="mm"
55 INSTALL_DIR="/usr/local/bin"
66
7-rm "${INSTALL_DIR}/mm"
7+rm -f "${INSTALL_DIR}/mm"
88
99 echo "Building ${BINARY_NAME}..."
1010 go build -o "${BINARY_NAME}" .
@@ -4,7 +4,7 @@ set -euo pipefail
4 BINARY_NAME="mm"4 BINARY_NAME="mm"
5 INSTALL_DIR="/usr/local/bin"5 INSTALL_DIR="/usr/local/bin"
6 6
7-rm "${INSTALL_DIR}/mm"7+rm -f "${INSTALL_DIR}/mm"
8 8
9 echo "Building ${BINARY_NAME}..."9 echo "Building ${BINARY_NAME}..."
10 go build -o "${BINARY_NAME}" .10 go build -o "${BINARY_NAME}" .