Skip to main content
Aethis turns legislation, policy, and contract clauses into formal constraint logic. At decision time there is no language model: every call is a deterministic, sub-millisecond evaluation against pre-compiled rules, with a cryptographic input hash and a clause-level audit trail on every response. This page is built around three real, public rulesets you can hit right now without an API key.
api.aethis.ai serves engine 0.49.1, which is the contract these pages describe; every response carries engine_version so you can confirm which build answered you. What the deployed engine serves.

Two tiers, and which one you are in

Everything below the “Author your own rules” heading on this page belongs to the second tier. Full breakdown, including what a 401 or 403 is telling you: Capabilities and access.
One wrinkle inside the open tier: decisions on a leaf ruleset (e.g. aethis/uk-fsm/child-eligibility) and the schema/list endpoints need no key, but decisions on a composed rulebook (e.g. aethis/uk-fsm, binding A AND (B OR C)) always require an x-api-key header. See Nomenclature.

1. Decide — paste this curl

Response:
A production call against the UK Free School Meals child-eligibility section. inputs_hash is the canonical fingerprint of the input — same inputs, same hash, same decision, every time. content_digest fingerprints the rules, so a decision is replayable against exactly the published content that produced it.
That is the real response api.aethis.ai returned for this call on 2026-07-28. decision_id and decision_time are per-invocation, so yours will differ; ruleset_version and content_digest move whenever the ruleset is republished. Every key shown is served today.
Public preview. The decision API runs always-warm in europe-west1. The engine evaluates each decision in under 1ms; observed end-to-end round-trip from Europe is ~100–150ms hot, dominated by network and request handling. Multi-region warm pools and a published latency SLA ship with general availability.

Discover what’s available

Don’t know which rulesets exist? Enumerate them — every currently-live ruleset comes back with its slug, description, and rule count:
Then drill into any one of them with /schema to see its input contract before calling /decide:
Every public ruleset exposes its full input contract this way — list, then schema, then decide.

2. Explain — show your working

Add "include_trace": true and the response carries the full reasoning chain. Try the spacecraft demo ruleset with a single field — species: "Vogon":
Real response (trimmed for clarity):
The ruleset has 11 fields across 7 rule groups. The engine reasoned over all of them, found a constraint violation in the species check, and short-circuited — fields_provided: 1 because that’s all it needed. The failure_reasons list points at the exact compiled SMT condition that failed, which traces back to a specific clause in the source Spacecraft Crew Certification Act 2049. For natural-language reasoning, add "include_explanation": true instead of (or alongside) include_trace.

3. Guide — the shortest path to an answer

When the engine has enough fields to short-circuit, it does. When it doesn’t, it tells you exactly which question to ask next. Send a partial input:
Real response (trimmed):
next_question is the single field most likely to collapse the remaining decision space. optimal_path is the full ordered shortlist. This is not a fixed decision tree — the engine evaluates all eligibility paths simultaneously and picks the field that, given what’s been answered, branches the fewest remaining possibilities. Build a wizard, a chatbot, or an intake form on top of this without writing routing logic.

How it works

A language model reads your source material once, at authoring time, and proposes constraint logic. The engine refines that logic against subject-matter-expert-authored tests until every test passes — a ruleset cannot be published with a failing test. The compiled, versioned ruleset is then stored. At decision time the engine queries the compiled form — no model in the path, no temperature, no retrieval, no drift. The same inputs_hash always produces the same decision_id shape with the same outcome.
Determinism is repeatability; correctness comes from the test gate. Rules compile from your source documents, not your tests. Tests validate the output, and the platform refuses to publish a ruleset with a failing test.

Pick your interface

All four call the same engine. Decision tools on leaf rulesets work with no signup, no key.
Add --explain for the trace. Inspect a ruleset’s input fields with aethis fields -b <ruleset_id>. See CLI reference.

Author your own rules

Three steps: paste source text, write tests, iterate until they pass. The same authoring pipeline is exposed via MCP tools and the CLI.
1

Create a project, drop in source + tests

See examples/spacecraft-crew-rules/ in aethis-cli for a complete project layout you can copy.
2

Generate and test

Any failure points at the clause that was missed so you can refine the source text, the test, or the guidance — not the generated rules. Rules compile from the source, not from the tests.
3

Publish

Now anyone can call /decide with that ruleset_id. No model at decision time.
Rule authoring is invite-only private beta — approval required, and every call in this section needs an Aethis API key plus your own model-provider key. Decision tools work now with no signup. Request authoring access → · What each tier includes

When to use Aethis

Not a good fit for: recommendations, probabilistic scoring, or decisions where “close enough” is acceptable.

Choose your path

More live rulesets to curl

Spacecraft, construction insurance, consumer credit, the full UK Free School Meals rulebook (A AND (B OR C)). All currently active in production.

Single-section policy (invite-only)

One set of criteria, one decision. Go straight to Rule generation.

Multi-section legislation (invite-only)

Multiple entitlements or prerequisite gates. Start with Section discovery.

Worked example

UK Free School Meals end-to-end — 3 sections, 3 source documents, 23 test cases.