AutoCode CLI > Local SQLite-based issue tracking system with automated AI code validation
A Claude Code wrapper that orchestrates AI-generated code through a customizable validation pipeline. Includes web dashboard, real-time Kanban board, and REST API. All data is stored locally in a single SQLite database file.

Live Demo | Interactive Kanban Demo
Screenshots
$3 !
AutoCode Landing Page
$3 !
AutoCode Dashboard
$3 !
AutoCode Issue Modal
$3 !
AutoCode Architecture
What is AutoCode? AutoCode is a Claude Code wrapper that automatically validates AI-generated code through a customizable pipeline. It combines:
- Issue Tracking : Local SQLite database with Prisma ORM for fast, reliable data management - AI Orchestration : Wraps Claude Code (claude -p) to process issues through validation stages - Automated Validation : Reviews for best practices, duplication, consistency, and security - Automated Testing : Integration with Playwright and Cypress for E2E testing
How it works: 1. Create an issue describing what you want to build 2. Claude Code implements the code 3. AutoCode automatically validates through the pipeline (reviews, tests, security) 4. Issue advances to Done when all validations pass
All data is stored in a local SQLite database (autocode/autocode.db) - zero configuration, portable, single file.
Key Features | Feature | Description | |---------|-------------| | Claude Code Wrapper | Orchestrates Claude AI to process issues through the pipeline | | Customizable Pipeline | Define your own validation columns (reviews, tests, deploys) | | Real-time Dashboard | Web Kanban board with WebSocket updates | | AI Pipeline Generator | Auto-detect your stack and propose relevant columns | | Local SQLite Database | Single file database with Prisma ORM - portable and fast | | REST API | Full API for integrations and automations | | Multi-language | Supports English and French | | Issue Hierarchy | Parent-child relationships between issues | | Speech-to-Text | Voice dictation for issue creation with autocomplete |
Speech-to-Text Feature The dashboard includes voice dictation for quick issue creation:
$3 1. Click the microphone button next to the title field on the New Issue page 2. Speak your issue title - the text is transcribed in real-time 3. Autocomplete triggers - after you stop speaking, a 3-second countdown starts 4. AI fills the form - Claude suggests description, priority, labels, and acceptance criteria
$3 | Browser | Support | |---------|---------| | Chrome | Full support | | Edge | Full support | | Safari | Full support (webkit) | | Firefox | Not supported (button disabled) |
$3 - French (fr-FR) - Select "FR" in the language switcher - English (en-US) - Select "EN" in the language switcher
$3 On unsupported browsers, the microphone button is automatically disabled with a tooltip explaining the limitation. A notification appears if the user attempts to click it.
Installation ``bash npm install -g @autocode-cli/autocode`
Quick Start `bashInitialize project structure autocode init
Create a new issue (with all options) autocode new "Implement user authentication" "OAuth2 login with Google and GitHub" --priority P1 --labels "feature,auth" --acceptance "Login button visible,OAuth flow works,Token stored" --semver minor --column backlog
List all issues autocode list
Show issue details autocode show AC-000001
Move issue to next column autocode next AC-000001
Start web dashboard autocode serve
`
CLI Reference
$3 | Command | Description | |---------|-------------| |
serve
| Start web dashboard (default command) | | init
| Initialize autocode project structure | | new
[description] | Create a new issue | | list | List all issues | | show | Show issue details | | history | Show full issue history with prompts and terminal output | | move | Move issue to specific column | | next | Advance issue to next column | | comment | Add comment to issue | | parent [parent-key] | Manage parent relationships | | health | Check workflow health (stuck issues) | | stats | Show Claude usage statistics | | catalog | List available columns in catalog | | pipeline | Manage pipelines | | help | Show help message |
$3 | Command | Description | |---------|-------------| |
pipeline list | List all pipelines | | pipeline show | Show pipeline with columns | | pipeline create | Create new pipeline | | pipeline delete | Delete pipeline version | | pipeline activate | Activate pipeline version | | pipeline versions | List all versions | | pipeline draft | Create draft from latest | | pipeline finalize | Finalize draft | | pipeline add-column | Add column to pipeline | | pipeline remove-column | Remove column from pipeline | | pipeline move-column | Move column between segments |
$3 | Command | Description | |---------|-------------| |
catalog | List available columns | | catalog add | Add new column to catalog |
CLI Options
$3 | Option | Description | |--------|-------------| | -p, --port | Server port (default: 3000) | | -e, --expose | Expose via Cloudflare tunnel |
$3 | Option | Description | |--------|-------------| | -p, --priority | Set priority (default: P2) | | -l, --labels | Comma-separated labels | | -a, --acceptance | Comma-separated acceptance criteria | | -s, --semver | Semver type (major\|minor\|patch) | | -c, --column | Target column (default: backlog) | | --parent | Parent issue key | | --autocomplete | AI-generate fields via API | | --lang | Language for autocomplete |
$3 | Option | Description | |--------|-------------| | -c, --column | Filter by column | | -p, --priority | Filter by priority | | -l, --label | Filter by label | | --parent | Filter by parent | | --tree | Display as tree | | --json | Output as JSON |
$3 | Option | Description | |--------|-------------| | --json | Output as JSON |
$3 | Option | Description | |--------|-------------| | --json | Output as JSON (includes all data) | | --full | Show complete prompt and terminal content | | --limit | Show only last N entries |
$3 | Option | Description | |--------|-------------| | -f, --force | Force move (skip validation) |
$3 | Option | Description | |--------|-------------| | --json | Output as JSON | | -v, --verbose | Show detailed information |
$3 | Option | Description | |--------|-------------| | --json | Output as JSON | | --session | Show only session stats | | --totals | Show only total stats |
$3 | Option | Description | |--------|-------------| | --version | Specific version | | --json | Output as JSON | | --description "..." | Pipeline description | | --segment | Segment (definition\|action\|finish) | | --position | Position in segment | | --name "Display Name" | Column display name | | --activate | Activate after finalizing |
$3 | Option | Description | |--------|-------------| | --segment | Segment (definition\|action\|finish) | | --name "..." | Display name | | --description "..." | Column description |
CLI Examples
`bashStart server autocode # Default port 3000 autocode serve -p 8080 # Custom port autocode serve --expose # With Cloudflare tunnel
Issues autocode show AC-000001 # Show issue details autocode show AC-000001 --json # JSON output autocode history AC-000001 # Show full history autocode history AC-000001 --full # With complete logs autocode list # List all issues autocode list -c in-progress # Filter by column autocode list --tree # Show hierarchy autocode list --json # JSON output autocode new "Fix bug" -p P1 -l bug # Create issue autocode new "Feature" "Desc" -a "Works" # With acceptance criteria autocode next AC-000001 # Advance to next column autocode move AC-000001 done # Move to specific column autocode move AC-000001 backlog --force # Force move autocode comment AC-000001 "Done" # Add comment autocode parent AC-000001 # Show parent/children autocode parent AC-000001 AC-000002 # Set parent autocode parent AC-000001 none # Remove parent
Workflow autocode health # Check for stuck issues autocode health --verbose # Detailed info autocode stats # Show usage stats autocode stats --session # Session only
Pipelines autocode pipeline list # List all pipelines autocode pipeline show default # Show pipeline details autocode pipeline show default --json # JSON output autocode pipeline create my-pipeline # Create new pipeline autocode pipeline draft default # Create draft autocode pipeline add-column default review --segment action autocode pipeline remove-column default review autocode pipeline move-column default review --segment finish autocode pipeline finalize default # Lock draft autocode pipeline finalize default --activate # Lock and activate autocode pipeline activate default # Activate latest autocode pipeline activate default --version 2 # Activate specific autocode pipeline versions default # List versions autocode pipeline delete default # Delete draft
Catalog autocode catalog # List columns autocode catalog --json # JSON output autocode catalog add review-perf --segment action --name "Performance Review"
`
Versioned Pipelines AutoCode uses versioned and immutable pipelines . Pipelines are organized into three segments:
| Segment | Purpose | |---------|---------| | definition | Define what needs to be done (backlog, ready) | | action | Execute the work (in-progress, reviews, tests) | | finish | Validate and complete (done) |
$3
`bashList all pipelines autocode pipeline list
Show pipeline details autocode pipeline show default
Create a draft from latest version autocode pipeline draft default
Add a column to the draft autocode pipeline add-column default review-security --segment action
Finalize and activate autocode pipeline finalize default --activate`
$3 Available columns can be listed with
autocode catalog. Add custom columns to the catalog for reuse across pipelines.
Project Structure
` autocode/ ├── autocode.db # SQLite database (issues, history, pipelines, prompts) └── attachments/ # Uploaded files (images, documents) └── AC-000001/ # Attachments organized by issue keytemplates/ ├── catalog.yaml # Column catalog definition ├── analysis-prompt.en.md # Analysis prompt (English) ├── analysis-prompt.fr.md # Analysis prompt (French) └── prompts/ # Default prompt templates (Git-versioned) ├── backlog.en.md # English template ├── backlog.fr.md # French template └── ... # One per column per language
`Note: Column prompts are stored in the SQLite database (
column_prompts table). The templates/prompts/ directory contains default templates used as fallback when no custom prompt is defined in the database.
$3 The SQLite database (
autocode.db) contains:| Table | Description | |-------|-------------| |
issues | All issues with title, description, priority, column, parent | | acceptance_criteria | Acceptance criteria for each issue | | issue_history | Full audit trail of all moves and edits | | comments | Issue comments with author and timestamp | | attachments | File attachment metadata (files stored on disk) | | execution_logs | Claude CLI execution prompts and terminal output | | pipelines | Versioned pipeline definitions (immutable once locked) | | columns | Column configuration within pipelines | | column_prompts | Custom action prompts per column per language | | sequences | Auto-increment counters (AC-XXXXXX keys) |
Issue Format Issues are stored in the SQLite database. The API returns JSON:
`json { "key": "AC-000001", "title": "Implement feature X", "description": "Feature description in markdown...", "column_slug": "02_in-progress", "priority": "P1", "semver": "minor", "labels": ["feature", "backend"], "parent_key": null, "acceptance_criteria": [ { "id": 1, "criterion": "Login button visible", "position": 0 }, { "id": 2, "criterion": "OAuth flow works", "position": 1 } ], "comments": [ { "id": "1704272400000", "content": "Implementation started", "author": "claude", "created_at": "2024-01-15T10:00:00Z" } ], "history": [ { "at": "2024-01-15T10:00:00Z", "action": "created", "from_column": null, "to_column": "00_backlog" } ], "created_at": "2024-01-15T10:00:00Z", "updated_at": "2024-01-15T12:00:00Z" }`
API Reference When running
autocode serve (default port 3000):
$3 | Method | Endpoint | Description | |--------|----------|-------------| | GET |
/api/issues | List all issues | | POST | /api/issues | Create new issue | | GET | /api/issues/:key | Get issue details | | PATCH | /api/issues/:key | Update issue | | DELETE | /api/issues/:key/archive | Archive issue | | POST | /api/issues/:key/move | Move to column | | POST | /api/issues/:key/next | Advance to next column | | GET | /api/issues/:key/comments | List comments | | POST | /api/issues/:key/comments | Add comment | | GET | /api/issues/:key/history | Get issue history | | GET | /api/issues/:key/full-history | Get history with prompts and terminal logs | | GET | /api/issues/:key/full-terminal | Get all terminal logs | | GET | /api/issues/:key/log | Get latest execution log | | GET | /api/issues/:key/:column/log | Get column-specific log | | GET | /api/issues/:key/history/:sessionId/log | Get session terminal log | | GET | /api/issues/:key/history/:sessionId/prompt | Get session prompt | | GET | /api/issues/:key/ancestors | Get parent chain | | GET | /api/issues/:key/children | Get child issues | | GET | /api/issues/:key/attachments | List attachments | | POST | /api/issues/:key/attachments | Upload attachment | | GET | /api/issues/:key/attachments/:id | Download attachment | | DELETE | /api/issues/:key/attachments/:id | Delete attachment | | GET | /api/issues/actionable | Get actionable issues | | GET | /api/issues/graph | Get issue dependency graph | | POST | /api/issues/autocomplete | AI autocomplete for issue fields |
$3 | Method | Endpoint | Description | |--------|----------|-------------| | GET |
/api/pipelines | List all pipelines | | POST | /api/pipelines | Create new pipeline | | GET | /api/pipelines/:name | Get pipeline details | | PUT | /api/pipelines/:name | Update pipeline | | DELETE | /api/pipelines/:name | Delete pipeline | | PUT | /api/pipelines/:name/activate | Activate latest version | | GET | /api/pipelines/:name/versions | List all versions | | POST | /api/pipelines/:name/versions | Create new draft | | GET | /api/pipelines/:name/versions/:version | Get specific version | | PUT | /api/pipelines/:name/versions/:version | Update draft | | DELETE | /api/pipelines/:name/versions/:version | Delete version | | POST | /api/pipelines/:name/versions/:version/finalize | Finalize draft | | PUT | /api/pipelines/:name/versions/:version/activate | Activate version |
$3 | Method | Endpoint | Description | |--------|----------|-------------| | GET |
/api/columns | List all columns | | GET | /api/columns/:slug/actions | Get column ACTION content | | GET | /api/columns/:slug/prompt | Get column prompt |
$3 | Method | Endpoint | Description | |--------|----------|-------------| | GET |
/api/catalog | List column catalog | | POST | /api/catalog | Add column to catalog | | POST | /api/catalog/autocreate | Auto-generate columns from project | | POST | /api/catalog/autocreate/apply | Apply generated columns |
$3 | Method | Endpoint | Description | |--------|----------|-------------| | GET |
/api/health | Health check | | GET | /api/status | Server status | | GET | /api/stats | Claude usage statistics | | GET | /api/workflow/health | Workflow health (stuck issues) | | GET | /api/ws/status | WebSocket status |
$3 | Method | Endpoint | Description | |--------|----------|-------------| | GET |
/api/changelog | Get changelog | | POST | /api/changelog/summary | Generate changelog summary |
API Examples
`bashList all issues curl http://localhost:3000/api/issues
Create an issue curl -X POST http://localhost:3000/api/issues \ -H "Content-Type: application/json" \ -d '{"title": "New feature", "priority": "P1", "labels": ["feature"]}'
Update an issue curl -X PATCH http://localhost:3000/api/issues/AC-000001 \ -H "Content-Type: application/json" \ -d '{"title": "Updated title", "priority": "P0"}'
Move an issue curl -X POST http://localhost:3000/api/issues/AC-000001/move \ -H "Content-Type: application/json" \ -d '{"column": "in-progress"}'
Advance to next column curl -X POST http://localhost:3000/api/issues/AC-000001/next
Add a comment curl -X POST http://localhost:3000/api/issues/AC-000001/comments \ -H "Content-Type: application/json" \ -d '{"content": "Implementation complete", "author": "claude"}'
Get full history with logs curl http://localhost:3000/api/issues/AC-000001/full-history
List pipelines curl http://localhost:3000/api/pipelines
Create a draft curl -X POST http://localhost:3000/api/pipelines/default/versions
Add column to draft curl -X PUT http://localhost:3000/api/pipelines/default/versions/2 \ -H "Content-Type: application/json" \ -d '{"action": [{"slug": "review", "name": "Code Review"}]}'
Finalize and activate curl -X POST http://localhost:3000/api/pipelines/default/versions/2/finalize curl -X PUT http://localhost:3000/api/pipelines/default/versions/2/activate
Auto-generate columns from project curl -X POST http://localhost:3000/api/catalog/autocreate \ -H "Content-Type: application/json" \ -d '{"lang": "en"}'
Get workflow health curl http://localhost:3000/api/workflow/health
Get usage stats curl http://localhost:3000/api/stats`
Environment Variables | Variable | Description | Default | |----------|-------------|---------| |
AUTOCODE_API_URL | API base URL (required for CLI commands) | - | | PORT | Server port | 3000 | | DATABASE_URL | Prisma database URL | file:./autocode/autocode.db` |
License See LICENSE file for details.