
Aica
STDIOAI-powered code analyzer with review, agent, and MCP server capabilities
AI-powered code analyzer with review, agent, and MCP server capabilities
There are already excellent code review tools such as pr-agent and cursor. However, pr-agent relies on code hosting services like GitHub, which limits its usability, and cursor is not open source, meaning it cannot be fully customized or integrated with other tools.
So, I decided to create a new tool with the following characteristics:
bun build --compile
Build and install a binary:
# Install bun before build aica. # # Official Install Document: # https://bun.sh/docs/installation#installing git clone https://github.com/dotneet/aica.git cd aica bun install bun run build cp ./dist/aica path-to-your-bin-directory
Setup GitHub Token:
# if GITHUB_TOKEN is not set, aica try to get token from `gh auth token`. export GITHUB_TOKEN=your_github_token
Setup LLM:
# You can set the following items in your environment variables or aica.toml file. # Configure at least one of the following providers: # Anthropic (If you use agent, strongly recommend to use claude sonnet model) export AICA_LLM_PROVIDER=anthropic export ANTHROPIC_API_KEY=your_api_key export ANTHROPIC_MODEL=claude-3-5-sonnet-20241022 # OpenAI export AICA_LLM_PROVIDER=openai export OPENAI_API_KEY=your_api_key export OPENAI_MODEL=o3-mini # Gemini export AICA_LLM_PROVIDER=google export GOOGLE_API_KEY=your_api_key export GOOGLE_MODEL=gemini-2.0-flash
You can customize the configuration by creating a aica.toml
file.
See aica.example.toml.
aica.toml must be placed in one of the following directories.
You can specify the language for AI output. The language can be specified either through AICA_LANGUAGE or in the language section of aica.toml. By default, the language is automatically detected from the LANG environment variable.
export AICA_LANGUAGE=Japanese
Priority:
AICA_LANGUAGE
language.language
in aica.tomlLANG
# review the diff from HEAD aica review [options] [pattern] # review specific files aica review src/main.ts # review the files matching the specific glob pattern aica review "src/**/*.ts"
Options:
--dir
: Target directory path--slack
: Send notification to Slack# execute AI agent with a prompt aica agent "your prompt here" # execute AI agent with a instruction file aica agent -f instruction.txt # conversation mode. You can interact with AI agent by typing your prompt. aica agent
This command executes a task using an AI agent. The agent automatically determines and executes the necessary actions based on the given prompt.
Recommend to use anthropic claude 3.5 sonnet for agent.
NOTE: This command has potential to break your file system. Please be careful.
# start a MCP server aica mcp server # start a MCP server with a config file aica mcp server --config aica.toml
# reindex the code and document databases aica reindex
# generate a summary of the diff from HEAD aica summary [options]
Options:
--dir
: Target directory pathThis command commits changes with an AI-generated commit message.
# commit all changes(including untracked and unstaged changes) with an AI-generated commit message aica commit [options] # commits all changes (including untracked and unstaged changes) with an AI-generated commit message aica commit --staged # commits only staged changes with an AI-generated commit message aica commit --push # commits all changes and pushes to remote repository
Options:
--staged
: commit only staged changes.--dryRun
: Show result without execution--push
: Push to remote repository after committingThis command creates a pull request on GitHub.
# Creates a pull request. If there are changes, they will be committed automatically. aica create-pr [options] # Creates a pull request with only staged changes aica create-pr --staged
Options:
--withSummary
: Generate summary of diff from HEAD (default: true)--body
: Pull request body--dryRun
: Show result without execution--staged
: Only include staged changes# generate a one-line commit message based on the diff from HEAD aica commit-message [options]
Options:
--dir
: Target directory path# show current configuration aica show-config [options]
Options:
--default
: Show default configurationaica --version
: Show version informationaica --help [command]
: Show help information for a specific command or general help.cursorrules and .clinerules are automatically added to the context. To customize the context, configure the [rules] section in aica.toml.
Additionally, .cursor/rules/*.mdc files are supported by default. This function can be disabled through the settings.
create a mcp.json file to define the MCP server.
example:
[ { "name": "example-server", "type": "stdio", "command": "node", "args": ["./server.js"] }, { "name": "example-server", "type": "sse", "url": "http://localhost:3001/sse" } ]
set setupFile
in aica.toml like below.
[mcp] setupFile = "mcp.json"
See wiki page for details.
You can interact with AI features by leaving comments with the following commands.
# edit the code with AI
/aica edit "your prompt here"
# update summary in the pull request body
/aica summary
# review the latest diff
/aica review