uli

Getting started

For testers in the private alpha. You will install uli, train a small model on your own labelled data, check that it beats the base model, and chat with it. It takes about ten minutes of your time, plus the training.

Not in the alpha yet? It is free, and sign-ups close on 20 November. Join the private alpha, and your key arrives by email when your place opens.

01What you need

02Install uli

This downloads uli, checks it against its published fingerprint, and installs it to ~/.local/bin.

curl -fsSL https://uli-web.vercel.app/dl/install.sh -o uli-install.sh
bash uli-install.sh https://uli-web.vercel.app/dl/uli-darwin-arm64 \
  b57b34e989d1231825b7711619a29a388e9e063f687ece3f2d09bd63d6efaf34

If your terminal cannot find uli afterwards, run export PATH="$HOME/.local/bin:$PATH".

03Connect to the hub

export ULI_HUB=https://HUB-ADDRESS
export ULI_API_KEY=YOUR-TESTER-KEY

04Prepare your data

One example per line, in chat format: an optional system message, the input as the user message, and the label as the assistant message. Keep labels short, because grading checks the first line of the answer against the label exactly.

{"messages":[{"role":"system","content":"Classify the support ticket."},{"role":"user","content":"My card has not arrived"},{"role":"assistant","content":"card_not_arriving"}]}

Keep a second file of held-out rows in the same format for grading, and never put a held-out row in the training file. Also write a labels.txt with every label, one per line.

05Train

uli submit train.jsonl --base qwen3.5-9b --name my-first-model
uli watch my-first-model

uli checks every row before uploading and lists any line that breaks the format. Training takes from minutes to hours, depending on the size of your data.

06Check it beats the base

Grade your model, then the base model given every label, on the same held-out rows.

uli eval qwen3.5-9b:my-first-model heldout.jsonl --record my-first-model
uli eval qwen3.5-9b heldout.jsonl --system-file labels.txt --record my-first-model

07Use it

uli chat qwen3.5-9b:my-first-model

08Or let an agent do it

Add the uli tools to Claude Code, then give the agent the uli skill by saving it as .claude/skills/uli/SKILL.md in your project. The agent can then check your data, train, grade and chat for you.

claude mcp add uli -e ULI_HUB=https://HUB-ADDRESS -e ULI_API_KEY=YOUR-TESTER-KEY -- uli mcp

Other agents that start a local MCP server from a command, such as Hermes Agent, take the same command and arguments.

09If something goes wrong

unauthorizedCheck ULI_API_KEY. If it still fails, your key may have been replaced; ask for a new one.
job_not_foundCheck the name with uli status. You only see your own jobs.
no_node_for_modelThe training Mac is offline. Wait a few minutes, then tell us.
name_takenPick another name. Names are unique across the hub.

Anything else, reply to your welcome email. Every problem gets fixed.

uli private alpha · Wisdom Okechukwu