* auto-claude: subtask-1-1 - Add GitHubErrorType and GitHubErrorInfo types Add error classification types for GitHub API error handling: - GitHubErrorType: Discriminated union for error categories (rate_limit, auth, permission, network, not_found, unknown) - GitHubErrorInfo: Structured error info with user-friendly message, raw error, rate limit reset time, required OAuth scopes, and status code These types will be used by the github-error-parser utility and GitHubApiErrorDisplay component for consistent error handling. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * auto-claude: subtask-1-2 - Create github-error-parser.ts utility with parseGitHubError function - Create github-error-parser.ts utility to classify GitHub API errors - Implement parseGitHubError() to detect error types: rate_limit, auth, permission, not_found, network, unknown - Extract metadata from errors (rate limit reset times, required scopes, status codes) - Add convenience functions: isRateLimitError, isAuthError, isNetworkError, isRecoverableError, requiresSettingsAction - Export all functions from utils/index.ts barrel file - Follow patterns from rate-limit-detector.ts with pattern arrays and classification functions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * auto-claude: subtask-2-1 - Create GitHubErrorDisplay.tsx component Add GitHubErrorDisplay component with error-type-specific rendering: - Different icons per error type (Clock, Key, Shield, WifiOff, SearchX, AlertTriangle) - Rate limit countdown timer with useEffect cleanup - Conditional action buttons (retry for recoverable, settings for auth/permission) - Compact and full card display variants - i18n-ready with common namespace translation keys Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * auto-claude: subtask-2-2 - Add rate limit countdown timer with useEffect cleanup - Fixed non-null assertion lint warning in countdown useEffect - Extract resetTime to local variable with conditional check - Maintains proper cleanup pattern with clearInterval on unmount * auto-claude: subtask-2-3 - Export GitHubErrorDisplay from components/index.ts * auto-claude: subtask-3-1 - Update IssueList.tsx to use GitHubErrorDisplay for blocking errors - Added onRetry and onOpenSettings props to IssueListProps interface - Updated IssueList component to use GitHubErrorDisplay for blocking errors (when issues.length === 0) - Updated GitHubIssues.tsx to pass handleRefresh and onOpenSettings callbacks to IssueList - Blocking errors now show user-friendly messages with retry/settings buttons based on error type Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * auto-claude: subtask-3-2 - Update IssueList.tsx to use GitHubErrorDisplay for inline load-more errors Replace the simple inline error div with GitHubErrorDisplay component using the compact prop for better error handling when issues are already loaded. This provides consistent error display with retry/settings actions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * auto-claude: subtask-4-1 - Add githubErrors.* translation keys to en/common.json Added translation keys for GitHub error display component: - rateLimitTitle, authTitle, permissionTitle, notFoundTitle - networkTitle, unknownTitle for error type titles - resetsIn for rate limit countdown display - rateLimitExpired for when rate limit has reset - requiredScopes for permission error details * auto-claude: subtask-4-2 - Add githubErrors.* translation keys to fr/common.json Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * auto-claude: subtask-5-1 - Create unit tests for github-error-parser.ts Add comprehensive unit tests covering all error types and helper functions: - parseGitHubError: rate_limit, auth, permission, not_found, network, unknown - Helper functions: isRateLimitError, isAuthError, isNetworkError - isRecoverableError, requiresSettingsAction - Edge cases: null/undefined/empty, case insensitivity, multiline, JSON - Cross-cutting concerns: consistency, status code extraction 92 tests total covering all patterns and behaviors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * auto-claude: subtask-5-2 - Create unit tests for GitHubErrorDisplay.tsx component Added comprehensive unit tests covering: - Null/empty error state handling - String error and GitHubErrorInfo object parsing - All error types (rate_limit, auth, permission, not_found, network, unknown) - Compact mode vs full card mode rendering - Retry and Settings button visibility based on error type - Rate limit countdown display - Required scopes display for permission errors - Custom className prop support - Callback stability and accessibility Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * fix: address lint and TypeScript issues in GitHub error handling - Fix incorrect import path in test file (../../../types -> ../../types) - Replace isNaN with Number.isNaN for safer type checking - Fix unused parameter by prefixing with underscore - Remove redundant switch case (case 'unknown' with default) - Remove unused imports in test file (beforeEach, afterEach) - Add comments to empty arrow functions in tests - Use optional chaining instead of non-null assertion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address CodeRabbit review feedback on GitHub error handling - GitHubErrorDisplay.tsx: - Memoize errorInfo with useMemo to prevent useEffect churn - Remove unnecessary useCallback wrappers for trivial handlers - Simplify dead code conditional (if (!error) return null) - Use i18n keys for error messages instead of hardcoded strings - github-error-parser.ts: - Add word boundaries to numeric regex patterns (401, 403, 404) - Make STATUS_CODE_PATTERN context-aware to avoid false positives - Tests: - Add fake timer tests for countdown interval behavior - Add clearInterval spy for unmount cleanup verification - Add overlapping pattern priority tests - Update translation mock with new message keys - i18n: - Add githubErrors.*Message keys to en/common.json and fr/common.json * fix: address additional CodeRabbit review feedback - GitHubErrorDisplay.tsx: - Stop interval when countdown expires (clearInterval on empty formatted) - Select specific message keys based on metadata (rateLimitMessageMinutes/Hours, permissionMessageScopes) - github-error-parser.ts: - Tighten REQUIRED_SCOPES_PATTERN to stop at sentence boundaries - Tests: - Update interval test to verify timer count - Update permission tests to avoid duplicate text matching - Add missing translation mocks for specific message keys * fix: address final CodeRabbit review feedback - GitHubErrorDisplay.tsx: - Extract getMessageKey to module scope (pure function) - Use cn() utility for className merging - Add title tooltip to compact variant for full error message - github-error-parser.ts: - Fix extractRateLimitResetTime to handle relative durations ("in X seconds") - Separate relative vs absolute timestamp patterns - Remove unused RATE_LIMIT_RESET_PATTERN constant - Tests: - Update mock type to Record<string, unknown> for accuracy - Add test for empty string error input * fix: address CodeRabbit review feedback - accessibility and optimization - GitHubErrorDisplay.tsx: - Add role="alert" to compact and full card variants for screen readers - Fix minutes/hours calculation to be undefined when <= 0 (avoid stale values) - github-error-parser.ts: - Add optional parsedInfo parameter to convenience predicates - Avoids re-classification when caller already has parsed info - Updated: isRateLimitError, isAuthError, isNetworkError, isRecoverableError, requiresSettingsAction - Tests: - Add tests for role="alert" accessibility in both full and compact modes * fix: address CodeRabbit feedback - i18n countdown and pattern order - GitHubErrorDisplay.tsx: - Hoist BASE_MESSAGE_KEYS to module scope to avoid recreation - Replace formatCountdown with getCountdownComponents returning numeric values - Add formatCountdownDisplay using i18n keys for hours/minutes/seconds - github-error-parser.ts: - Reorder classifyError to check PERMISSION_PATTERNS before NOT_FOUND_PATTERNS - Properly classifies 403 responses that might contain "not found" text - i18n: - Add countdownHoursMinutes and countdownMinutesSeconds keys (en/fr) - Enables locale-aware countdown formatting - Tests: - Add mock translations for countdown formatting keys * docs: clarify i18n usage for GitHubErrorInfo message field - Add comprehensive JSDoc to GitHubErrorInfo interface explaining that the `message` field should only be used as i18n fallback defaultValue - Update parseGitHubError function documentation with translation key mapping and proper usage example - Addresses concern about direct consumers bypassing i18n Note: role="alert" accessibility fix was already present on both compact and full card variants (lines 272 and 311). * fix: address Auto Claude PR review findings - GitHubErrorDisplay.tsx: - Clear stale countdown state when error type changes away from rate_limit - Prevents stale countdown data from persisting across error type transitions - github-error-parser.ts: - Add MAX_RESET_SECONDS constant (86400 seconds = 24 hours) - Validate relative duration seconds are within reasonable bounds - Prevents malformed error strings from creating far-future dates * fix: address Auto Claude PR review findings - bounds validation and pattern fixes - Add upper-bound validation (MAX_RESET_SECONDS=86400) on absolute timestamps in extractRateLimitResetTime to prevent far-future dates from malformed input - Remove bare status code patterns (401/403/404) from AUTH_PATTERNS, PERMISSION_PATTERNS, and NOT_FOUND_PATTERNS to avoid misclassification (e.g., Issue #401 not found classified as auth instead of not_found) - STATUS_CODE_PATTERN already handles HTTP-context-aware matching - Unify time-remaining calculation: compute diffMs once and pass to both getMessageKey() and translation interpolation to avoid boundary edge cases - Fix useEffect dependency: use getTime() instead of Date object reference to prevent interval churn when callers pass new GitHubErrorInfo each render * fix: restore status code classification via HTTP context-aware fallback - Add 'requires:' pattern to PERMISSION_PATTERNS for scope context matching - Modify classifyError to accept extracted status code as fallback - Extract status code before classification to enable fallback logic - Move status code fallback before network patterns to prioritize HTTP status (e.g., 'Network error: HTTP 401' now correctly classifies as auth) - Preserves protection against bare number false positives while still supporting HTTP-context-aware status code classification * fix: address LOW severity findings - accessibility and dead code - Add aria-label to compact mode container for screen reader accessibility (title attribute alone is not reliably announced by screen readers) - Simplify RATE_LIMIT_PATTERNS by removing unreachable patterns: - /rate\s*limit/i is a superset that matches all rate limit variations - Removed redundant: api rate limit exceeded, rate limit exceeded, abuse rate limit, secondary rate limit - Kept unique patterns: too many requests, 403.*rate * fix: address PR review findings - pattern precision and helper consistency MEDIUM fixes: - Add 'requires authentication' pattern to AUTH_PATTERNS to catch GitHub 401 response - Narrow permission pattern to match only known OAuth scope names (repo, admin, write, read, workflow, org, gist, notification, user, project, package, delete, discussion) to avoid misclassifying 'Requires authentication' as permission error LOW fixes: - Update STATUS_CODE_PATTERN comment to accurately describe ^ anchor matching behavior (matches status codes at string start for formats like '403 Forbidden') - Fix helper functions (isRateLimitError, isAuthError, isNetworkError, isRecoverableError, requiresSettingsAction) to extract and pass status code to classifyError for consistent classification with parseGitHubError * fix: address PR review findings - test coverage and edge cases - Remove duplicate 'gist' from PERMISSION_PATTERNS regex - Fix error display visibility during active search - Extract resetTimeMs for stable useEffect dependency - Add test coverage for parsedInfo shortcut paths in all 5 helper functions --------- Co-authored-by: StillKnotKnown <stillknotknown@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Auto Claude
Autonomous multi-agent coding framework that plans, builds, and validates software for you.
Download
Stable Release
| Platform | Download |
|---|---|
| Windows | Auto-Claude-2.7.5-win32-x64.exe |
| macOS (Apple Silicon) | Auto-Claude-2.7.5-darwin-arm64.dmg |
| macOS (Intel) | Auto-Claude-2.7.5-darwin-x64.dmg |
| Linux | Auto-Claude-2.7.5-linux-x86_64.AppImage |
| Linux (Debian) | Auto-Claude-2.7.5-linux-amd64.deb |
| Linux (Flatpak) | Auto-Claude-2.7.5-linux-x86_64.flatpak |
Beta Release
⚠️ Beta releases may contain bugs and breaking changes. View all releases
| Platform | Download |
|---|---|
| Windows | Auto-Claude-2.7.6-beta.3-win32-x64.exe |
| macOS (Apple Silicon) | Auto-Claude-2.7.6-beta.3-darwin-arm64.dmg |
| macOS (Intel) | Auto-Claude-2.7.6-beta.3-darwin-x64.dmg |
| Linux | Auto-Claude-2.7.6-beta.3-linux-x86_64.AppImage |
| Linux (Debian) | Auto-Claude-2.7.6-beta.3-linux-amd64.deb |
| Linux (Flatpak) | Auto-Claude-2.7.6-beta.3-linux-x86_64.flatpak |
All releases include SHA256 checksums and VirusTotal scan results for security verification.
Requirements
- Claude Pro/Max subscription - Get one here
- Claude Code CLI -
npm install -g @anthropic-ai/claude-code - Git repository - Your project must be initialized as a git repo
Quick Start
- Download and install the app for your platform
- Open your project - Select a git repository folder
- Connect Claude - The app will guide you through OAuth setup
- Create a task - Describe what you want to build
- Watch it work - Agents plan, code, and validate autonomously
Features
| Feature | Description |
|---|---|
| Autonomous Tasks | Describe your goal; agents handle planning, implementation, and validation |
| Parallel Execution | Run multiple builds simultaneously with up to 12 agent terminals |
| Isolated Workspaces | All changes happen in git worktrees - your main branch stays safe |
| Self-Validating QA | Built-in quality assurance loop catches issues before you review |
| AI-Powered Merge | Automatic conflict resolution when integrating back to main |
| Memory Layer | Agents retain insights across sessions for smarter builds |
| GitHub/GitLab Integration | Import issues, investigate with AI, create merge requests |
| Linear Integration | Sync tasks with Linear for team progress tracking |
| Cross-Platform | Native desktop apps for Windows, macOS, and Linux |
| Auto-Updates | App updates automatically when new versions are released |
Interface
Kanban Board
Visual task management from planning through completion. Create tasks and monitor agent progress in real-time.
Agent Terminals
AI-powered terminals with one-click task context injection. Spawn multiple agents for parallel work.
Roadmap
AI-assisted feature planning with competitor analysis and audience targeting.
Additional Features
- Insights - Chat interface for exploring your codebase
- Ideation - Discover improvements, performance issues, and vulnerabilities
- Changelog - Generate release notes from completed tasks
Project Structure
Auto-Claude/
├── apps/
│ ├── backend/ # Python agents, specs, QA pipeline
│ └── frontend/ # Electron desktop application
├── guides/ # Additional documentation
├── tests/ # Test suite
└── scripts/ # Build utilities
CLI Usage
For headless operation, CI/CD integration, or terminal-only workflows:
cd apps/backend
# Create a spec interactively
python spec_runner.py --interactive
# Run autonomous build
python run.py --spec 001
# Review and merge
python run.py --spec 001 --review
python run.py --spec 001 --merge
See guides/CLI-USAGE.md for complete CLI documentation.
Development
Want to build from source or contribute? See CONTRIBUTING.md for complete development setup instructions.
For Linux-specific builds (Flatpak, AppImage), see guides/linux.md.
Security
Auto Claude uses a three-layer security model:
- OS Sandbox - Bash commands run in isolation
- Filesystem Restrictions - Operations limited to project directory
- Dynamic Command Allowlist - Only approved commands based on detected project stack
All releases are:
- Scanned with VirusTotal before publishing
- Include SHA256 checksums for verification
- Code-signed where applicable (macOS)
Available Scripts
| Command | Description |
|---|---|
npm run install:all |
Install backend and frontend dependencies |
npm start |
Build and run the desktop app |
npm run dev |
Run in development mode with hot reload |
npm run package |
Package for current platform |
npm run package:mac |
Package for macOS |
npm run package:win |
Package for Windows |
npm run package:linux |
Package for Linux |
npm run package:flatpak |
Package as Flatpak (see guides/linux.md) |
npm run lint |
Run linter |
npm test |
Run frontend tests |
npm run test:backend |
Run backend tests |
Contributing
We welcome contributions! Please read CONTRIBUTING.md for:
- Development setup instructions
- Code style guidelines
- Testing requirements
- Pull request process
Community
- Discord - Join our community
- Issues - Report bugs or request features
- Discussions - Ask questions
License
AGPL-3.0 - GNU Affero General Public License v3.0
Auto Claude is free to use. If you modify and distribute it, or run it as a service, your code must also be open source under AGPL-3.0.
Commercial licensing available for closed-source use cases.


