aici@0.1
v0.1.9 - open source - MIT

Small enough to audit. Strict enough to block a merge.

Aici is a local-first CLI and GitHub Action for prompt, JSON, tool-call, latency, and cost contracts in pull requests. No telemetry. No Aici backend. Live checks call only the provider endpoint your config declares.

npx @mgicloud/aici init --config aici.yml
ok10-minute setup okruns in your repo okauditable endpoints
PR #142 main prompt/refund-tone aici - 4 checks
refund-policy-json
JSON schema valid - contains "approved"
428ms - $0.0011
order-lookup-tool-call
expected tool lookup_order, model returned plain text
612ms - $0.0019
support-classifier-contains
all 6 fixtures returned a known label
2.1s - $0.0042
cost-budget
run cost $0.087 exceeded maxCostUsd: 0.05
budget guard
2 failed - merge blocked posted by aici-bot - 4s ago
how it works

One YAML file. One failing check. One blocked merge.

Aici turns AI behavior into ordinary CI evidence. Try a change below to see the same workflow you would run in .github/workflows/aici.yml, but live on this page.

edit: aici.yml no changes

            
run: aici run exit 0

          
product proof

The failure state is the product.

The launch page carries concrete product states: local CLI failure, pull-request failure, and the HTML report artifact a developer gets after a run.

Animated Aici demo cycling through a local CLI failure, GitHub Action failure, and HTML report artifact
Aici CLI failing locally with a JSON Schema error

CLI fails locally

A real failing fixture run exits non-zero and shows the exact check that broke.

GitHub pull request checks showing Aici failing and blocking merge

PR gets blocked

The GitHub Action turns prompt regressions into normal pull-request evidence.

Aici HTML report artifact with a failed JSON Schema check

Report artifact

The same run writes Markdown, JSON, and HTML reports for review and CI artifacts.

why fixtures first

Start deterministic. Add live checks only where they matter.

Fixture tests catch contract regressions without provider spend, latency, or model flakiness. Live calls are best reserved for the few prompts where real model behavior is the thing under test.

Good first gates fixture

  • +Structured output must keep a stable JSON shape.
  • +An agent must call a specific tool with valid arguments.
  • +A saved bad output should fail every time in CI.
  • +Reviewers need a small artifact they can inspect in the PR.
  • +The check should work without provider keys on forked PRs.

Use live checks for provider

  • -Smoke-testing a critical prompt against the real model.
  • -Checking latency and known token cost budgets.
  • -Verifying provider-specific tool-call serialization.
  • -Running a trusted branch or maintainer-approved workflow.
  • -Auditing exactly which provider endpoint receives the request.
trust boundary

No hidden service in the middle.

Aici sits next to your test runner, not between you and your model. It can print the provider endpoints, dependencies, and source surface it relies on before live checks run.

01 / code

Open source. MIT.

The CLI, GitHub Action, YAML schema, examples, and templates are in one repo you can inspect and fork.

02 / data

No telemetry.

Aici does not send usage analytics or eval data to an Aici service. Fixture tests make no provider calls.

03 / network

No remote backend.

Live checks call OpenAI, Anthropic, or your OpenAI-compatible endpoint directly. Production traffic does not pass through Aici.

04 / price

Free is the real product.

The CLI and Action are free. Hosted history may become paid later, but the release gate is not a fake free tier.

05 / sales

No book-a-demo wall.

There is a README, npm package, GitHub Action, examples, and docs. You can evaluate it without a call.

06 / scope

One job.

Prove AI outputs still match the contract before merge. Hosted tracing, annotation, and generation are deliberately out of v1.

07 / exit

Easy to leave.

Delete aici.yml and the workflow file. No data export or offboarding email.

08 / model

Audit command.

aici audit --json lists endpoints and dependencies. Fixture gates can run in Docker with --network none.

packaging

Free core. Paid help when the gate has to work this week.

You can ship Aici in production CI without paying. The first paid offers should be setup, fixture design, CI hardening, and private trust packs, not a dashboard chasing a crowded category.

Open source
EUR 0/ forever
  • CLI and GitHub Action
  • JSON Schema, text, regex, tool-call, cost, and latency checks
  • Markdown, JSON, and HTML reports
  • Template packs for support, extraction, and agents
  • OpenAI, Anthropic, and OpenAI-compatible providers
View GitHub
Trust Pack
private/ demand-gated
  • Private fixture templates
  • Provider policy presets
  • Tool-calling contract examples
  • Strict CI recipes for sensitive repos
  • Hosted history only if users pull it forward
Give feedback
try it now

Add a release gate to your LLM in the time it takes to read this page.

Initialize a config, commit the workflow, push a branch. The next time someone changes the prompt, the PR tells them what broke before users do.

npx @mgicloud/aici init --config aici.yml && npx @mgicloud/aici run --config aici.yml
okexits non-zero on regression okwrites Markdown report okworks offline with mock fixtures