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?

Open-source tools to assist with spec-driven software development.
1

Specify

Write requirements and acceptance criteria in feature.yaml spec files.
2

Push

Run acai push to extract the specs and push them to an Acai Server.
3

Delegate

Give your agents access to the server so they can implement, review, delegate, and share status updates.
This unlocks a spec-driven development workflow that replaces GitHub and Linear tickets. You, your agent swarm, and your product manager can stay in-sync while rapidly iterating on specs and their implementations.
Example dashboard showing status updates for implementation of a feature

Very Quick Start

Acai can be incrementally adopted into any existing project.
> You:
We should write a spec for `my-new-feature`.
  
> πŸ€–Agent:
You're absolutely right!  
I will draft a `feature.yaml` based on your notes.

>* acai init my-new-feature

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 surfaced to agents via API/CLI/MCP.

Empower agents

Acai becomes your agent’s source of truth. It empowers them to confidently self-assign, implement, review and fix work with minimal intervention.

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/feature.yaml:15",
  "src/components/user_settings.tsx:107"
  "test/components/user_settings.test.ts:42"
]

Review code more effectively

Stop reading massive git diffs. Instead, use the acai dashboard and jump straight to the functions, tests or comments that reference each requirement in your spec. Start by reviewing the requirements that matter most; auth, security, performance, and user happyiness.
Example dashboard showing details about a specific feature requirement.

Simple example

At the top of the page you can see a fun terminal animation we created as a demo of Acai in action. Below you can see the spec, code, and tests for that animation.
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.

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:
        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 (one export, no imports)
As shown above, acai gives each requirement an ID that is unique, stable, and readable. These IDs can be referenced anywhere (in tests, comments, and other specs), and are extracted from code with a single command.

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

Agents

Learn how to integrate Acai with your AI assistants.

Writing Specs

Learn the syntax and best practices for writing feature spec files.