Lile

From The Hei Canon

lile is the fleet's LiveLearn local LLM daemon — a single-process FastAPI service that shares weights between inference and training, so feedback lands on the next inference request under a typed contract (not best-effort).

Lives in the agi repo. Extracted from the previous home in ht-unsloth.

Stack: Python + PyTorch + Unsloth. Private repo.

One mutable model. Always serving. Always trainable. Any objective, any time, via API.

Where to look

Goal File
Get the daemon running OPERATING.md
Understand what lile does + why lile/PLAN.md (north-star) + lile/DESIGN.md (one-pager)
See what's actually shipped lile/STATUS.md — every claim cited by a test
Learn the vocabulary lile/GLOSSARY.md
Migrate from a ht-unsloth checkout MIGRATION.md
Touch the daemon HTTP surface lile/README.md

Cross-repo dependency

lile consumes unsloth (the heiervang fork) as a pinned git dependency. The single load-bearing coupling is a runtime monkeypatch of unsloth.kernels.utils.matmul_lora in lile/state.py; LileMatmulRebindError guards against upstream signature drift.

The HTTP-side companion (Studio frontend + studio/backend/routes/lile.py proxy) lives in ht-unsloth and talks to the lile daemon over LILE_DAEMON_URL.

Quickstart

pip install -e .
python -m lile.console.launch    # default: Qwen3-8B on :8768

Chat + typed training + commit-token barrier:

# Train — returns commit_token N
curl -sS http://127.0.0.1:8768/v1/train \
  -H 'content-type: application/json' \
  -d '{"objective":"sft","samples":[{"prompt":"2+2?","response":"4."}]}' | jq

# Next chat that MUST see batch N
curl -sS http://127.0.0.1:8768/v1/chat/completions \
  -H 'content-type: application/json' \
  -d '{"messages":[{"role":"user","content":"2+2?"}],"after_commit_token":N}' | jq

Sources

  • README
  • lile/PLAN.md, lile/DESIGN.md, lile/STATUS.md.

See also