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.
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".
export ULI_HUB=https://HUB-ADDRESS
export ULI_API_KEY=YOUR-TESTER-KEY
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.
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.
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
uli chat qwen3.5-9b:my-first-model
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.
unauthorized | Check ULI_API_KEY. If it still fails, your key may have been replaced; ask for a new one. |
job_not_found | Check the name with uli status. You only see your own jobs. |
no_node_for_model | The training Mac is offline. Wait a few minutes, then tell us. |
name_taken | Pick another name. Names are unique across the hub. |
Anything else, reply to your welcome email. Every problem gets fixed.