Instructions to use immortaltatsu/ghostai-lfm-app 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 immortaltatsu/ghostai-lfm-app 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 immortaltatsu/ghostai-lfm-app:F16 # Run inference directly in the terminal: llama cli -hf immortaltatsu/ghostai-lfm-app:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf immortaltatsu/ghostai-lfm-app:F16 # Run inference directly in the terminal: llama cli -hf immortaltatsu/ghostai-lfm-app:F16
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 immortaltatsu/ghostai-lfm-app:F16 # Run inference directly in the terminal: ./llama-cli -hf immortaltatsu/ghostai-lfm-app:F16
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 immortaltatsu/ghostai-lfm-app:F16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf immortaltatsu/ghostai-lfm-app:F16
Use Docker
docker model run hf.co/immortaltatsu/ghostai-lfm-app:F16
- LM Studio
- Jan
- vLLM
How to use immortaltatsu/ghostai-lfm-app with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "immortaltatsu/ghostai-lfm-app" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "immortaltatsu/ghostai-lfm-app", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/immortaltatsu/ghostai-lfm-app:F16
- Ollama
How to use immortaltatsu/ghostai-lfm-app with Ollama:
ollama run hf.co/immortaltatsu/ghostai-lfm-app:F16
- Unsloth Studio
How to use immortaltatsu/ghostai-lfm-app 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 immortaltatsu/ghostai-lfm-app 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 immortaltatsu/ghostai-lfm-app to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for immortaltatsu/ghostai-lfm-app to start chatting
- Pi
How to use immortaltatsu/ghostai-lfm-app with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf immortaltatsu/ghostai-lfm-app:F16
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "immortaltatsu/ghostai-lfm-app:F16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use immortaltatsu/ghostai-lfm-app with Docker Model Runner:
docker model run hf.co/immortaltatsu/ghostai-lfm-app:F16
- Lemonade
How to use immortaltatsu/ghostai-lfm-app with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull immortaltatsu/ghostai-lfm-app:F16
Run and chat with the model
lemonade run user.ghostai-lfm-app-F16
List all available models
lemonade list
- Hermes Agent
How to use immortaltatsu/ghostai-lfm-app with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf immortaltatsu/ghostai-lfm-app:F16
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 immortaltatsu/ghostai-lfm-app:F16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use immortaltatsu/ghostai-lfm-app with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf immortaltatsu/ghostai-lfm-app:F16
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 "immortaltatsu/ghostai-lfm-app:F16" \ --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"
GhostAI LFM app-contract SFT
LFM2.5-1.2B-Thinking fine-tuned to the GhostWallet mobile app's real on-device tool
contract — one Hermes <tool_call> block at a time, chosen from the app's retrieved
tool catalog.
Earlier Ghost AI checkpoints were trained against plan-schema.md (a plan object, then
bare per-step argument JSON). The app expects something different, so those models emitted
argument objects with no tool name and the app's parser discarded them. This model targets
the app contract directly.
Results — app harness (56 held-out utterances, Q4_K_M, greedy)
| metric | prior checkpoint | this model |
|---|---|---|
| emitted a parseable tool call | 35.7% | 92.9% |
| args passed the app's validator | 32.1% | 87.5% |
| called the expected tool | 16.1% | 23.2% |
| emitted plan JSON (wrong contract) | — | 0 |
tool_correct is capped by retrieval, not by the model. The app surfaces the correct
tool in its top-5 catalog only 10.7% of the time on these utterances, and a model cannot
call a tool it is never offered. Forcing the correct tool into the catalog
(GHOSTAI_BOOST=1) isolates the model:
| with correct tool in catalog | prior | this model |
|---|---|---|
| emitted a parseable call | 26.8% | 100% |
| called the expected tool | 21.4% | 98.2% |
| args valid | — | 94.6% |
Tool selection and argument construction are effectively solved (98.2%). The remaining production gap is the app's tool-retrieval ranking, which is an app-side concern. Note this measures the hash-embedding fallback ranking; the on-device path loads a real embedding model and is untested here.
Results — end-to-end harness (76 cases, 88 turns, app's real ChatSession)
| baseline | this model | |
|---|---|---|
| overall | 44% | 56.6% |
| grounding | 24% | 44.1% |
| value gate | 67% | 75% |
| injection resistance | 100% | 94.4% |
| multi-turn | 17% | 16.7% |
| gate bypasses | 0 | 0 |
| planted content reaching a tool arg | 0 | 0 |
| completion tokens / turn | 63 | 40.7 |
Known regressions and weaknesses
- Injection resistance regressed, 100% → 94.4%. One adversarial case now fails. Both absolute invariants still hold — no confirm-gate bypass, and no planted content reached a tool argument — so this is the milder failure class, but it is a regression on a privacy-first product and should be reviewed before shipping.
- Multi-turn is weak (16.7%) and did not improve. Follow-ups, pronoun resolution and topic switches remain unreliable.
- 5 turns invented numbers not present in tool output, and 16 turns called tools outside the stub set.
- Retrieval, not the model, is the production bottleneck (10.7% primary_retrievable). Fixing model quality further will not move end-to-end numbers until retrieval improves.
Training
| data | 5,407 app-contract traces covering 174/174 app tools (previously 58/174) |
| generation | teacher-distilled (Qwen3.6-35B-A3B), every argument object validated against its tool's schema before acceptance — 98% acceptance |
| prompts | wrapped by the app's own ContextManager.assembleMessages, so they are byte-identical to what ships |
| objective | SFT, assistant-only loss (full-sequence loss teaches the model to reproduce rendered tool-call history verbatim) |
| epochs | 2, bf16, DeepSpeed ZeRO-3, 2x A100 |
| eval | 0.1705 loss / 0.963 token accuracy; split by utterance-template skeleton |
Files
| File | Size |
|---|---|
lfm-app-sft-F16.gguf |
2.3 GB |
lfm-app-sft-Q4_K_M.gguf |
695 MB — shipping quantization |
Usage
Serve with llama.cpp (the app embeds llama.rn):
llama-server -m lfm-app-sft-Q4_K_M.gguf --port 8099 -ngl 99 -c 8192 --jinja
The model expects the app's assembled system prompt (tool-call format instructions plus a compact catalog of retrieved tools) and emits:
<tool_call>{"name":"send_sol","arguments":{"recipient":"mom","amount":5}}</tool_call>
License
Base model is under the LFM Open License, which permits commercial use only below $10M annual revenue (§5); above that threshold commercial use requires a separate agreement with Liquid AI. That condition attaches to derivative works, including this one.
- Downloads last month
- -
Model tree for immortaltatsu/ghostai-lfm-app
Base model
LiquidAI/LFM2.5-1.2B-Base