LFM2.5-24B-A2B · Harbor · Hermes (LoRA)
A LoRA adapter for LiquidAI/LFM2.5-24B-A2B, trained with reinforcement learning to work as the model behind Hermes Agent on data-analysis tasks.
Each training rollout is a full Hermes session in a remote sandbox: the agent reads the task, runs shell and Python tools against the task's data files, and answers. A verifier then grades the answer. The adapter was trained on those grades with TRL's asynchronous GRPO trainer.
In short: this checkpoint solves tasks about as often as the base model, using 20% fewer tool calls.
Results
Evaluated with the Hermes harness on the first 100 tasks of FineEnvs/SmolDataEnvs-harbor-test, one attempt per task at temperature 0.8, paired against the base model on the same tasks.
| Base model | This adapter (step 80) | Change | |
|---|---|---|---|
| pass@1 | 0.73 | 0.72 | −1 point (95% interval ±7.6) |
| Tool calls, on tasks both solved | 4.97 | 3.97 | −20% |
Of the 100 tasks, the adapter solves 7 that the base model fails and fails 8 that the base model solves.
This adapter is the pink line (hermes) at step 80. The other lines are runs trained and evaluated with pi, Claude Code
and opencode, for comparison:
Reading the plot:
- Accuracy dropped early in training, by up to 13 points at steps 10 and 30, and recovered by step 80. Steps 80 to 100 are all within noise of the base model.
- Efficiency is what training changed. Tool calls on solved tasks stayed flat for the first 30 steps, then fell to −18% to −20% from step 60 on.
This card publishes step 80, the checkpoint closest to the base model on pass@1. Steps 90 and 100 are within noise of it. The checkpoint was chosen on the same 100 tasks it is scored on, so treat −1 point as a slightly optimistic estimate.
Pick this adapter if you want a cheaper, faster agent at about the same accuracy. If accuracy is all you care about, the base model is as good.
Use with Hermes
1. Serve the adapter with vLLM
vllm serve LiquidAI/LFM2.5-24B-A2B \
--enable-lora --max-lora-rank 32 \
--lora-modules lfm-harbor-hermes=harness-hub/LFM2.5-24B-A2B-hermes \
--enable-auto-tool-choice --tool-call-parser lfm2 --reasoning-parser qwen3 \
--max-model-len 131072
This is the configuration used in training and evaluation. --tool-call-parser lfm2 is required: Hermes's tool calls
are parsed from the model's output. Hermes needs at least 64,000 tokens of context.
2. Point Hermes at it
Install Hermes:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
Add the server to ~/.hermes/config.yaml:
model:
default: lfm-harbor-hermes
provider: custom
base_url: http://localhost:8000/v1
api_key: dummy
Or run hermes model, choose Custom endpoint, and enter the same URL and model name.
Run it:
hermes chat
hermes chat -q "Which region had the highest revenue growth in sales.csv?"
Use with llama.cpp
A GGUF version of this adapter is in harness-hub/LFM2.5-24B-A2B-hermes-GGUF. It runs on top of LiquidAI's base GGUF:
hf download LiquidAI/LFM2.5-24B-A2B-GGUF LFM2.5-24B-A2B-Q8_0.gguf --local-dir .
hf download harness-hub/LFM2.5-24B-A2B-hermes-GGUF LFM2.5-24B-A2B-harbor-hermes-lora-F16.gguf --local-dir .
llama serve -m LFM2.5-24B-A2B-Q8_0.gguf --lora LFM2.5-24B-A2B-harbor-hermes-lora-F16.gguf \
-c 65536 --port 8080 --alias lfm-harbor
Then use the Hermes configuration above with base_url: http://localhost:8080/v1 and default: lfm-harbor. The GGUF
version has not been re-evaluated.
Training
| Method | AsyncGRPO (TRL, experimental), LoRA |
| Environment | Harbor tasks served by OpenEnv, rollouts in HF sandboxes |
| Harness | Hermes Agent, its Responses API calls translated to chat completions for vLLM by OpenEnv's capture proxy |
| Tasks | first 1,000 tasks of FineEnvs/SmolDataEnvs-harbor-train |
| Reward | the task verifier's correctness (falls back to reward) |
| Steps | 80 (this checkpoint), of a 100-step run |
| Learning rate | 1e-5 |
| LoRA | r = 32, alpha = 64, all linear layers |
| Rollouts | 8 per task, temperature 0.8, up to 17 model calls and 600 s per rollout, 16,384 tokens per model call |
| Batch | 4 token-budgeted micro-batches per step, rollouts up to 4 policy versions stale |
| Hardware | 2× NVIDIA H200 on HF Jobs: vLLM on one, the trainer on the other |
The training script is
examples/async_grpo_harbor in TRL.
Limitations
- Small evaluation. 100 tasks put the 95% interval on a paired pass@1 difference at about ±8 points, so the accuracy differences here are not significant.
- One task family. Training and evaluation are both on SmolDataEnvs data-analysis tasks. Gains may not carry over to other kinds of work.
- One harness. The adapter was trained inside Hermes's prompts and tools. With another agent, expect it to behave like the base model, or worse.
- Different wire format outside training. In training, Hermes spoke the Responses API to OpenEnv's proxy, which forwarded chat completions to vLLM. Pointed directly at vLLM as above, Hermes uses chat completions itself. The model sees the same chat template either way, but small differences in how Hermes builds the request are possible.