1. Conduid
  2. AI
  3. Autosteer
MCP server · AI

Autosteer

Desktop app for multi-workspace Claude Code management

66Good

Scored 6 hours ago · breakdown

About Autosteer

Autosteer is an MCP server published by notch-ai in the AI category: desktop app for multi-workspace Claude Code management.

The repository has 67 stars and 10 forks, with the last commit 10 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/notch-ai/autosteer

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Autosteer

Powered by Claude · Grounded in docs

I know everything about Autosteer. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 6 hours ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • !No dynamic code executionSource scan found eval or shell execution. Review how tool inputs reach it before granting credentials.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.1.23v0.1.23 · 26 Nov 2025[0.1.23](https://github.com/notch-ai/autosteer/compare/v0.1.22...v0.1.23) (2025-11-26) Features IDE integration, permission modes, performance optimizations, and bug fixes…
v0.1.22v0.1.22 · 12 Nov 2025[0.1.22](https://github.com/notch-ai/autosteer/compare/v0.1.21...v0.1.22) (2025-11-12) Bug Fixes slash command init ([9bee821](https://github.com/notch-ai/autosteer/commit/9bee821f48a6f8a04c0d6cf4398ba5a2bc9f6163))
v0.1.21v0.1.21 · 12 Nov 2025[0.1.21](https://github.com/notch-ai/autosteer/compare/v0.1.20...v0.1.21) (2025-11-12) Bug Fixes file references ([ce1e3a1](https://github.com/notch-ai/autosteer/commit/ce1e3a1c4ee224b12f3ca0e946d6fdb0285c04e2))
v0.1.20v0.1.20 · 12 Nov 2025[0.1.20](https://github.com/notch-ai/autosteer/compare/v0.1.19...v0.1.20) (2025-11-12) Performance Improvements comprehensive performance and architecture improvements…
v0.1.19v0.1.19 · 6 Nov 2025[0.1.19](https://github.com/notch-ai/autosteer/compare/v0.1.18...v0.1.19) (2025-11-06) Bug Fixes UI improvements and handler pattern ([a3b433e](https://github.com/notch-ai/autosteer/commit/a3b433e60f5881bd6d375266c272a16296593ff5))

README

AutoSteer

Release License Platform Node Version

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.

Demo

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.

Features

  • Worktree-First Architecture - Organize projects in isolated workspaces with independent file systems and contexts
  • Persistent Sessions - Save and resume conversations per worktree, maintaining full context across work sessions
  • Multi-Project Management - Switch seamlessly between different projects without losing state or context
  • Per-Project Tab Management - Session tabs scoped to projects with auto-select behavior and persistent state
  • Cross-Platform - Native support for macOS, Linux, and Windows (via WSL)
  • Context Preservation - Automatically saves conversation state, allowing you to pick up exactly where you left off
  • Fast Context Switching - Instantly switch between worktrees and tabs
  • Token Usage Tracking - Monitor token usage and costs per message and per worktree
  • Status Panel - View session information, manage MCP servers, and handle MCP authentication
  • Protocol Trace Viewer - Inspect detailed protocol messages for debugging and understanding agent behavior
  • Custom Slash Commands - Extend Claude Code functionality with custom command patterns (file:src/commons/utils/slashCommandUtils.ts)

📦 Installation

Prerequisite: Claude Code must be installed first.

Quick Install

Download the latest version for your platform from the Releases page:

  • macOS: Download .zip file and extract to Applications
  • Linux: Download .deb (Debian/Ubuntu) or .rpm (Fedora/RHEL)
  • Windows: Install via WSL2

Platform-Specific Instructions

For detailed installation instructions including WSL2 setup for Windows, see INSTALLATION.md

🚀 Getting Started

# 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.

🛠️ Development

Prerequisites

  • Node.js (v20 or higher)
  • pnpm (v9 or higher)
  • Git
  • Platform-specific build tools:
    • macOS: Xcode Command Line Tools
    • Linux: build-essential package
    • Windows: Use WSL with Linux build tools

Building from Source

# 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

Development Scripts

# 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

Project Structure

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]

Tab Management

AutoSteer provides robust tab management with per-project isolation. See docs/tab-management.md for detailed documentation.

Key Features:

  • Per-project tab isolation: Only tabs for the selected project are visible
  • Auto-select behavior: Automatically switches to another tab when closing
  • Persistent state: Tab selection survives application restarts
  • System tabs: Terminal and Changes tabs always present
  • Maximize tabs: Dynamic tabs for maximize view

Configuration:

{
  "settings": {
    "confirmSessionTabDeletion": true
  }
}

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for detailed information.

Quick Start for Contributors

# 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

🧪 Testing

Running Tests

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

Test Coverage

Key test files covering critical functionality:

  • Utilities: tests/unit/commons/utils/slash-commands/slash_command_utils.test.ts - Custom slash command formatting
  • Hooks: tests/unit/hooks/useTerminalPool.test.ts - Terminal pool management
  • IPC Handlers: tests/unit/main/ipc/handlers/ - Consolidated domain handlers
  • Services: tests/unit/services/ClaudeCodeService.test.ts - Core Claude Code integration
  • Store: tests/unit/stores/core.test.ts - State management
  • Types: tests/unit/types/terminal.types.test.ts - Terminal type safety
  • Entities: tests/unit/entities/SessionBlock.test.ts - Data model validation

🔍 Trace File Format

AutoSteer creates trace files for debugging SDK message flow. These files are stored in ~/.autosteer/traces/ and use JSONL format (one JSON object per line).

Trace File Location

~/.autosteer/traces/{sessionId}.trace.jsonl

Trace Entry Format

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
}

Trace File Lifecycle

  • Creation: Trace files are created automatically when SDK messages are logged
  • Rotation: Files are rotated when they exceed 100MB, with timestamp suffixes
  • Cleanup: Trace files are automatically deleted when their project is deleted
  • Manual Cleanup: Delete files in ~/.autosteer/traces/ to free disk space

Using Trace Files

Trace files are useful for:

  • Debugging: Inspect exact SDK messages sent and received
  • Performance Analysis: Track message timing and sequence
  • Error Investigation: Review message flow leading to errors
  • SDK Updates: Verify message format changes across SDK versions

Example Trace Entry

{
  "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
}

🔄 SDK Migration Guide

Overview

This guide helps developers handle Anthropic Claude SDK updates and Pydantic model changes without breaking existing message validation.

SDK Version Updates

When updating @anthropic-ai/claude-agent-sdk:

  1. Check for Breaking Changes

    • Review SDK release notes for breaking changes
    • Test validation with new SDK types
    • Update Pydantic models if needed
  2. Update Zod Schemas

    • Location: src/services/MessageValidator.ts
    • Match schemas to new SDK types
    • Maintain backward compatibility with relaxed validation
  3. Test Validation

    pnpm test:unit -- MessageValidator.test.ts
    
  4. Update Trace Documentation

    • Document new message types in README

Pydantic Model Changes

Adding New Message Types

  1. Update Python Models

    • Follow existing BaseModel pattern
    • Add to SDKMessage union type
  2. Update TypeScript Schemas

    • Add corresponding Zod schema in MessageValidator.ts
    • Add to discriminated union
    • Update type guards
  3. Add Tests

    • Add test cases for new message type
    • Test strict and relaxed validation
    • Test partial extraction

Example:

// Add to MessageValidator.ts
const NewMessageTypeSchema = z.object({
  type: z.literal('new_type'),
  uuid: z.string().uuid(),
  session_id: z.string(),
  // ... other fields
});

Handling Breaking SDK Changes

If an SDK update breaks validation:

  1. Identify Breaking Change

    • Check validation test failures
    • Review trace logs for error patterns
    • Compare old vs new message structure
  2. Update Schemas Gradually

    // Old field (deprecated but still supported)
    old_field: z.string().optional(),
    
    // New field (preferred)
    new_field: z.string().optional(),
    
  3. Add Migration Logic

    • Handle both old and new formats
    • Log warnings for deprecated fields
    • Gradually phase out old format
  4. Version Compatibility

    • Track SDK version in trace logs
    • Add version checks if needed
    • Document version requirements

Testing Migration

# Run all validation tests
pnpm test:unit -- MessageValidator

# Test with fixtures
pnpm test:integration -- message-validation

# Check type coverage
pnpm typecheck

Rollback Strategy

If validation breaks in production:

  1. Immediate: Revert to previous SDK version
  2. Short-term: Deploy hotfix with relaxed validation
  3. Long-term: Fix schemas and redeploy

Best Practices

  • Always test with real message fixtures before deploying
  • Maintain backward compatibility for at least 2 SDK versions
  • Document breaking changes in PR descriptions
  • Use relaxed validation as fallback to prevent crashes
  • Monitor trace logs for validation failures after updates

🔒 Security

  1. Process Isolation: Agents run in separate processes
  2. Local Storage: All data stays on your machine
  3. No Telemetry: No data collection or tracking

🔧 Troubleshooting

Getting Help

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

README fetched from the repository 6 hours ago. The original is authoritative.

Questions

About Autosteer

How do I install Autosteer?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Autosteer safe to use with an AI agent?

Its trust score is 66 out of 100 (good). It passes 4 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Autosteer still maintained?

The last commit was 10 months ago. That's long enough that you should check whether the maintainer is responding to issues before depending on it.