Skip to content

Simple to install, powerful command-line based AI agent system for coding.

License

Notifications You must be signed in to change notification settings

drivecore/mycoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyCoder

Command-line interface for AI-powered coding tasks. Full details available on the main MyCoder.ai website and the Official MyCoder.Ai Docs website.

Features

  • πŸ€– AI-Powered: Leverages Anthropic's Claude, OpenAI models, and Ollama for intelligent coding assistance
  • πŸ› οΈ Extensible Tool System: Modular architecture with various tool categories
  • πŸ”„ Parallel Execution: Ability to spawn sub-agents for concurrent task processing
  • πŸ“ Self-Modification: Can modify code, it was built and tested by writing itself
  • πŸ” Smart Logging: Hierarchical, color-coded logging system for clear output
  • πŸ‘€ Human Compatible: Uses README.md, project files and shell commands to build its own context
  • 🌐 GitHub Integration: GitHub mode for working with issues and PRs as part of workflow
  • πŸ“„ Model Context Protocol: Support for MCP to access external context sources
  • 🧠 Message Compaction: Automatic management of context window for long-running agents

Please join the MyCoder.ai discord for support: https://discord.gg/5K6TYrHGHt

Installation

npm install -g mycoder

For detailed installation instructions for macOS and Linux, including how to set up Node.js using NVM, see our Getting Started guide.

Usage

# Interactive mode
mycoder -i

# Run with a prompt
mycoder "Implement a React component that displays a list of items"

# Run with a prompt from a file
mycoder -f prompt.txt

# Enable interactive corrections during execution (press Ctrl+M to send corrections)
mycoder --interactive "Implement a React component that displays a list of items"

# Disable user prompts for fully automated sessions
mycoder --userPrompt false "Generate a basic Express.js server"

# Disable user consent warning and version upgrade check for automated environments
mycoder --upgradeCheck false "Generate a basic Express.js server"

Configuration

MyCoder is configured using a configuration file in your project. MyCoder supports multiple configuration file locations and formats, similar to ESLint and other modern JavaScript tools.

Configuration File Locations

MyCoder will look for configuration in the following locations (in order of precedence):

  1. mycoder.config.js in your project root
  2. .mycoder.config.js in your project root
  3. .config/mycoder.js in your project root
  4. .mycoder.rc in your project root
  5. .mycoder.rc in your home directory
  6. mycoder field in package.json
  7. ~/.config/mycoder/config.js (XDG standard user configuration)

Multiple file extensions are supported: .js, .ts, .mjs, .cjs, .json, .jsonc, .json5, .yaml, .yml, and .toml.

Creating a Configuration File

Create a configuration file in your preferred location:

// mycoder.config.js
export default {
  // GitHub integration
  githubMode: true,

  // Browser settings
  headless: true,
  userSession: false,

  // System browser detection settings
  browser: {
    // Whether to use system browsers or Playwright's bundled browsers
    useSystemBrowsers: true,

    // Preferred browser type (chromium, firefox, webkit)
    preferredType: 'chromium',

    // Custom browser executable path (overrides automatic detection)
    // executablePath: null, // e.g., '/path/to/chrome'
  },

  // Model settings
  provider: 'anthropic',
  model: 'claude-3-7-sonnet-20250219',
  maxTokens: 4096,
  temperature: 0.7,

  // Custom settings
  // customPrompt can be a string or an array of strings for multiple lines
  customPrompt: '',
  // Example of multiple line custom prompts:
  // customPrompt: [
  //   'Custom instruction line 1',
  //   'Custom instruction line 2',
  //   'Custom instruction line 3',
  // ],
  profile: false,

  // Base URL configuration (for providers that need it)
  baseUrl: 'http://localhost:11434', // Example for Ollama

  // MCP configuration
  mcp: {
    servers: [
      {
        name: 'example',
        url: 'https://mcp.example.com',
        auth: {
          type: 'bearer',
          token: 'your-token-here',
        },
      },
    ],
    defaultResources: ['example://docs/api'],
    defaultTools: ['example://tools/search'],
  },
};

CLI arguments will override settings in your configuration file.

Interactive Corrections

MyCoder supports sending corrections to the main agent while it's running. This is useful when you notice the agent is going off track or needs additional information.

Usage

  1. Start MyCoder with the --interactive flag:

    mycoder --interactive "Implement a React component"
  2. While the agent is running, press Ctrl+M to enter correction mode

  3. Type your correction or additional context

  4. Press Enter to send the correction to the agent

The agent will receive your message and incorporate it into its decision-making process, similar to how parent agents can send messages to sub-agents.

Configuration

You can enable interactive corrections in your configuration file:

// mycoder.config.js
export default {
  // ... other options
  interactive: true,
};

GitHub Comment Commands

MyCoder can be triggered directly from GitHub issue comments using the flexible /mycoder command:

/mycoder [your instructions here]

Examples:

  • /mycoder implement a PR for this issue
  • /mycoder create an implementation plan
  • /mycoder suggest test cases for this feature

Learn more about GitHub comment commands

Packages

Development

# Clone the repository
git clone https://github.com/drivecore/mycoder.git
cd mycoder

# Install dependencies
pnpm install

# Build all packages
pnpm build

# Run tests
pnpm test

# Create a commit with interactive prompt
pnpm commit

Release Process

MyCoder follows the Conventional Commits specification for commit messages. Our release process is fully automated:

  1. Commit your changes following the conventional commits format
  2. Create a PR and get it reviewed and approved
  3. When merged to main, our CI/CD pipeline will:
    • Determine the next version based on commit messages
    • Generate a changelog
    • Create a GitHub Release
    • Tag the release
    • Publish to NPM

For more details, see the Contributing Guide.

Browser Automation

MyCoder uses Playwright for browser automation, which is used by the sessionStart and sessionMessage tools. By default, Playwright requires browsers to be installed separately via npx playwright install.

System Browser Detection

MyCoder now includes a system browser detection feature that allows it to use your existing installed browsers instead of requiring separate Playwright browser installations. This is particularly useful when MyCoder is installed globally.

The system browser detection:

  1. Automatically detects installed browsers on Windows, macOS, and Linux
  2. Supports Chrome, Edge, Firefox, and other browsers
  3. Maintains headless mode and clean session capabilities
  4. Falls back to Playwright's bundled browsers if no system browser is found

Configuration

You can configure the browser detection in your mycoder.config.js:

export default {
  // Other configuration...

  // System browser detection settings
  browser: {
    // Whether to use system browsers or Playwright's bundled browsers
    useSystemBrowsers: true,

    // Preferred browser type (chromium, firefox, webkit)
    preferredType: 'chromium',

    // Custom browser executable path (overrides automatic detection)
    // executablePath: null, // e.g., '/path/to/chrome'
  },
};

Contributing

Please see CONTRIBUTING.md for details on how to contribute to this project.

License

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