Skip to main content

Liquid Harness – customize Liquid AI foundation models into task-specific models.

Project description

Liquid Harness — watch the demo

lqh — Liquid Harness

From zero to a fine-tuned model in under an hour.

Liquid Harness is a terminal agent that turns a plain-English description of your task into a small, fast, task-specific Liquid Foundation Model. You describe the problem; the agent interviews you, writes the specification, generates and curates training data, fine-tunes, evaluates, and iterates until the model beats baseline. No ML experience required.

[!IMPORTANT] ⚠️ Closed beta — visit lqh.ai to request access.

pip install lqh
lqh

🤔 Why would I want this?

Large general-purpose models are expensive, slow, and overkill for most production tasks. A 350M–1.2B model fine-tuned on your task is cheaper, faster, runs on-device, and often more accurate — but getting there normally requires an ML team: data pipelines, judges, training loops, eval harnesses.

Liquid Harness collapses all of that into a conversation:

  1. 💬 Describe your task — the agent asks clarifying questions and writes a spec.
  2. ☕ Let it work — it generates synthetic data, scores every sample against a rubric, filters, runs baselines, fine-tunes, and evaluates.
  3. 📦 Get a checkpoint — a model that measurably beats the baseline on your task, ready to deploy.

💡 What can you build?

A few things people fine-tune with lqh:

Use case You tell the agent…
🎧 Support-reply rewriter "Rewrite draft replies into our brand voice: warm, concise, never over-promising."
🧾 Structured extraction "Turn free-form purchase emails into strict JSON with vendor, amount, and date."
🚦 Classifier / router "Label incoming tickets as billing, bug, or feature request — with high recall on billing."
🖼️ Vision Q&A "Here's a folder of product photos — I need a model that answers questions about defects."
📱 On-device assistant "A tiny model that summarizes meeting notes offline on a phone."

Point it at a folder of raw, unlabelled images and it can build a vision fine-tune too — the data pipeline synthesizes the question-answer pairs for you.

🚀 Quickstart

pip install lqh
mkdir my-task && cd my-task
lqh

Inside the TUI:

> /login          # authenticate with lqh.ai (one-time)
> I want a model that rewrites support replies into our brand voice.

That's it. The agent takes it from there — it interviews you about requirements, writes SPEC.md, and offers to run the pipeline stage by stage. You can interject, inspect data samples, or change direction at any point.

[!TIP] Run /hf_login (or set HF_TOKEN) to enable private HuggingFace dataset access and publishing.

🔁 The pipeline

One command runs all nine stages. Each is a real artifact you can inspect, stop at, or hand off.

spec → rubric → data gen → filter → baseline → SFT → DPO → eval → checkpoint
$ lqh --auto ./my-task
[stage: rubric]            writing scorer from spec
[stage: data_gen_draft]    5 samples generated, all valid
[stage: filter_validation] 1,427 / 2,000 kept
[stage: sft_initial]       score 6.8/10  (baseline 4.1)
[stage: dpo]               iter 3/5, score 7.4/10
[final: success]           DPO checkpoint beats baseline by +3.3

✨ Features

💬 Fully agentic

You chat, the agent works. It captures requirements through dialogue, manages the specs, and drives every downstream stage end-to-end.

📝 Specify in plain English

No DSL, no boilerplate, no ML jargon. Just describe what you want — the agent turns it into structured specs you can refine over time.

🧪 Synthetic data, scored & filtered

The agent authors a per-task data generation pipeline, generates samples concurrently on LQH Cloud, and scores each one with an LLM judge against your rubric. The dataset that hits training is already curated.

🖼️ Vision fine-tuning

Bring a folder of raw images — no labels needed. The agent synthesizes an image-question-answer dataset and fine-tunes the LFM2.5-VL vision models on it.

🏋️ Train anywhere

Eval and data generation run on LQH Cloud. Training runs locally on your own GPUs, or hands off to a remote machine over SSH — including SLURM clusters — with dataset sync handled for you.

🤖 Hands-off --auto mode

Point lqh at a directory with a spec and walk away. It either delivers a checkpoint that beats baseline or returns an explicit failure with the reason — never a hang, never a prompt.

🤗 HuggingFace integration

Push and pull datasets from the Hub, publish checkpoints, and convert to GGUF for deployment.

🖥️ Interactive TUI

Guide the agent, visualize progress, and inspect dataset samples — all from one terminal session with a slash-command palette and a live status bar.

📦 Project-as-directory

Any directory is a project — fully git-compatible, so you can version, branch, and collaborate on specs, datasets, and runs like any other code. cd to switch projects.

🧬 Models

Fine-tunes the LFM2.5 family — pick a size for your task, from tiny on-device to MoE:

Size Best for
230M / 350M Very simple tasks, extreme on-device constraints
1.2B Recommended starting point for most tasks
2.6B / 8B-A1B (MoE) More complex tasks
24B-A2B Only when the task clearly calls for it
LFM2.5-VL 450M / 1.6B Vision (image + text) tasks

Base, instruct, and thinking variants are available; the agent recommends the right starting size and variant for your task and steps up if fine-tuning struggles.

⌨️ Slash commands

Command What it does
/login Log in to lqh.ai
/hf_login Store a HuggingFace token for cloud jobs
/spec Start specification capture
/datagen Start data generation
/validate Start data validation
/train Start training (requires torch)
/eval Start evaluation
/prompt Start prompt optimization
/resume Resume a previous conversation
/clear Start a fresh conversation
/reconnect Retry a failed network/API operation
/help · /quit Show commands · exit

🤖 Auto mode

For CI, batch jobs, or when you just want a result:

lqh --auto ./my-task                # runs the full pipeline against ./my-task/SPEC.md
lqh --spec "use the smallest base model"   # sticky run-time directive (works in both modes)

Auto mode requires an existing SPEC.md (write one interactively first, or by hand). It runs rubric → data gen → filter → baseline → SFT → DPO → report without ever prompting, and always terminates with an explicit success or failure.

📁 Your project is just a directory

cd into any directory and run lqh — the agent reads what's there to understand current state. No init command, no project marker file.

my-task/
├── SPEC.md              # the heart of the project: what you want the model to do
├── other_specs/         # additional specs for edge cases or sub-requirements
├── data_gen/            # generated pipeline scripts
├── evals/               # eval definitions and results, versioned (v1/, v2/, ...)
├── datasets/            # generated and curated datasets as parquet (v1/, v2/, ...)
├── runs/                # training runs with checkpoints, logs, and configs
└── .lqh/                # conversation logs and permissions (add to .gitignore)

Everything is plain files — specs are markdown, pipelines are Python, datasets are parquet. Edit SPEC.md directly any time; the agent picks up your changes on the next turn.

🔧 Requirements

  • Python 3.11+
  • A Liquid Harness account (request access)
  • Optional: torch + transformers for local fine-tuning
  • Optional: HF_TOKEN for HuggingFace dataset sync

🗺️ Roadmap

Things we're actively building. Open an issue if you want to weigh in.

  • Quantized evals — run local evaluation on the quantized artifact (llama.cpp) so we measure exactly what ships. GGUF export already works; the eval loop on top is in progress.
  • Quantization-aware training (QAT) — train against quantization noise so the deployed quantized model matches the full-precision score.
  • Sub-agent spawning — parallel sub-agents for independent subtasks (drafting multiple data pipelines, running evals concurrently).
  • Hosted training API — train on LQH Cloud without bringing your own GPUs.

🤝 Contributing

Please read CONTRIBUTING.md before opening a pull request. Random PRs will be rejected — open an issue first and agree on the approach with a maintainer; security hot fixes are the one exception. See the contribution policy for details.


Made with care by Liquid AI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lqh-0.4.10.tar.gz (336.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lqh-0.4.10-py3-none-any.whl (381.6 kB view details)

Uploaded Python 3

File details

Details for the file lqh-0.4.10.tar.gz.

File metadata

  • Download URL: lqh-0.4.10.tar.gz
  • Upload date:
  • Size: 336.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lqh-0.4.10.tar.gz
Algorithm Hash digest
SHA256 ef62ccc378450961354a556bd1f625e5ba00c8918790a6e7b5ec5c1940f8e3f8
MD5 f5bd58613fe6f5bbfed80a5b5fcd8488
BLAKE2b-256 9ecc9daa8369b231bf19733051cf0f6806f1d598572fff4b200abf534660cca7

See more details on using hashes here.

File details

Details for the file lqh-0.4.10-py3-none-any.whl.

File metadata

  • Download URL: lqh-0.4.10-py3-none-any.whl
  • Upload date:
  • Size: 381.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lqh-0.4.10-py3-none-any.whl
Algorithm Hash digest
SHA256 7ddbc8494cef676fdd97e9f6b9942cef01dfac5475ac14a4a42a8083b7212ee6
MD5 3d62ad4f830d2b1e1e20ebf49527d2f7
BLAKE2b-256 382660051afbc4d7a12841312d7d9f88a02a84e3c3939eae914a64f999e7bffc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page