Skip to content

Latest commit

 

History

History
392 lines (312 loc) · 13.1 KB

README.md

File metadata and controls

392 lines (312 loc) · 13.1 KB

✨ AiderDesk: AI-Powered Coding

Elevate your development workflow with AiderDesk, a sophisticated desktop application bringing all the power of aider into a user-friendly graphical interface. Whether you're managing multiple projects, integrating with your favorite IDE, or tracking costs, AiderDesk elevates your productivity to new heights. Whether you're managing multiple projects, integrating with your favorite IDE, or tracking costs, AiderDesk elevates your productivity to new heights.

🎬 Overview

See AiderDesk in action:

✨ Key Features

AiderDesk is packed with features designed for modern software development:

  • 🖥️ Intuitive GUI: A clean, visual interface replacing command-line interactions.
  • 📂 Multi-Project Management: Seamlessly organize, switch between, and manage multiple codebases.
  • 🔌 Effortless IDE Integration: Automatically sync context files with your active editor in:
  • 🤖 Powerful Agent Mode: Utilize an autonomous AI agent (powered by Vercel AI SDK) capable of complex task planning and execution using various tools.
  • 🧩 Extensible via MCP: Connect to Model Context Protocol (MCP) servers to grant the Agent access to external tools like web search, documentation lookups, and more.
  • 📄 Smart Context Management: Automatically manage context via IDE plugins or manually control context using the integrated project file browser.
  • 💾 Robust Session Management: Save and load entire work sessions (chat history, context files) to easily switch between tasks or resume later.
  • 🔄 Flexible Model Switching: Change AI models on the fly while retaining your conversation and context.
  • 💬 Multiple Chat Modes: Tailor the AI interaction for different needs (e.g., coding, asking questions).
  • 🔍 Integrated Diff Viewer: Review AI-generated code changes with a clear side-by-side comparison.
  • ⏪ One-Click Reverts: Easily undo specific AI modifications while keeping others.
  • 💰 Cost Tracking: Monitor token usage and associated costs per project session for both Aider and the Agent.
  • ⚙️ Centralized Settings: Manage API keys, environment variables, and configurations conveniently.
  • 🌐 Versatile REST API: Integrate AiderDesk with external tools and workflows.
  • 📨 Structured Communication: View prompts, AI responses, agent thoughts, and tool outputs in an organized format.
  • 📋 Easy Sharing: Copy code snippets or entire conversations effortlessly.

📄 Comprehensive Context File Management

Keep the AI focused on the relevant code with flexible context management options.

  1. Automatic IDE Sync: Use the IntelliJ IDEA or VSCode plugins to automatically add/remove the currently active file(s) in your editor to/from the AiderDesk context.
  2. Manual Control: Utilize the "Context Files" sidebar in AiderDesk, which displays your project's file tree. Click files to manually add or remove them from the context, giving you precise control.

💾 Session Management

Never lose your work. Save and load complete sessions, including chat history and context files, per project.

  • Preserve State: Save messages and context files as a named session.
  • Resume Seamlessly: Load a session to restore your exact workspace.
  • Manage Multiple Tasks: Easily switch between different features, bug fixes, or experiments within the same project.

🤖 Agent Mode & MCP Support

Unlock advanced AI capabilities with AiderDesk's Agent mode. Built on the Vercel AI SDK, the agent can autonomously plan and execute complex tasks by leveraging a customizable set of tools.

Agent Capabilities:

  • Tool-Driven: Functionality is defined by connected tools (MCP servers + built-in Aider interaction).
  • Autonomous Planning: Breaks down complex requests into executable steps using available tools.
  • Seamless Aider Integration: Uses Aider for core coding tasks like generation and modification.
  • Multi-Provider LLMs: Supports various LLM providers (OpenAI, Anthropic, Gemini, Bedrock, Deepseek, OpenAI-compatible).
  • Transparent Operation: Observe the agent's reasoning, plans, and tool usage in the chat.

🛠️ Extending Capabilities with MCP

Connect AiderDesk to Model Context Protocol (MCP) servers to significantly enhance the Agent's abilities. MCP allows AI models to interact with external tools (web browsers, documentation systems, custom utilities).

  • Access External Tools: Grant the agent capabilities beyond built-in functions.
  • Gather Richer Context: Enable the agent to fetch external information before instructing Aider.
  • Flexible Configuration: Manage MCP servers and individual tools within Agent settings. (See MCP Configuration GIF)

AiderDesk is compatible with any MCP server, allowing you to tailor the agent's toolset precisely to your needs.


🌐 REST API

AiderDesk provides a REST API for external tools to interact with the application. The API is running on the same port as the main application (default 24337, configurable by AIDER_DESK_PORT environment variable).

Add Context File

/api/add-context-file
  • Method: POST
  • Request Body:
    {
      "projectDir": "path/to/your/project",
      "path": "path/to/the/file",
      "readOnly": false
    }
  • Response:
    [
      {
        "path": "path/to/the/file",
        "readOnly": false
      }
    ]
    Returns the list of context files in the project.

Drop Context File

/api/drop-context-file
  • Method: POST
  • Request Body:
    {
      "projectDir": "path/to/your/project",
      "path": "path/to/the/file"
    }
  • Response:
    []
    Returns the list of context files in the project.

Get Context Files

/api/get-context-files
  • Method: POST
  • Request Body:
    {
      "projectDir": "path/to/your/project"
    }
  • Response:
    [
      {
        "path": "path/to/the/file",
        "readOnly": false
      }
    ]
    Returns the list of context files in the project.

Get Addable Files

/api/get-addable-files
  • Method: POST
  • Request Body:
    {
      "projectDir": "path/to/your/project",
      "searchRegex": "optional/regex/filter"
    }
  • Response:
    [
      {
        "path": "path/to/the/file"
      }
    ]
    Returns the list of files that can be added to the project.

Run Prompt

/api/run-prompt
  • Endpoint: /api/run-prompt
  • Method: POST
  • Request Body:
    {
      "projectDir": "path/to/your/project",
      "prompt": "Your prompt here",
      "editFormat": "code" // Optional: "code", "ask", or "architect"
    }
  • Response:
    [
      {
        "messageId": "unique-message-id",
        "baseDir": "path/to/your/project",
        "content": "The AI generated response",
        "reflectedMessage": "Optional reflected message",
        "editedFiles": ["file1.txt", "file2.py"],
        "commitHash": "a1b2c3d4e5f6",
        "commitMessage": "Optional commit message",
        "diff": "Optional diff content",
        "usageReport": {
          "sentTokens": 100,
          "receivedTokens": 200,
          "messageCost": 0.5,
          "totalCost": 1.0,
          "mcpToolsCost": 0.2
        }
      }
    ]

🔌 AiderDesk as an MCP Server

AiderDesk includes a built-in MCP server, allowing other MCP-compatible clients (like Claude Desktop, Cursor, etc.) to interact with AiderDesk's core functionalities.

Configuration

Add the following configuration to your MCP client settings, adjusting paths as needed:

Windows
{
  "mcpServers": {
    "aider-desk": {
      "command": "node",
      "args": ["path-to-appdata/aider-desk/mcp-server/aider-desk-mcp-server.js", "/path/to/project"],
      "env": {
        "AIDER_DESK_API_BASE_URL": "http://localhost:24337/api"
      }
    }
  }
}

Note: Replace path-to-appdata with the absolute path to your AppData directory. You can find this value by running echo %APPDATA% in your command prompt.

macOS
{
  "mcpServers": {
    "aider-desk": {
      "command": "node",
      "args": ["/path/to/home/Library/Application Support/aider-desk/mcp-server/aider-desk-mcp-server.js", "/path/to/project"],
      "env": {
        "AIDER_DESK_API_BASE_URL": "http://localhost:24337/api"
      }
    }
  }
}

Note: Replace /path/to/home with the absolute path to your home directory. You can find this value by running echo $HOME in your terminal.

Linux
{
  "mcpServers": {
    "aider-desk": {
      "command": "node",
      "args": ["/path/to/home/.config/aider-desk/mcp-server/aider-desk-mcp-server.js", "/path/to/project"],
      "env": {
        "AIDER_DESK_API_BASE_URL": "http://localhost:24337/api"
      }
    }
  }
}

Note: Replace /path/to/home with the absolute path to your home directory. You can find this value by running echo $HOME in your terminal.

Arguments & Environment:

  • Command Argument 1: Project directory path (required).
  • AIDER_DESK_API_BASE_URL: Base URL of the running AiderDesk API (default: http://localhost:24337/api).

Available Tools via MCP

The built-in server exposes these tools to MCP clients:

  • add_context_file: Add a file to AiderDesk's context.
  • drop_context_file: Remove a file from AiderDesk's context.
  • get_context_files: List files currently in AiderDesk's context.
  • get_addable_files: List project files available to be added to the context.
  • run_prompt: Execute a prompt within AiderDesk.

Note: AiderDesk must be running for its MCP server to be accessible.


📥 Installation

Requirements

  • Python 3.9-3.12 installed.

Quick Start

  1. Download the latest release for your OS from Releases.
  2. Run the executable.

Troubleshooting

Python Version Issues

If AiderDesk struggles to find your Python installation, specify the path via the AIDER_DESK_PYTHON environment variable (usually only needed on first run):

  • macOS/Linux: export AIDER_DESK_PYTHON=/path/to/your/python3.x
  • Windows: $env:AIDER_DESK_PYTHON = "C:\Path\To\Python\python.exe"

Disabling Auto Updates

To prevent automatic updates, set the AIDER_DESK_NO_AUTO_UPDATE environment variable:

  • macOS/Linux: export AIDER_DESK_NO_AUTO_UPDATE=true
  • Windows: $env:AIDER_DESK_NO_AUTO_UPDATE = "true"

👨‍💻 Development Setup

If you want to run from source, you can follow these steps:

# Clone the repository
$ git clone https://github.com/hotovo/aider-desk.git
$ cd aider-desk

# Install dependencies
$ npm install

# Run in development mode
$ npm run dev

# Build executables
# For Windows
$ npm run build:win

# For macOS
$ npm run build:mac

# For Linux
$ npm run build:linux

🤝 Contributing

We welcome contributions from the community! Here's how you can help improve aider-desk:

  1. Fork the repository on GitHub
  2. Create a new branch for your feature or bugfix:
    git checkout -b my-feature-branch
  3. Commit your changes with clear, descriptive messages
  4. Push your branch to your fork
  5. Create a Pull Request against the main branch of the original repository

Please follow these guidelines:

  • Keep PRs focused on a single feature or bugfix
  • Update documentation when adding new features
  • Follow the existing code style and conventions
  • Write clear commit messages and PR descriptions

For major changes, please open an issue first to discuss what you would like to change.

⭐ Star History

Star History Chart

Thank you ❤️