Instructions to use srock44/cipher-air 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 srock44/cipher-air 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 srock44/cipher-air:Q4_K_M # Run inference directly in the terminal: llama cli -hf srock44/cipher-air:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf srock44/cipher-air:Q4_K_M # Run inference directly in the terminal: llama cli -hf srock44/cipher-air:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf srock44/cipher-air:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf srock44/cipher-air:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf srock44/cipher-air:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf srock44/cipher-air:Q4_K_M
Use Docker
docker model run hf.co/srock44/cipher-air:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use srock44/cipher-air with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "srock44/cipher-air" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "srock44/cipher-air", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/srock44/cipher-air:Q4_K_M
- Ollama
How to use srock44/cipher-air with Ollama:
ollama run hf.co/srock44/cipher-air:Q4_K_M
- Unsloth Studio
How to use srock44/cipher-air with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for srock44/cipher-air to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for srock44/cipher-air to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for srock44/cipher-air to start chatting
- Pi
How to use srock44/cipher-air with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf srock44/cipher-air: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": "srock44/cipher-air:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use srock44/cipher-air with Docker Model Runner:
docker model run hf.co/srock44/cipher-air:Q4_K_M
- Lemonade
How to use srock44/cipher-air with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull srock44/cipher-air:Q4_K_M
Run and chat with the model
lemonade run user.cipher-air-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use srock44/cipher-air with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf srock44/cipher-air: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 srock44/cipher-air:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use srock44/cipher-air with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf srock44/cipher-air: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 "srock44/cipher-air: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"
| """ | |
| Export the Qwen2.5-0.5B email-triage LoRA adapter to llama.cpp-compatible GGUF. | |
| VARIANT EXPERIMENT -- Qwen2.5 0.5B. | |
| Companion to train/train_qwen2_5_0_5b_lora.py. Loads the base | |
| Qwen2.5-0.5B-Instruct model with that variant's trained LoRA adapter, merges | |
| the weights, and quantizes to the requested GGUF format(s). Outputs go into | |
| the same clearly-labeled directory tree as the training run. | |
| Outputs: | |
| outputs/qwen2.5-0.5b/gguf/grimoire-qwen2.5-0.5b-triage-q4_k_m.gguf | |
| outputs/qwen2.5-0.5b/gguf/grimoire-qwen2.5-0.5b-triage-q3_k_m.gguf (optional) | |
| outputs/qwen2.5-0.5b/merged/ (optional) | |
| Usage: | |
| python train/export_gguf_qwen2_5_0_5b.py | |
| python train/export_gguf_qwen2_5_0_5b.py --methods q4_k_m q3_k_m | |
| """ | |
| import argparse | |
| from pathlib import Path | |
| def parse_args(): | |
| parser = argparse.ArgumentParser(description="Export Qwen2.5-0.5B fine-tuned LoRA to GGUF") | |
| parser.add_argument("--model_name", default="grimoire-qwen2.5-0.5b-triage", help="Base name for GGUF/Ollama model") | |
| parser.add_argument("--base_model", default="Qwen/Qwen2.5-0.5B-Instruct", help="Base HF model name/path") | |
| parser.add_argument("--lora_dir", default="outputs/qwen2.5-0.5b/lora", help="Directory with LoRA adapter") | |
| parser.add_argument("--output_dir", default="outputs/qwen2.5-0.5b/gguf", help="Where to write .gguf files") | |
| parser.add_argument( | |
| "--methods", | |
| nargs="+", | |
| default=["q4_k_m"], | |
| help="Quantization methods to produce (e.g. q4_k_m q3_k_m q2_k)", | |
| ) | |
| parser.add_argument("--max_seq_length", type=int, default=2048) | |
| parser.add_argument("--merged_dir", default="outputs/qwen2.5-0.5b/merged", help="Optional merged HF model output") | |
| return parser.parse_args() | |
| def main(args): | |
| from unsloth import FastLanguageModel | |
| out_dir = Path(args.output_dir) | |
| out_dir.mkdir(parents=True, exist_ok=True) | |
| # This Unsloth build's from_pretrained() doesn't accept adapter_name_or_path | |
| # (TypeError: ...__init__() got an unexpected keyword argument | |
| # 'adapter_name_or_path' -- confirmed against the 1.5B pipeline, see | |
| # DEPLOYMENT.md). Point model_name directly at the LoRA directory instead | |
| # (it has adapter_config.json with base_model_name_or_path set) -- | |
| # Unsloth's own documented pattern, loads base+adapter as one call and is | |
| # correctly tagged as PEFT for save_pretrained_gguf(). | |
| print(f"Loading base model + LoRA adapter from {args.lora_dir} ...") | |
| model, tokenizer = FastLanguageModel.from_pretrained( | |
| model_name=args.lora_dir, | |
| max_seq_length=args.max_seq_length, | |
| dtype=None, | |
| load_in_4bit=True, | |
| ) | |
| # Export GGUF(s) | |
| for method in args.methods: | |
| print(f"Exporting GGUF with quantization={method} ...") | |
| model.save_pretrained_gguf( | |
| str(out_dir / args.model_name), | |
| tokenizer, | |
| quantization_method=method, | |
| ) | |
| print("Done. Files:") | |
| for f in sorted(out_dir.glob("*.gguf")): | |
| print(f" {f} ({f.stat().st_size / 1e6:.1f} MB)") | |
| # Save merged HF model (useful for non-GGUF inference / debugging) | |
| if args.merged_dir: | |
| merged_dir = Path(args.merged_dir) | |
| merged_dir.mkdir(parents=True, exist_ok=True) | |
| print(f"Saving merged HF model to {merged_dir}") | |
| merged = model.merge_and_unload() | |
| merged.save_pretrained(merged_dir) | |
| tokenizer.save_pretrained(merged_dir) | |
| if __name__ == "__main__": | |
| args = parse_args() | |
| main(args) |