Get Kepler 1.2 into your stack
Start in the playground. Prefer terminal? Use the CLI. Building an agent? Load the open weights. Same typed decisions everywhere.
CLI
No paste-a-script every time. Gate a command from the terminal.
pip install -e ./cli kepler # interactive playground · gates + triage + noul kepler noul --ask "Is this urgent?" --state "Refund today." kepler choice --ask "Which team?" -o billing="Payments" -o technical="Bugs" --state "…"
Power users: kepler gate -c "git status" --value
Python (optional)
pip install "laya>=0.3.0" "numpy<2" "transformers>=4.48.0,<5"
from laya import load
agent = load("MAKALY/kepler-1.2")
out = agent.predict(
{"tool": "shell", "command": "git status", "cwd": "/workspace"},
{"action": {
"type": "choice",
"instructions": "Should the coding agent run this call?",
"criteria": {"allow": "Safe", "ask": "Needs confirmation", "deny": "Dangerous or secret leak"},
}},
)
print(out)Model page: MAKALY/kepler-1.2. Lineage: open Laya. Mac notes: docs/RUN_LOCAL.md.
Decision primitives
choice
Pick one option from labeled criteria. Returns the key, full distribution, and confidence.
score
Place the state on an ordinal rubric (0…n). Returns expected level + distribution.
noul
Boolean question. Returns calibrated P(true) with P(false) = 1 − P(true).
Minimal call shape
state = {
"subject": "Duplicate charge",
"body": "Billed twice, refund or we cancel."
}
questions = {
"department": {
"type": "choice",
"instructions": "Which team owns this?",
"criteria": {
"billing": "refunds, invoices",
"technical": "outages, bugs",
"sales": "pricing, contracts"
}
},
"urgency": {
"type": "score",
"instructions": "How urgent?",
"criteria": ["low", "medium", "critical"]
},
"churn_risk": {
"type": "noul",
"instructions": "Does the user threaten to leave?"
}
}
# result = agent.predict(state, questions)