Skip to main content

Ulexite

Stop scripting prompts. Start writing conversations.

๐Ÿ’ฌ Conversation-first

History is automatic and structural โ€” every message, in order, content-addressed. You never hand-roll a reducer to thread state through calls.

๐Ÿงฉ Multimodal artifacts

text, image, pdf, audio, embedding, and more โ€” routing a video into a model that only accepts [text, image] is a compile error, not a runtime 400.

โš–๏ธ Built-in judges

judge returns a typed, exhaustively-matched Verdict โ€” Pass, Fail(reason), Score(value), Escalate โ€” not a hand-written grading prompt glued to string matching.

๐Ÿ” Traces & replay

Every run produces a complete, replayable trace โ€” resume a conversation from any point, with model calls memoized instead of re-invoked.

๐Ÿ‘€ What it looks like

A complete, runnable conversation: translate, have a judge check fluency, retry once on failure, escalate to a human if the judge can't decide.

translate.ulx
judge Fluency(subject: text) -> Verdict {
rubric: """Is this an accurate, fluent translation of the source?
Answer Pass, Fail(reason), or Escalate if you cannot tell."""
}

conversation Translate(source: text, target_lang: text) -> text {
system: """You are a professional translator."""
user: """Translate to {target_lang}: {source}"""
assistant -> draft: text

match judge Fluency(draft) {
Pass => draft
Fail(reason) => retry(2) {
user: """Rejected: {reason}. Try again."""
assistant -> draft
} else escalate(human_approval, reason: reason)
Escalate => escalate(human_approval, reason: "judge could not decide")
Score(_) => draft
}
}

Try it yourself in the live playground โ€” no install needed โ€” or see the full examples gallery for eleven more.

๐ŸŽฌ See it run

ulx run translate.ulx Translate --provider anthropic โ€” the judge can't decide, so it escalates to a human instead of guessing. It suspends, a reviewer runs ulx approve, and the same run resumes to completion.

bash
$ ulx run translate.ulx Translate --arg source=hello --arg target_lang=fr --provider anthropic
๐Ÿงญ system: You are a professional translator.
๐Ÿง‘ user: Translate to fr: hello
๐Ÿค– assistant: Bonjour
โš–๏ธ judge Fluency: Escalate
๐Ÿ™‹ escalate human_approval: judge could not decide (suspended)
suspended: waiting on `human_approval` โ€” judge could not decide
run id7f2c9a1e4b0d6f83
statussuspended
capabilitieschat, judge, escalate
provideranthropic โ€” chat (claude-haiku-4-5), judge (claude-sonnet-4-5)
resume with: ulx approve 7f2c9a1e4b0d6f83 --value <text> (or: ulx deny 7f2c9a1e4b0d6f83)
$ ulx approve 7f2c9a1e4b0d6f83 --value "Bonjour"
๐Ÿ™‹ escalate human_approval: judge could not decide => Bonjour
Bonjour
run id7f2c9a1e4b0d6f83
statusok
capabilitieschat, judge, escalate
provideranthropic โ€” chat (claude-haiku-4-5), judge (claude-sonnet-4-5)
$