A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Desktop app for multi-workspace Claude Code management
AutoSteer is a desktop application that enhances your Claude Code experience with multi-workspace management. Built with Electron, it works across macOS, Linux, and Windows (via WSL), allowing you to manage multiple isolated workspaces with persistent sessions and seamless context switching.
https://github.com/user-attachments/assets/9c86ef28-7167-41c9-b4e6-7d50ba586ca2
[!NOTE] This project is not affiliated with, endorsed by, or sponsored by Anthropic. Claude is a trademark of Anthropic, PBC. This is an independent project using Claude.
Prerequisite: Claude Code must be installed first.
Download the latest version for your platform from the Releases page:
.zip file and extract to Applications.deb (Debian/Ubuntu) or .rpm (Fedora/RHEL)For detailed installation instructions including WSL2 setup for Windows, see INSTALLATION.md
# Launch AutoSteer
autosteer
# Launch with debug logging
autosteer --debug
After launching, configure your preferences in Settings and start using Claude Code with AutoSteer!
AutoSteer stores configuration in ~/.autosteer/ on all platforms.
build-essential package# Clone the repository
git clone https://github.com/notch-ai/autosteer.git
cd autosteer
# Install dependencies
pnpm install
# Run in development mode
pnpm dev
# Run tests
pnpm test
# Build application
pnpm compile
# Package for distribution
pnpm make
# Start development server
pnpm dev
# Run unit tests
pnpm test:unit
# Run integration tests
pnpm test:integration
# Run all tests
pnpm test
# Lint code
pnpm lint
# Format code
pnpm format
# Type check
pnpm typecheck
# Compile application (TypeScript + Webpack)
pnpm compile
# Package application for current platform
pnpm package
# Create distributable installers
pnpm make
autosteer/
├── src/
│ ├── main/ # Electron main process
│ │ └── ipc/ # Inter-process communication layer
│ │ ├── handlers/ # 4 consolidated domain handlers
│ │ │ ├── claude.handlers.ts # Agent, MCP, SlashCommand operations
│ │ │ ├── project.handlers.ts # File, Resource management
│ │ │ ├── git.handlers.ts # Git operations
│ │ │ └── system.handlers.ts # Terminal, Badge, Config, Log, Store, Update
│ │ ├── utils/handlerFactory.ts # Reusable error handling, logging, validation
│ │ └── IpcRegistrar.ts # Centralized handler registration
│ ├── features/ # Domain-based feature organization
│ │ ├── chat/ # Chat feature domain (15 components)
│ │ ├── monitoring/ # Monitoring feature domain (10 components)
│ │ ├── settings/ # Settings feature domain (4 components)
│ │ └── shared/ # Shared components across features (48 components)
│ │ └── components/ # Organized by subdomain
│ │ ├── agent/
│ │ ├── git/
│ │ ├── layout/
│ │ ├── projects/
│ │ ├── session/
│ │ ├── tasks/
│ │ ├── terminal/
│ │ └── ui/
│ ├── components/ # Common UI layer (shadcn/ui primitives)
│ ├── services/ # Application services
│ ├── stores/ # State management (Zustand)
│ ├── hooks/ # React hooks
│ │ └── useSessionTabs.ts # Tab management hook
│ ├── commons/
│ │ ├── utils/ # Utility functions
│ │ │ └── slash-commands/ # Slash command utilities
│ │ ├── contexts/ # React contexts
│ │ ├── constants/ # Constants and config
│ │ │ └── tabs.ts # Tab constants (MAX_TABS, system tab IDs)
│ │ └── config/ # Theme and styling
│ ├── entities/ # Data models (Lite Clean Architecture)
│ ├── types/ # TypeScript types
│ │ └── ui.types.ts # Tab type definitions (SessionTab, MaximizeTab, TabState)
│ └── docs/ # Documentation
│ └── tab-management.md # Tab management guide
├── assets/ # App icons and images
├── tests/
│ ├── unit/ # Unit tests (80% coverage target)
│ ├── integration/ # Integration tests
│ ├── component/ # Playwright component tests
│ └── factories/ # Test data factories
├── scripts/ # Build and release scripts
└── playwright-component.config.ts # Component testing config
Import Pattern: @/features/[domain]/components/[Component]
AutoSteer provides robust tab management with per-project isolation. See docs/tab-management.md for detailed documentation.
Key Features:
Configuration:
{
"settings": {
"confirmSessionTabDeletion": true
}
}
We welcome contributions! Please see our Contributing Guide for detailed information.
# Fork and clone
git clone https://github.com/YOUR_USERNAME/autosteer.git
cd autosteer
# Install dependencies
pnpm install
# Start development
pnpm dev
# Run tests before committing
pnpm test
pnpm lint
pnpm typecheck
We use Jest for unit/integration tests and Playwright for component/visual tests:
# Run all tests
pnpm test
# Run unit tests only
pnpm test:unit
# Run integration tests only
pnpm test:integration
# Run tests in watch mode
pnpm test:watch
# Run tests with coverage report
pnpm test:coverage
Key test files covering critical functionality:
tests/unit/commons/utils/slash-commands/slash_command_utils.test.ts - Custom slash command formattingtests/unit/hooks/useTerminalPool.test.ts - Terminal pool managementtests/unit/main/ipc/handlers/ - Consolidated domain handlerstests/unit/services/ClaudeCodeService.test.ts - Core Claude Code integrationtests/unit/stores/core.test.ts - State managementtests/unit/types/terminal.types.test.ts - Terminal type safetytests/unit/entities/SessionBlock.test.ts - Data model validationAutoSteer creates trace files for debugging SDK message flow. These files are stored in ~/.autosteer/traces/ and use JSONL format (one JSON object per line).
~/.autosteer/traces/{sessionId}.trace.jsonl
Each trace entry is a JSON object with the following structure:
{
"timestamp": "2025-11-09T18:51:35.123Z", // ISO 8601 timestamp
"sessionId": "session-abc123", // Session identifier
"direction": "to-claude" | "from-claude", // Message direction
"rawMessage": { /* SDK message object */ }, // Complete SDK message
"sdkVersion": "^0.1.0", // SDK version
"correlationId": "550e8400-e29b-41d4", // Request/response correlation
"sequenceNumber": 42 // Monotonic sequence per session
}
~/.autosteer/traces/ to free disk spaceTrace files are useful for:
{
"timestamp": "2025-11-09T18:51:35.123Z",
"sessionId": "session-abc123",
"direction": "from-claude",
"rawMessage": {
"type": "assistant",
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "session-abc123",
"message": {
"role": "assistant",
"content": [{ "type": "text", "text": "Hello!" }]
}
},
"sdkVersion": "^0.1.0",
"correlationId": "550e8400-e29b-41d4",
"sequenceNumber": 42,
"messageType": "assistant",
"messageSubtype": null
}
This guide helps developers handle Anthropic Claude SDK updates and Pydantic model changes without breaking existing message validation.
When updating @anthropic-ai/claude-agent-sdk:
Check for Breaking Changes
Update Zod Schemas
src/services/MessageValidator.tsTest Validation
pnpm test:unit -- MessageValidator.test.ts
Update Trace Documentation
Update Python Models
SDKMessage union typeUpdate TypeScript Schemas
MessageValidator.tsAdd Tests
Example:
// Add to MessageValidator.ts
const NewMessageTypeSchema = z.object({
type: z.literal('new_type'),
uuid: z.string().uuid(),
session_id: z.string(),
// ... other fields
});
If an SDK update breaks validation:
Identify Breaking Change
Update Schemas Gradually
// Old field (deprecated but still supported)
old_field: z.string().optional(),
// New field (preferred)
new_field: z.string().optional(),
Add Migration Logic
Version Compatibility
# Run all validation tests
pnpm test:unit -- MessageValidator
# Test with fixtures
pnpm test:integration -- message-validation
# Check type coverage
pnpm typecheck
If validation breaks in production:
This project is licensed under the MIT License - see the LICENSE file for details.
An AI-powered custom node for ComfyUI designed to enhance workflow automation and provide intelligent assistance
Deterministic multi-agent pipeline for end-to-end software development, orchestrating CLI-based AI tools (e.g. Gemini, C
💻 A curated list of papers and resources for multi-modal Graphical User Interface (GUI) agents.
Native macOS app to monitor Claude AI usage limits and watch your coding sessions live