Ekbasis is a consequence model. Send the state and the action; get a calibrated probability for what happens — lost work, a failed payment, a leaked file — in one call.
$0.30 per 1M input tokens · no output charge · pay in USDC or USDT · sign in with GitHub, Google or email
State you send
Working tree: app.py, utils.py and README.md have uncommitted changes (2 hours of edits, never committed or stashed).
About to: git reset --hard
Question
Will uncommitted work be lost?
Ekbasis answers
One forward pass · 135 input tokens ≈ $0.000005 · 0.19 s on the server
Real responses of Ekbasis-27B on the hosted API, recorded on 10 Oct 2026. Nothing is generated: the answer is read from the model in one pass.
Measured, pre-registered, failures published too
Studies run by us and one third-party benchmark: every plan was hashed before the runs, and the hypotheses that failed are published next to the ones that held. Read them before you rely on the numbers.
6/24 → 1/24
tasks where Claude Sonnet did harm on real apps (Gitea, Nextcloud, Roundcube): 25.0% → 4.2%
secondary contrast, one run per task; for Claude Haiku the pre-registered hypotheses failed
Read the paper, failures included →
24/36 → 2/36
harmful runs by Claude Haiku operating a real Kubernetes cluster: 66.7% → 5.6%
asking the human every time also reached 0%, with 3× the questions; matching a Sonnet guard failed by one case
Read the study, failures included →
~50% → 0–6%
harmful runs by an open agent (GLM-5.3-Flash) in each of 3 runs of the same 47 tasks on our demo apps: 23, 24, 26 → 3, 0, 0 — two runs through this API
the same tasks and agent each time; apps built for the study, consequences hidden from the agent
Read the study, failures included →
97.5 F1
on AgentDojo prompt injections in TS-Bench, a third-party benchmark (GPT-4o published: 56.6); rewriting the injections changed none of 301 decisions
weak on its AgentHarm and ASB subsets (F1 54.6 and 64.3); our untested reading: those labels follow the request or the tool, not the step
Read the benchmark, failures included →
Not a chatbot and not a judge. A forecaster: it tells you what will happen, and your code — or a person — decides what to do about it.
The facts the action touches: files, balances, branches, recipients, rules. End with “About to: …”. The CLI writes it for you for git.
Choice among outcomes you list, yes/no with criteria, or a count. Several questions about one state go in one request.
Each option gets a probability. High risk: stop and ask the human. Low confidence: a fact is missing — go read it. Can’t foresee: treat it as risky.
Same key, same endpoint. Start with the guard in a minute; go to the API when the action is not a command.
One command. The CLI reads your repository and writes the state for you.
pip install ekbasis
export EKBASIS_URL=https://openinterp.org/api/v1
export EKBASIS_API_KEY=ekb_...
ekbasis git-check -- "git reset --hard"
# Ekbasis: RISKY (lose uncommitted work: 99%) → exit 2Before every Bash command, the hook asks you only when something could be lost.
// ~/.claude/settings.json
{"hooks": {"PreToolUse": [{"matcher": "Bash",
"hooks": [{"type": "command",
"command": "ekbasis-claude-hook", "timeout": 30}]}]}}check_git_commands, predict_consequences and preflight_command for any MCP client.
claude mcp add --scope user ekbasis \
-e EKBASIS_URL=https://openinterp.org/api/v1 \
-e EKBASIS_API_KEY=ekb_... -- ekbasis-mcpOn every pull request: will its PostgreSQL migrations fail or lose data? One comment, before the merge. How it works and what we measured →
- uses: OpenInterpretability/ekbasis/actions/[email protected]
with:
api-key: ${{ secrets.EKBASIS_API_KEY }}
# Risky: …/05_add_visit_id — may fail on existing data (96%);
# nothing in the file would be appliedAny action, any language: describe the state, ask typed questions.
curl https://openinterp.org/api/v1/v1/systemone \
-H "Authorization: Bearer $EKBASIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"state": "Balance: $1,020.00. About to: wire $1,000 + $25 fee.",
"questions": {"q": {"type": "choice",
"instructions": "What happens with the wire?",
"options": ["succeeds", "fails: exceeds the balance"]}}}'Building an agent? Point it at openinterp.org/ekbasis/agents.md — the same guide written for language models.
reset, checkout, clean, branch -D, stash drop, force-push over commits the remote holds
rm and redirects over data without a backup, unset variables in paths, symlinks
DELETE or UPDATE without a narrow WHERE, DROP, migrations on real data
transfers and fees, refunds in flight, cancellations that take the return flight too
reply-all with an external recipient, links that expose more than the folder you meant
the wrong kubectl context, compose down -v on a volume with data, overwrites on S3
Measured in 21 domains — 168 of 168 scored scenarios right, written by us with the deciding facts in the state: every result · every example with its real answer: the guide.
Pricing
$0.30 per 1M input tokens
No output charge: the model only reads. A check is about 1,500 tokens, so roughly $0.45 per 1,000 checks.
Start in three steps
Apache-2.0. Run it on your own GPU or Mac and nothing leaves your machine.
Plans hashed before the runs. The studies that missed their bars are published next to the ones that held.
No key, no credits, no answer in time: “cannot foresee”, which every tool treats as risky.
The API logs metadata to bill and operate (time, account, tokens, latency) — never your states or questions.
A warning layer that can be wrong, not a security boundary. It is strongest where the state states the facts and weakest on domains far from its training — read the limits.