bots-garden/mini-mepublic Fork
⑂ 36b4793
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-02T20:46:40+02:00 Browse files
36b4793 parent: fcfbb59
added .tickets/issues/0066-mini-me-as-a-sdk.yaml +13 -0
new file mode 100644
@@ -0,0 +1,13 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 66
3+title: Mini Me as a SDK
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T05:32:33.878Z
9+updatedAt: 2026-10-02T05:32:33.878Z
10+labels: []
11+body: ""
12+tasks: []
13+comments: []
new file mode 100644
@@ -0,0 +1,13 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 66
3+title: Mini Me as a SDK
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T05:32:33.878Z
9+updatedAt: 2026-10-02T05:32:33.878Z
10+labels: []
11+body: ""
12+tasks: []
13+comments: []
added .tickets/issues/0067-enable-disable-reasoning-mode.yaml +13 -0
new file mode 100644
@@ -0,0 +1,13 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 67
3+title: Enable / Disable reasoning mode
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T06:09:42.599Z
9+updatedAt: 2026-10-02T06:09:42.599Z
10+labels: []
11+body: ""
12+tasks: []
13+comments: []
new file mode 100644
@@ -0,0 +1,13 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 67
3+title: Enable / Disable reasoning mode
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T06:09:42.599Z
9+updatedAt: 2026-10-02T06:09:42.599Z
10+labels: []
11+body: ""
12+tasks: []
13+comments: []
added .tickets/issues/0068-recall-the-last-commands-last.yaml +13 -0
new file mode 100644
@@ -0,0 +1,13 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 68
3+title: Recall the last commands (/last)
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T07:01:13.955Z
9+updatedAt: 2026-10-02T07:01:13.955Z
10+labels: []
11+body: ""
12+tasks: []
13+comments: []
new file mode 100644
@@ -0,0 +1,13 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 68
3+title: Recall the last commands (/last)
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T07:01:13.955Z
9+updatedAt: 2026-10-02T07:01:13.955Z
10+labels: []
11+body: ""
12+tasks: []
13+comments: []
added .tickets/issues/0069-create-skills-to-search-some-specific-knowlege-o.yaml +14 -0
new file mode 100644
@@ -0,0 +1,14 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 69
3+title: Create skills to search some specific knowlege on internet
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T09:26:19.729Z
9+updatedAt: 2026-10-02T09:27:01.494Z
10+labels: []
11+body: |
12+ For example Genkit skill with the appropriate links to the documentation (for fetching)
13+tasks: []
14+comments: []
new file mode 100644
@@ -0,0 +1,14 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 69
3+title: Create skills to search some specific knowlege on internet
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T09:26:19.729Z
9+updatedAt: 2026-10-02T09:27:01.494Z
10+labels: []
11+body: |
12+ For example Genkit skill with the appropriate links to the documentation (for fetching)
13+tasks: []
14+comments: []
added .tickets/issues/0070-add-github-gitlab-other-identity-to-the-mini-me.yaml +13 -0
new file mode 100644
@@ -0,0 +1,13 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 70
3+title: Add GitHub / GitLab / Other ... identity to the Mini Me Agent (but hidden)
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T14:22:29.427Z
9+updatedAt: 2026-10-02T14:22:29.427Z
10+labels: []
11+body: ""
12+tasks: []
13+comments: []
new file mode 100644
@@ -0,0 +1,13 @@
1+# Managed by IssueSpec. Hand edits are welcome; keep the schema valid.
2+id: 70
3+title: Add GitHub / GitLab / Other ... identity to the Mini Me Agent (but hidden)
4+state: open
5+author:
6+ name: k33g
7+ email: ph.charriere@gmail.com
8+createdAt: 2026-10-02T14:22:29.427Z
9+updatedAt: 2026-10-02T14:22:29.427Z
10+labels: []
11+body: ""
12+tasks: []
13+comments: []
added agent.llmman.yaml +200 -0
new file mode 100644
@@ -0,0 +1,200 @@
1+# Agent settings — mini-me served by llmman (https://github.com/llmmanorg/llmman)
2+# through its OpenAI-compatible endpoint (/v1/chat/completions).
3+#
4+# llmman pull hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M # optional: the first question pulls it otherwise
5+# llmman serve # 127.0.0.1:17434
6+#
7+# llmman loads the model on the first request (in its own llama-server) and
8+# unloads it after five idle minutes.
9+provider: llmman
10+
11+# The model id exactly as `llmman list` / GET /v1/models spells it.
12+model: huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M
13+#model: hf.co/ornith-ai/Ornith-1.5-35B-A3B-GGUF:Q4_K_M
14+
15+# `llmman serve`'s default bind; the OpenAI routes sit under /v1.
16+baseUrl: http://127.0.0.1:17434/v1
17+
18+# From a Docker sandbox, the daemon runs on the host.
19+fallback: http://host.docker.internal:17434/v1
20+
21+# Only when the daemon was started with LLMMAN_API_KEYS (mandatory when it
22+# listens beyond loopback); unset otherwise. The key never goes in this file.
23+# apiKeyEnv: LLMMAN_API_KEY
24+
25+# The `bash` tool.
26+# `false` removes it: the model can still read and edit files (editTools) and load skills,
27+# but never runs a command. If you turn it off, reword the system prompt below — it says "You have a bash tool".
28+bashTool: true
29+
30+# The built-in file tools: read_file, write_file, edit_file.
31+editTools: true
32+
33+# The built-in plan tool for managing multi-step plans.
34+# Set to false to disable plan creation and tracking via the `plan` tool.
35+planTool: true
36+
37+# Language servers for the `lsp` tool (definition, references, hover, symbols, diagnostics, rename).
38+# The file extension picks the server. A server missing from the PATH is skipped with a warning.
39+# No server listed = no `lsp` tool. Examples (uncomment what you have installed):
40+# lsp:
41+# servers:
42+# - name: gopls
43+# command: gopls
44+# extensions: [".go"]
45+# - name: typescript
46+# command: typescript-language-server
47+# args: ["--stdio"]
48+# extensions: [".ts", ".tsx", ".js", ".jsx"]
49+# - name: python
50+# command: pyright-langserver
51+# args: ["--stdio"]
52+# extensions: [".py"]
53+# - name: rust
54+# command: rust-analyzer
55+# extensions: [".rs"]
56+
57+# How many tokens the server actually serves.
58+# 0 = ask llmman: /api/ps tells it once the model is loaded, so the window is
59+# learned before the second question. Set it here if you want it from the start
60+# — and to the same value as LLMMAN_CONTEXT_LENGTH if you set that variable.
61+contextWindow: 0
62+
63+# Max number of characters a tool returns to the model.
64+# Context safeguard: beyond that, the output is truncated (beginning + end kept).
65+maxOutput: 16000
66+
67+# Max number of model <-> tools round trips for a single question.
68+# Raise it for tasks that need long chains of commands.
69+maxTurns: 40
70+
71+# Where the `read_skill` tool looks for its markdown procedures.
72+# The path is relative to the CURRENT DIRECTORY: run the agent from demo-llmman/.
73+# skillsDir: ../skills
74+
75+# Persistent sessions, per project.
76+# When enabled, every conversation is saved as one JSON file under `dir`.
77+# `/sessions` lists them, `/resume` continues one; in an editor, "Reload Agent" replays the thread.
78+sessions:
79+ enabled: true
80+ dir: .mm/sessions
81+
82+# How many lines of a command's output are echoed to the terminal.
83+# 0 disables it.
84+previewLines: 20
85+
86+displayCommands: true
87+# Show what a thinking model reasons about before it answers (dim italic in the
88+# terminal, its own style in the window, a thought chunk in an editor).
89+# The reasoning is always READ — it is what keeps the watchdog alive while the
90+# model thinks — this only says whether to show it.
91+showThinking: true
92+
93+
94+# The system prompt: what the agent is, and what it is allowed to do.
95+# This is the knob to play with — it is the shortest path to changing behaviour.
96+system: |
97+ Your name is Bob.
98+ You are a coding agent working in a terminal.
99+ You have a "bash" tool to run shell commands.
100+ Use it to explore files, run tests, inspect the repository, etc.
101+ Chain several commands if needed, then answer clearly in English.
102+
103+ A request often mixes things you answer from yourself ("say hello") with
104+ things only a command can answer ("list the files"). Handle every part, in
105+ the order asked, and run a command for each part that needs one.
106+ Never state the contents of a file, the output of a command, or the state of
107+ the repository unless a command in THIS answer returned it. What you did not
108+ read, you do not know: run the command instead of recalling it.
109+
110+ SKILLS
111+ You have a second tool, `read_skill`. Its description lists the procedures
112+ available for this project — one per kind of task.
113+
114+ Any request to DO something to a Go project is a skill, not a shell command
115+ you invent. Match the request against that list, call `read_skill` FIRST,
116+ before any bash command, and then follow what it says step by step.
117+
118+ FILE EDITING
119+ You have three tools for files: `read_file`, `edit_file` and `write_file`.
120+ They are how a file gets read and changed here: each change is exact,
121+ checked before it is written, and comes back as a diff with line numbers.
122+ bash is for running things — building, testing, listing, searching.
123+
124+ - Read before you write: call `read_file` on the file (numbered=true when
125+ you need line numbers). You cannot target text you have not seen; never
126+ rely on what you think you remember about a file.
127+ - To change an existing file, call `edit_file` with one or more {old, new}
128+ pairs. `old` is copied from the file character for character — same
129+ spaces, same indentation, same line breaks — and appears exactly once:
130+ add the surrounding lines until it is unique. Several pairs are applied
131+ together, against the original file. An empty `new` deletes the text.
132+ - Call `write_file` only to create a file, or to rewrite one entirely and
133+ on purpose. On an existing file it replaces everything, including what
134+ you did not intend to touch.
135+ - Read the diff the tool returns: it says exactly what changed and on which
136+ line. If `edit_file` refuses — text not found, ambiguous, overlapping
137+ edits — read the file again and fix `old`. Do not fall back to
138+ `write_file` to force the change through.
139+ - After editing code, run the narrowest check with bash: the formatter, the
140+ compiler, or the test covering that file.
141+
142+ RULES
143+ - Keep everything the file already does, unless the user asked to remove it.
144+ - Touch only the files the request is about. Do not add tests, files or
145+ features that were not asked for.
146+ - Never run a git command unless the user says git, commit or push.
147+ - Never move, rename or delete a file unless the user asked for it.
148+ - Then answer in English, in a few lines.
149+ - If you don't know how to use a <cli>, run `<cli> --help` (or `<cli> help`)
150+ to understand the options, then run the command.
151+
152+ BACKGROUND JOBS
153+ Never let a command block the answer. Anything that serves, watches or runs
154+ long goes to the background, with BOTH streams redirected and its pid kept:
155+
156+ nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid
157+
158+ Redirecting only stdout still blocks until the process exits. Read the
159+ `bg-jobs` skill before you wait on, inspect or stop such a job — each has a
160+ rule you cannot guess. Stop every job you started before you finish, and say
161+ which ones you left running.
162+
163+# Generation settings (OpenAI API keys). Low temperature for a coding agent:
164+# we want precise and reproducible answers, not creativity.
165+sampling:
166+ temperature: 0.0
167+ parallel_tool_calls: false
168+ top_p: 0.9
169+ max_tokens: 4096
170+
171+# Silence allowed between two tokens once the answer has started.
172+watchdogTimeout: 30s
173+
174+# Silence allowed while the model reads the prompt, before the first token:
175+# on a laptop a 25k-token prompt can take minutes. llama-server reports its
176+# progress meanwhile, through llmman ("Reading the prompt 12.0k/25.3k tokens"), and each report
177+# restarts this clock, so it only has to cover one batch of the prompt.
178+firstTokenTimeout: 3m
179+
180+# Context compression.
181+# ON here: the agent learns the window from /api/ps, so `threshold` has a number to apply to.
182+context:
183+ enabled: true
184+
185+ # Compress when the history reaches this share of the window.
186+ threshold: 75
187+
188+ # Fallback on the message count, for when the window is unknown.
189+ # One command costs 2 messages (call + response), so 80 is roughly 30 commands of history.
190+ maxMessages: 80
191+
192+ # How many recent questions (with their commands and answers) are kept as-is instead of being summarised.
193+ # The model works on the last few turns, so summarising them would make it redo what it just did.
194+ keepLastTurns: 3
195+
196+ # max_tokens of the summary request. Reasoning is turned off for it on this provider
197+ # (a thinking model would otherwise spend the budget thinking and write nothing).
198+ summaryMaxTokens: 1200
199+
200+ showStats: true
new file mode 100644
@@ -0,0 +1,200 @@
1+# Agent settings — mini-me served by llmman (https://github.com/llmmanorg/llmman)
2+# through its OpenAI-compatible endpoint (/v1/chat/completions).
3+#
4+# llmman pull hf.co/unsloth/Qwen3.5-4B-GGUF:Q4_K_M # optional: the first question pulls it otherwise
5+# llmman serve # 127.0.0.1:17434
6+#
7+# llmman loads the model on the first request (in its own llama-server) and
8+# unloads it after five idle minutes.
9+provider: llmman
10+
11+# The model id exactly as `llmman list` / GET /v1/models spells it.
12+model: huggingface.co/jetbrains/mellum2-12b-a2.5b-instruct-gguf-q4_k_m:Q4_K_M
13+#model: hf.co/ornith-ai/Ornith-1.5-35B-A3B-GGUF:Q4_K_M
14+
15+# `llmman serve`'s default bind; the OpenAI routes sit under /v1.
16+baseUrl: http://127.0.0.1:17434/v1
17+
18+# From a Docker sandbox, the daemon runs on the host.
19+fallback: http://host.docker.internal:17434/v1
20+
21+# Only when the daemon was started with LLMMAN_API_KEYS (mandatory when it
22+# listens beyond loopback); unset otherwise. The key never goes in this file.
23+# apiKeyEnv: LLMMAN_API_KEY
24+
25+# The `bash` tool.
26+# `false` removes it: the model can still read and edit files (editTools) and load skills,
27+# but never runs a command. If you turn it off, reword the system prompt below — it says "You have a bash tool".
28+bashTool: true
29+
30+# The built-in file tools: read_file, write_file, edit_file.
31+editTools: true
32+
33+# The built-in plan tool for managing multi-step plans.
34+# Set to false to disable plan creation and tracking via the `plan` tool.
35+planTool: true
36+
37+# Language servers for the `lsp` tool (definition, references, hover, symbols, diagnostics, rename).
38+# The file extension picks the server. A server missing from the PATH is skipped with a warning.
39+# No server listed = no `lsp` tool. Examples (uncomment what you have installed):
40+# lsp:
41+# servers:
42+# - name: gopls
43+# command: gopls
44+# extensions: [".go"]
45+# - name: typescript
46+# command: typescript-language-server
47+# args: ["--stdio"]
48+# extensions: [".ts", ".tsx", ".js", ".jsx"]
49+# - name: python
50+# command: pyright-langserver
51+# args: ["--stdio"]
52+# extensions: [".py"]
53+# - name: rust
54+# command: rust-analyzer
55+# extensions: [".rs"]
56+
57+# How many tokens the server actually serves.
58+# 0 = ask llmman: /api/ps tells it once the model is loaded, so the window is
59+# learned before the second question. Set it here if you want it from the start
60+# — and to the same value as LLMMAN_CONTEXT_LENGTH if you set that variable.
61+contextWindow: 0
62+
63+# Max number of characters a tool returns to the model.
64+# Context safeguard: beyond that, the output is truncated (beginning + end kept).
65+maxOutput: 16000
66+
67+# Max number of model <-> tools round trips for a single question.
68+# Raise it for tasks that need long chains of commands.
69+maxTurns: 40
70+
71+# Where the `read_skill` tool looks for its markdown procedures.
72+# The path is relative to the CURRENT DIRECTORY: run the agent from demo-llmman/.
73+# skillsDir: ../skills
74+
75+# Persistent sessions, per project.
76+# When enabled, every conversation is saved as one JSON file under `dir`.
77+# `/sessions` lists them, `/resume` continues one; in an editor, "Reload Agent" replays the thread.
78+sessions:
79+ enabled: true
80+ dir: .mm/sessions
81+
82+# How many lines of a command's output are echoed to the terminal.
83+# 0 disables it.
84+previewLines: 20
85+
86+displayCommands: true
87+# Show what a thinking model reasons about before it answers (dim italic in the
88+# terminal, its own style in the window, a thought chunk in an editor).
89+# The reasoning is always READ — it is what keeps the watchdog alive while the
90+# model thinks — this only says whether to show it.
91+showThinking: true
92+
93+
94+# The system prompt: what the agent is, and what it is allowed to do.
95+# This is the knob to play with — it is the shortest path to changing behaviour.
96+system: |
97+ Your name is Bob.
98+ You are a coding agent working in a terminal.
99+ You have a "bash" tool to run shell commands.
100+ Use it to explore files, run tests, inspect the repository, etc.
101+ Chain several commands if needed, then answer clearly in English.
102+
103+ A request often mixes things you answer from yourself ("say hello") with
104+ things only a command can answer ("list the files"). Handle every part, in
105+ the order asked, and run a command for each part that needs one.
106+ Never state the contents of a file, the output of a command, or the state of
107+ the repository unless a command in THIS answer returned it. What you did not
108+ read, you do not know: run the command instead of recalling it.
109+
110+ SKILLS
111+ You have a second tool, `read_skill`. Its description lists the procedures
112+ available for this project — one per kind of task.
113+
114+ Any request to DO something to a Go project is a skill, not a shell command
115+ you invent. Match the request against that list, call `read_skill` FIRST,
116+ before any bash command, and then follow what it says step by step.
117+
118+ FILE EDITING
119+ You have three tools for files: `read_file`, `edit_file` and `write_file`.
120+ They are how a file gets read and changed here: each change is exact,
121+ checked before it is written, and comes back as a diff with line numbers.
122+ bash is for running things — building, testing, listing, searching.
123+
124+ - Read before you write: call `read_file` on the file (numbered=true when
125+ you need line numbers). You cannot target text you have not seen; never
126+ rely on what you think you remember about a file.
127+ - To change an existing file, call `edit_file` with one or more {old, new}
128+ pairs. `old` is copied from the file character for character — same
129+ spaces, same indentation, same line breaks — and appears exactly once:
130+ add the surrounding lines until it is unique. Several pairs are applied
131+ together, against the original file. An empty `new` deletes the text.
132+ - Call `write_file` only to create a file, or to rewrite one entirely and
133+ on purpose. On an existing file it replaces everything, including what
134+ you did not intend to touch.
135+ - Read the diff the tool returns: it says exactly what changed and on which
136+ line. If `edit_file` refuses — text not found, ambiguous, overlapping
137+ edits — read the file again and fix `old`. Do not fall back to
138+ `write_file` to force the change through.
139+ - After editing code, run the narrowest check with bash: the formatter, the
140+ compiler, or the test covering that file.
141+
142+ RULES
143+ - Keep everything the file already does, unless the user asked to remove it.
144+ - Touch only the files the request is about. Do not add tests, files or
145+ features that were not asked for.
146+ - Never run a git command unless the user says git, commit or push.
147+ - Never move, rename or delete a file unless the user asked for it.
148+ - Then answer in English, in a few lines.
149+ - If you don't know how to use a <cli>, run `<cli> --help` (or `<cli> help`)
150+ to understand the options, then run the command.
151+
152+ BACKGROUND JOBS
153+ Never let a command block the answer. Anything that serves, watches or runs
154+ long goes to the background, with BOTH streams redirected and its pid kept:
155+
156+ nohup <command> > /tmp/<job>.log 2>&1 & echo $! > /tmp/<job>.pid
157+
158+ Redirecting only stdout still blocks until the process exits. Read the
159+ `bg-jobs` skill before you wait on, inspect or stop such a job — each has a
160+ rule you cannot guess. Stop every job you started before you finish, and say
161+ which ones you left running.
162+
163+# Generation settings (OpenAI API keys). Low temperature for a coding agent:
164+# we want precise and reproducible answers, not creativity.
165+sampling:
166+ temperature: 0.0
167+ parallel_tool_calls: false
168+ top_p: 0.9
169+ max_tokens: 4096
170+
171+# Silence allowed between two tokens once the answer has started.
172+watchdogTimeout: 30s
173+
174+# Silence allowed while the model reads the prompt, before the first token:
175+# on a laptop a 25k-token prompt can take minutes. llama-server reports its
176+# progress meanwhile, through llmman ("Reading the prompt 12.0k/25.3k tokens"), and each report
177+# restarts this clock, so it only has to cover one batch of the prompt.
178+firstTokenTimeout: 3m
179+
180+# Context compression.
181+# ON here: the agent learns the window from /api/ps, so `threshold` has a number to apply to.
182+context:
183+ enabled: true
184+
185+ # Compress when the history reaches this share of the window.
186+ threshold: 75
187+
188+ # Fallback on the message count, for when the window is unknown.
189+ # One command costs 2 messages (call + response), so 80 is roughly 30 commands of history.
190+ maxMessages: 80
191+
192+ # How many recent questions (with their commands and answers) are kept as-is instead of being summarised.
193+ # The model works on the last few turns, so summarising them would make it redo what it just did.
194+ keepLastTurns: 3
195+
196+ # max_tokens of the summary request. Reasoning is turned off for it on this provider
197+ # (a thinking model would otherwise spend the budget thinking and write nothing).
198+ summaryMaxTokens: 1200
199+
200+ showStats: true