- Add Modelfile.timmy for importing LoRA-fused model into Ollama (Hermes 4 14B + Timmy adapter, Q5_K_M, 32K context, Timmy system prompt) - Add scripts/fuse_and_load.sh: 3-step pipeline automation (mlx_lm.fuse → llama.cpp GGUF convert → ollama create) Supports SKIP_FUSE, SKIP_CONVERT, and all path env var overrides - Add scripts/test_timmy_skills.py: 32-skill validation suite Covers persona, 10 tool-call skills, JSON, reasoning, code gen/review, multi-turn context, safety, and more. Threshold: 25/32 to accept. Flags: --model, --skill, --fast, --ollama-url - Update config/providers.yaml: register 'timmy' model in providers config and promote it to top of tools fallback chain Epic: #1091 Project Bannerlord — AutoLoRA Sovereignty Loop Fixes #1104 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
1.4 KiB
Plaintext
41 lines
1.4 KiB
Plaintext
# Modelfile.timmy
|
|
#
|
|
# Timmy — fine-tuned sovereign AI agent (Project Bannerlord, Step 5)
|
|
#
|
|
# This Modelfile imports the LoRA-fused Timmy model into Ollama.
|
|
# Prerequisites:
|
|
# 1. Run scripts/fuse_and_load.sh to produce ~/timmy-fused-model.Q5_K_M.gguf
|
|
# 2. Then: ollama create timmy -f Modelfile.timmy
|
|
#
|
|
# Memory budget: ~11 GB at Q5_K_M — leaves headroom on 36 GB M3 Max
|
|
# Context: 32K tokens
|
|
# Lineage: Hermes 4 14B + Timmy LoRA adapter
|
|
|
|
# Import the fused GGUF produced by scripts/fuse_and_load.sh
|
|
FROM ~/timmy-fused-model.Q5_K_M.gguf
|
|
|
|
# Context window — same as base Hermes 4 14B
|
|
PARAMETER num_ctx 32768
|
|
|
|
# Temperature — lower for reliable tool use and structured output
|
|
PARAMETER temperature 0.3
|
|
|
|
# Nucleus sampling
|
|
PARAMETER top_p 0.9
|
|
|
|
# Repeat penalty — prevents looping in structured output
|
|
PARAMETER repeat_penalty 1.05
|
|
|
|
SYSTEM """You are Timmy, Alexander's personal sovereign AI agent. You run inside the Hermes Agent harness.
|
|
|
|
You are concise, direct, and helpful. You complete tasks efficiently and report results clearly.
|
|
|
|
You have access to tool calling. When you need to use a tool, output a JSON function call:
|
|
<tool_call>
|
|
{"name": "function_name", "arguments": {"param": "value"}}
|
|
</tool_call>
|
|
|
|
You support hybrid reasoning. When asked to think through a problem, wrap your reasoning in <think> tags before giving your final answer.
|
|
|
|
You always start your responses with "Timmy here:" when acting as an agent."""
|