aic AI-powered git commits
v0.5.6
auth.ts package.json
+12 −1
3-const session = getStoredSession()
4+const session = await refreshToken(stored)
6+export async function refreshToken(t: string) {
7+const res = await fetch({
8+url: '/api/refresh',
9+method: 'POST',
10+body: JSON.stringify({ t }),
11+})
12+return res.json()
13+}
15+if (session.expired) {
16+return redirect('/login?reason=expired')
17+}
package.json
19+"next": "^14.2.0"
feat auth
add token refresh endpoint
a4f2c81 1 file
fix ui
redirect on session expiry
b7e9d03 1 file
chore deps
bump next to 14.2.0
c3a1f57 package.json
$ aic commit --all
3 commits created in 4.2sview on GitHub →
scroll to decompose ↓

02 — How it works

install once → type aic → clean commit.

  1. 01
    install brew install aic
  2. 02
    setup provider · key · model — or your local agent
  3. 03
    run type: aic
  4. 04
    read reads the diff
  5. 05
    draft writes the message
  6. 06
    commit ships it ✓
aic
$ aic
⟢ agent starting
config .aic.yml
model gpt-4o-mini · fast
ready ✓ 0.8s
analyzing repository
⟢ analyzing 12 changed files
auth/refresh.ts token rotation
auth/verify.ts
Redirect.tsx session expiry fix
package.json dependency bump
lock.json
3 commit groups identified
━━ proposed plan ━━
1 feat(auth): refresh token rotation
2 fix(ui): redirect on session expiry
3 chore: bump dependencies
aic commit --all
✓ abc1234 chore: bump dependencies
✓ def5678 fix(ui): redirect on expiry
✓ ghi9012 feat(auth): refresh token rotation
12 files → 3 commits in 4.2s

03 — Auto-batching

below the file boundary

one file, many commits

Every other commit tool stops at the file boundary — one file, one message. aic reads your diff at the hunk level, so a single file touching three concerns becomes three focused, conventional commits. Nothing staged, one command, a history that actually reads back cleanly.

per-hunk batching ✦

shipped in v0.3.5

see aic among the best AI commit tools →

17 commit types · WCAG-safe colors

feat improvement fix perf hotfix revert docs deps style ci refactor chore build release security test wip

04 — Resolve

Resolve merge conflicts.

Mid-merge, run one command. aic reads every conflicted file, proposes a marker-free resolution, and shows you the combined diff before anything lands. Each file is a separate y/n — approve what you trust, reject the rest, and it finalizes the merge.

how aic resolves a conflict →

05 — Bring your agent

Bring your agent, not your key.

Already running Claude Code, Codex, Cursor, or Gemini? Point aic at your agent in headless mode — it passes the diff, your agent writes the message, aic ships the commit. No API key, no default model: it reuses your agent's own auth.

see the agent backend →

06 — Providers & privacy

your key · your model

Bring your own provider. aic talks straight to your LLM — no middleman, no per-commit markup, no proxy. Your API key never leaves your machine.

  • OpenAI
  • Anthropic
  • Gemini
  • DeepSeek
  • Groq
  • Ollama
  • xAI
  • Mistral
  • OpenRouter
  • Perplexity
  • Together
  • OpenAI-compatible
OpenAI
gpt-5-mini
Anthropic
claude-haiku-4-5
Gemini
gemini-2.5-flash
DeepSeek
deepseek-v4-flash
Groq
llama-3.3-70b-versatile
Ollama
llama3.3
xAI
grok-4.3
Mistral
mistral-small-latest
OpenRouter
(your model)
Perplexity
sonar
Together
meta-llama/Llama-3.3-70B-Instruct-Turbo
OpenAI-compatible
(your model)

no middleman · no per-commit markup · calls go straight from your machine

save profiles · switch with aic use

how aic compares

Curious how aic holds up against aicommits, OpenCommit, or the rest? Each comparison concedes where the rival wins and shows exactly where aic pulls ahead.

see the full field →

07 — Install

install aic in one line.

  • Free & MIT
  • No Node.js
  • 12 providers
  • Survives your pre-commit hooks
  • Key never leaves your machine
brew install CaicoLeung/aic/aic

Update with `brew upgrade aic`. Homebrew installs are detected automatically, so `aic update` will redirect you to brew.

then run aic setup to pick provider, key, and model.