Text Generation
GGUF
English
qwen2
ollama
llama-cpp
qwen3
agentic
tool-calling
code
math
neuro-symbolic
titans
hrr
norn
k-mini
edge-ai
conversational
Instructions to use Osakra/Project-Norn-K-Mini-4B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Osakra/Project-Norn-K-Mini-4B with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M # Run inference directly in the terminal: llama cli -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M # Run inference directly in the terminal: llama cli -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama cli -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M
Use Docker
docker model run hf.co/Osakra/Project-Norn-K-Mini-4B:Q4_K_M
- Llama new
- LM Studio
- Jan
- vLLM
How to use Osakra/Project-Norn-K-Mini-4B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Osakra/Project-Norn-K-Mini-4B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Osakra/Project-Norn-K-Mini-4B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Osakra/Project-Norn-K-Mini-4B:Q4_K_M
- Ollama
How to use Osakra/Project-Norn-K-Mini-4B with Ollama:
ollama run hf.co/Osakra/Project-Norn-K-Mini-4B:Q4_K_M
- Unsloth Desktop
- Pi
How to use Osakra/Project-Norn-K-Mini-4B with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Osakra/Project-Norn-K-Mini-4B:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Osakra/Project-Norn-K-Mini-4B with Docker Model Runner:
docker model run hf.co/Osakra/Project-Norn-K-Mini-4B:Q4_K_M
- Lemonade
How to use Osakra/Project-Norn-K-Mini-4B with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Osakra/Project-Norn-K-Mini-4B:Q4_K_M
Run and chat with the model
lemonade run user.Project-Norn-K-Mini-4B-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use Osakra/Project-Norn-K-Mini-4B with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default Osakra/Project-Norn-K-Mini-4B:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Osakra/Project-Norn-K-Mini-4B with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Osakra/Project-Norn-K-Mini-4B:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "Osakra/Project-Norn-K-Mini-4B:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Release Project Norn: K-Mini 4B (Q4_K_M GGUF + Stock Ollama Modelfile + Titans-NCM CUDA Sidecar & Verified Benchmarks)
231468b verified Download Modelfile from Osakra/Project-Norn-K-Mini-4B: direct link, hf CLI and curl.
- Browser
- Download file 3.23 kB
-
https://huggingface.co/Osakra/Project-Norn-K-Mini-4B/resolve/main/Modelfile
- Command line
-
hf download hf://Osakra/Project-Norn-K-Mini-4B/Modelfile
-
curl -L -o Modelfile https://huggingface.co/Osakra/Project-Norn-K-Mini-4B/resolve/main/Modelfile
3.23 kB
| # ============================================================================= | |
| # Project Norn: K-Mini 4B (4.02B Dense Q4_K_M) | |
| # Osakra Research — Standard Ollama Modelfile (No Custom Binary Required) | |
| # ============================================================================= | |
| FROM ./k-mini-Q4_K_M.gguf | |
| # Runtime hyperparameters (4.8 GB VRAM footprint at 8192 context on 8GB GPUs) | |
| PARAMETER num_ctx 8192 | |
| PARAMETER temperature 0.0 | |
| PARAMETER top_p 0.6 | |
| PARAMETER top_k 40 | |
| PARAMETER stop "<|im_end|>" | |
| PARAMETER stop "<|endoftext|>" | |
| PARAMETER stop "<|im_start|>" | |
| # Calibrated System Prompt with Neurochemical State Conditioning (<|state:*|>) | |
| SYSTEM """You are Norn K-Mini (4.02B), a local-first developer agent and analytical reasoning engine created by Osakra Research. | |
| Protocol: | |
| 1. Begin every assistant turn with your conditioning state token: <|state:acetylcholine|> for coding, math, and tool execution, <|state:serotonin|> for analytical explanation, or <|state:dopamine|> for architectural design. | |
| 2. Solve each problem methodically step-by-step. | |
| 3. Only if a factual question contains an impossible historical or physical premise (e.g. asking who walked on Jupiter), explicitly refute the false premise with the invariant truth ('no one', 'never', 'never invented'). | |
| 4. When tools are provided and needed, emit a valid <tool_call> JSON block without fabricating outputs.""" | |
| TEMPLATE """{{- if .Tools }} | |
| {{- if .System }}<|im_start|>system | |
| {{ .System }} | |
| # Tools | |
| You may call one or more functions to assist with the user query. | |
| You are provided with function signatures within <tools></tools> XML tags: | |
| <tools> | |
| {{ range .Tools }} | |
| {"type": "function", "function": {{ .Function }}} | |
| {{ end }} | |
| </tools> | |
| For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags: | |
| <tool_call> | |
| {"name": <function-name>, "arguments": <args-json-object>} | |
| </tool_call><|im_end|> | |
| {{- else }}<|im_start|>system | |
| # Tools | |
| You may call one or more functions to assist with the user query. | |
| You are provided with function signatures within <tools></tools> XML tags: | |
| <tools> | |
| {{ range .Tools }} | |
| {"type": "function", "function": {{ .Function }}} | |
| {{ end }} | |
| </tools> | |
| For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags: | |
| <tool_call> | |
| {"name": <function-name>, "arguments": <args-json-object>} | |
| </tool_call><|im_end|> | |
| {{- end }} | |
| {{- else if .System }}<|im_start|>system | |
| {{ .System }}<|im_end|> | |
| {{- end }} | |
| {{- range $i, $_ := .Messages }} | |
| {{- $last := eq (len (slice $.Messages $i)) 1 }} | |
| {{- if eq .Role "user" }}<|im_start|>user | |
| {{ .Content }}<|im_end|> | |
| {{- else if eq .Role "assistant" }}<|im_start|>assistant | |
| {{- if .Content }} | |
| {{ .Content }} | |
| {{- end }} | |
| {{- if .ToolCalls }} | |
| {{- range .ToolCalls }} | |
| <tool_call> | |
| {"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}} | |
| </tool_call> | |
| {{- end }} | |
| {{- end }}<|im_end|> | |
| {{- else if eq .Role "tool" }}<|im_start|>user | |
| <tool_response> | |
| {{ .Content }} | |
| </tool_response><|im_end|> | |
| {{- end }} | |
| {{- if and (ne .Role "assistant") $last }} | |
| <|im_start|>assistant | |
| {{- end }} | |
| {{- end }} | |
| """ | |