Skip to main content
ACAI - Acceptance Criteria for AI

COMING VERY SOON

Acai.sh will be free and open-source. We are now accepting requests for early access & feedback.

What is it?

Acai.sh is a toolkit for Feature Requirements and Acceptance Criteria written in plain language. Acai syncs and surfaces your requirements via CLI, MCP, and a realtime operations dashboard. This unlocks a spec-driven development workflow that replaces messy GitHub and Linear tickets. You, your agent swarm, and your product manager can all share implementation progress, track acceptance coverage, track test coverage, validate changes, and more. It is open source. It is incrementally adoptable into any existing product (frontend, backend, CLI, SDK, API, microservice, monolith, etc.).

Very Quick Start

Prerequisites:
✅ You build and ship incrementally, feature-by-feature.
✅ You set a high bar for quality. You are focused on user happiness & outcomes.
Simple Example
# This is an example spec, following our FRD.yaml conventions
feature:
    name: Animated Terminal
    description: |
        A mock terminal animation for our docs site.
        It demonstrates how an AI agent uses the acai toolkit to work on a software project.
        🥚 In the example, it is self-referentially building itself, from this very same spec.
    slug: TERM

components:
    FRAME:
        name: Terminal frame and container
        description: UI container that looks like a terminal window on a Mac with a TUI instance running inside it
        requirements:
            1: Renders scrollable mock chat history
            1-1: Does not auto-scroll unless user is already at the bottom of scroll container
            2: Renders mock text input
            2-1: Does not accept actual user inputs (no typing, no buttons)

    STORY:
        name: Rough storyboard for the animation
        requirements:
            1: Animation starts with user typing "Continue working on the `animated-terminal` feature"
            2: Shows back-and-forth conversation with tool calls and status updates
            3: Concludes with user typing "Go ahead and mark all requirements as accepted."
            4: The animation stops after the final step and does not loop.

constraints:
    DEV:
        requirements:
            1: Must be a single, self-contained standalone react component (a single export, with no imports)
As shown above, acai gives each requirement an ID (ACID) that is unique, stable, and readable. ACIDs can be referenced anywhere, and are extracted from code by our CLI. Core Workflow:
1

Specify

Define your next feature by writing key requirements in FRD.yaml.
2

Sync

acai push syncs your spec to the datastore and tracker.
3

Implement

Your agents pull relevant ACIDs and reference them in code and in tests.

Key Features

Turn your spec into tickets

Write simple, plain language, easy-to-read requirements. Run acai push and they are synced to your dashboard and exposed via API/CLI/MCP.

Turn your tickets into assignments

Acai becomes your agent’s source of truth. They pull requirements to plan and inform the next PR.
acai list requirements block-user --json --status TODO

Monitor progress

Track progress from spec, to implementation, to agent review, to human acceptance: TODO -> ASSIGNED -> IMPLEMENTED -> ACCEPTED
Agent Code Reviewer
I've reviewed BLOCK.MENU.2.
I see no issues with the implementation.
Unit tests are satisfactory.
I am marking the requirement as "IMPLEMENTED"...
I am merging the changes to the feature branch...

See coverage

Have all requirements been implemented?
Do all implementations have tests?
Have humans accepted the implementation?
acai coverage block-user
100% implemented (100 of 100)
100% tested (100 of 100)
20% accepted (20 of 100) ⚠️

Grab context

See exactly where a requirement has been implemented or tested. The time savings & token savings add up quickly.
acai list references BLOCK.MENU.2 --json
[
  "features/block-user/FRD.yaml:15",
  "src/components/user_settings.tsx:107"
  "test/components/user_settings.test.ts:42"
]

Why acai?

LLM agents love Acai IDs. They make it easy to pull in context, find references, and trace the intent of an implementation or test.
Stop losing progress when agents go off the rails. Your spec is the source of truth, even as complexity grows and requirements evolve.
Quickly prototype, try throwaway implementations, and solidify the spec before touching production code. The result is less time prompting, and a better end result.
In the past, this level of specification rigour was painful for human teams. Today, for an LLM with access to Acai, it’s painless.

Next Steps