bots-garden/mini-mepublic Fork
⑂ v1.0.6
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. a9409af · on v1.0.6 · k33g · 2d ago
v1.0.6.en.md · 83 lines · 6.6 KBmarkdown
Blame HistoryOpen raw

mini-me v1.0.6

Version française

An ACP client can lend the agent its own functions as tools, and mini-me runs on Kronk, the Go inference server of Ardan Labs.

New

Tools lent by an ACP client (#202)

In ACP mode, the program that drives mm can now give the agent tools of its own. Examples are an editor's open buffers, an application's data, or a device. The model calls them like bash or read_file, under the name client_<name>. mm forwards each call to the client as an ACP extension request and gives the answer back to the model. ACP defines no way to describe such a tool, so mm defines one under its own namespace, org.mini-me. A client that does not use it sends nothing, and nothing changes.

  • Two ways to announce the tools, set with acp.clientTools.discovery.
    • meta (the default): the client lists its tools in initialize.
    • request: the client only says it has tools, and mm asks for the list each time a session is opened, loaded or resumed. This is for tools that depend on the session.
  • Permissions, set with acp.clientTools.permissions.
    • auto (the default) asks the client only when yolo is false.
    • ask asks before every call.
    • The default is auto, where MCP's is ask: a client tool is a function of the very program that started mm.
  • Errors never end the turn. A client that fails, does not answer within acp.clientTools.timeout (30s), or answers Method not found gives the model a [client tool error: …] text. An entry of the list that cannot be used is skipped with a line on stderr.
  • Turn it off with acp.clientTools.enabled: false. The tools exist only in ACP mode: the terminal and the window have no client to lend them.

The specification is written for client authors: the exact JSON of the announcement, of the list request, of a call and of its answer. The Go package of demo.acp.sdk offers tools with Options.Tools and ToolDiscovery.

Checked with Qwen3.5 4B on llmman: the Go example, in both modes, and the Node.js demo, in meta, request and yolo: false. The Node.js demo was also run on macOS.

See How to offer tools from your ACP client, the specification and why it is designed this way.

Kronk provider (#75)

provider: kronk runs mini-me on Kronk, the Go inference server of Ardan Labs. Kronk embeds llama.cpp without a llama-server process. mm uses its OpenAI-compatible API at http://127.0.0.1:11435/v1. From a sandbox, mm falls back to http://host.docker.internal:11435/v1.

  • The window is known at start-up. It is the one Kronk serves the model with, read from Kronk whether the model is loaded or not, for example ctx: 131072 (/v1/kronk/models).
  • autoPull downloads a model Kronk does not have, and /unload and the unload_model tool free its memory.
  • The summary of a compaction turns reasoning off with chat_template_kwargs, which Kronk obeys; reasoning_effort: none is ignored by Kronk. There is no Reading the prompt … line: Kronk sends no progress while it reads.
  • A protected Kronk (authenticated or full-protected modes) takes its token from KRONK_TOKEN. A refused token is a start-up warning that names the variable.
  • mm init --provider kronk lists Kronk's models and reads, from Kronk, the window, the GGUF's sampling and the chat template's reasoning switch.
  • Kronk profiles. Kronk also lists configuration profiles, provider/modelID/PROFILE (for example …/Qwopus3.5-4B-Coder.Q8_0/AGENT). A profile is the same model with its own settings in Kronk's model_config.yaml.
    • mm init says what a profile is, and copies its sampling into the file. Without the copy, it would never apply: mm sends temperature, top_p and max_tokens with every request, even without a sampling: block, and a request's value wins over a profile's.
    • The window shows a profile as Qwopus3.5-4B-Coder.Q8…/AGENT instead of just AGENT.

From a Docker Sandbox, start Kronk on the host with kronk server start --api-host 0.0.0.0:11435: by default it listens on the loopback only. The id Kronk serves a model under is not always the one it was pulled with: unsloth/Qwen3.5-2B-GGUF:Q4_K_M is served as unsloth/Qwen3.5-2B-Q4_K_M. Use the id GET /v1/models gives.

Checked against Kronk 1.33.2 with Qwopus3.5 4B Coder and Qwen3.5 2B:

  • a turn with tool calls;
  • /unload;
  • mm init --provider kronk --check;
  • a profile's window and sampling.

Not tried: a real download through autoPull (only the answer to an already installed model was read), a compaction, and a protected Kronk.

See How to run mini-me on Kronk.

Demos

  • demos/kronk/: a coding agent on Kronk with mradermacher/Qwopus3.5-4B-Coder.Q8_0, and the line to change for Qwen3.5 2B.
  • demo.acp.sdk/client-tools-nodejs/: a Node.js client with no dependency that lends the agent one tool, host_info, the operating system, CPU, memory or uptime of the client's machine. The agent has no shell, so that tool is its only way to know.
  • demo.acp.sdk/go/: Options.Tools, and examples/clienttools, a to-do list the agent fills and reads.

Documentation

Upgrading

  • Agent files do not change. Replace the binary: see the install guides for macOS, Linux and Windows.

  • New keys:

    • acp.clientTools.enabled (true);
    • acp.clientTools.discovery (meta);
    • acp.clientTools.permissions (auto);
    • acp.clientTools.timeout (30s).

    An ACP client that advertises no tool sees no difference.

  • New provider value: kronk. unknown provider now lists dmr, kronk, llamacpp, llmman, ollama, openai.

 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
81
82
83
# mini-me v1.0.6

*[Version française](v1.0.6.fr.md)*

An ACP client can lend the agent its own functions as tools, and mini-me runs on Kronk, the Go inference server of Ardan Labs.

## New

### Tools lent by an ACP client (#202)

In ACP mode, the program that drives mm can now give the agent tools of its own. Examples are an editor's open buffers, an application's data, or a device. The model calls them like `bash` or `read_file`, under the name `client_<name>`. mm forwards each call to the client as an ACP extension request and gives the answer back to the model. ACP defines no way to describe such a tool, so mm defines one under its own namespace, `org.mini-me`. A client that does not use it sends nothing, and nothing changes.

- **Two ways to announce the tools**, set with `acp.clientTools.discovery`.
  - `meta` (the default): the client lists its tools in `initialize`.
  - `request`: the client only says it has tools, and mm asks for the list each time a session is opened, loaded or resumed. This is for tools that depend on the session.
- **Permissions**, set with `acp.clientTools.permissions`.
  - `auto` (the default) asks the client only when `yolo` is `false`.
  - `ask` asks before every call.
  - The default is `auto`, where MCP's is `ask`: a client tool is a function of the very program that started mm.
- **Errors never end the turn.** A client that fails, does not answer within `acp.clientTools.timeout` (`30s`), or answers `Method not found` gives the model a `[client tool error: …]` text. An entry of the list that cannot be used is skipped with a line on stderr.
- **Turn it off** with `acp.clientTools.enabled: false`. The tools exist only in ACP mode: the terminal and the window have no client to lend them.

The specification is written for client authors: the exact JSON of the announcement, of the list request, of a call and of its answer. The Go package of `demo.acp.sdk` offers tools with `Options.Tools` and `ToolDiscovery`.

Checked with Qwen3.5 4B on llmman: the Go example, in both modes, and the Node.js demo, in `meta`, `request` and `yolo: false`. The Node.js demo was also run on macOS.

See [How to offer tools from your ACP client](../docs/en/how-to/offer-tools-from-an-acp-client.md), the [specification](../docs/en/reference/acp-client-tools.md) and [why it is designed this way](../docs/en/explanation/acp-client-tools.md).

### Kronk provider (#75)

`provider: kronk` runs mini-me on [Kronk](https://www.kronkai.com), the Go inference server of Ardan Labs. Kronk embeds llama.cpp without a `llama-server` process. mm uses its OpenAI-compatible API at `http://127.0.0.1:11435/v1`. From a sandbox, mm falls back to `http://host.docker.internal:11435/v1`.

- **The window is known at start-up.** It is the one Kronk serves the model with, read from Kronk whether the model is loaded or not, for example `ctx: 131072 (/v1/kronk/models)`.
- **`autoPull`** downloads a model Kronk does not have, and **`/unload`** and the `unload_model` tool free its memory.
- **The summary of a compaction turns reasoning off** with `chat_template_kwargs`, which Kronk obeys; `reasoning_effort: none` is ignored by Kronk. There is no `Reading the prompt …` line: Kronk sends no progress while it reads.
- **A protected Kronk** (`authenticated` or `full-protected` modes) takes its token from `KRONK_TOKEN`. A refused token is a start-up warning that names the variable.
- **`mm init --provider kronk`** lists Kronk's models and reads, from Kronk, the window, the GGUF's sampling and the chat template's reasoning switch.
- **Kronk profiles.** Kronk also lists configuration profiles, `provider/modelID/PROFILE` (for example `…/Qwopus3.5-4B-Coder.Q8_0/AGENT`). A profile is the same model with its own settings in Kronk's `model_config.yaml`.
  - `mm init` says what a profile is, and copies its sampling into the file. Without the copy, it would never apply: mm sends `temperature`, `top_p` and `max_tokens` with every request, even without a `sampling:` block, and a request's value wins over a profile's.
  - The window shows a profile as `Qwopus3.5-4B-Coder.Q8…/AGENT` instead of just `AGENT`.

From a Docker Sandbox, start Kronk on the host with `kronk server start --api-host 0.0.0.0:11435`: by default it listens on the loopback only. The id Kronk serves a model under is not always the one it was pulled with: `unsloth/Qwen3.5-2B-GGUF:Q4_K_M` is served as `unsloth/Qwen3.5-2B-Q4_K_M`. Use the id `GET /v1/models` gives.

Checked against Kronk 1.33.2 with Qwopus3.5 4B Coder and Qwen3.5 2B:
- a turn with tool calls;
- `/unload`;
- `mm init --provider kronk --check`;
- a profile's window and sampling.

**Not tried**: a real download through `autoPull` (only the answer to an already installed model was read), a compaction, and a protected Kronk.

See [How to run mini-me on Kronk](../docs/en/how-to/run-with-kronk.md).

## Demos

- [`demos/kronk/`](../demos/kronk/README.en.md): a coding agent on Kronk with `mradermacher/Qwopus3.5-4B-Coder.Q8_0`, and the line to change for Qwen3.5 2B.
- [`demo.acp.sdk/client-tools-nodejs/`](../demo.acp.sdk/client-tools-nodejs/README.en.md): a Node.js client with no dependency that lends the agent one tool, `host_info`, the operating system, CPU, memory or uptime of the client's machine. The agent has no shell, so that tool is its only way to know.
- [`demo.acp.sdk/go/`](../demo.acp.sdk/go/README.en.md): `Options.Tools`, and `examples/clienttools`, a to-do list the agent fills and reads.

## Documentation

- New:
  - [How to offer tools from your ACP client](../docs/en/how-to/offer-tools-from-an-acp-client.md);
  - [ACP client tools](../docs/en/reference/acp-client-tools.md), the specification;
  - [ACP client tools — explanation](../docs/en/explanation/acp-client-tools.md);
  - [How to run mini-me on Kronk](../docs/en/how-to/run-with-kronk.md).
- Updated for Kronk and client tools:
  - the configuration, CLI and tools references;
  - the explanations of providers, `mm init` and thinking models;
  - the guides to turning reasoning off, freeing a model's memory, and running in a Docker Sandbox.
- The macOS install guide shows how to check the binary's signature, with `codesign`, before installing it.

## Upgrading

- **Agent files do not change.** Replace the binary: see the install guides for [macOS](../INSTALL.MACOS.md), [Linux](../INSTALL.LINUX.md) and [Windows](../INSTALL.WINDOWS.md).
- New keys:
  - `acp.clientTools.enabled` (`true`);
  - `acp.clientTools.discovery` (`meta`);
  - `acp.clientTools.permissions` (`auto`);
  - `acp.clientTools.timeout` (`30s`).
  
  An ACP client that advertises no tool sees no difference.
- New provider value: `kronk`. `unknown provider` now lists `dmr, kronk, llamacpp, llmman, ollama, openai`.