NotBadAI IDE

October 9, 2025 · View on GitHub

Developer

Follow these steps to set up the development environment.

  1. Initialize and update git submodules:
 git submodule update --init --recursive
  1. Create an env.ts file in ui/src/ and add the following configuration:
export const TRANSCRIPTION_API_ENDPOINT: string = ''
  1. install the packages
npm install
  1. To compile frontend assets and automatically recompile when changes are made:
make watch

To build and package the Electron application into a distributable format run:

make package

The packaged application will be available in the dist/desktop/ directory.

Code Editor

The code editor supports shortcuts similar to VS Code. Here’s a list of the popular ones.

Terminal

Multiple terminals are supported. To reset a terminal, including clearing its display and scrollback history, right-click the terminal tab and select Clear Buffer.

Extensions

Extensions are Python scripts that enable interactions with LLMs, such as chat, code apply, autocomplete, gray completions etc. You can also create your own extensions, which the editor will manage and execute (explained in a later section).

Extension Errors

If an extension encounters any errors during execution, they will appear under ExtensionsErrors. It will provide details such as error messages and stack traces to help you debug and resolve the issue.

Running Extensions

Extensions that are currently running will be listed under ExtensionsRunning. From this tab, you can:

  • Terminate any active extension.
  • Monitor progress, as extensions that send progress updates will display a progress bar here.

Extension Updates and Notifications

  • If an extension sends an update, it will appear under ExtensionsUpdates.
  • If an extension sends a notification, it will be shown under ExtensionsNotifications.

Developing Your Own Extensions

To use your own set of extensions, create a directory named extensions at the root level of your project. All Python modules in this directory will be automatically added to the Python path, making them available for use by the IDE.

The easiest way to get started is to copy the default extensions into your project (top level) and customize it as needed.

1. config.yaml

All extension-related settings are defined in config.yaml. From this file, you can configure the main entry file and other settings for each extension.

Any errors in the config.yaml file will be displayed in the Extensions tab.

config.yaml Priority

By default, the IDE uses the system-wide configuration located at Extensions → Management.

You can override these defaults by creating a config.yaml file in your project's root-level extensions/ directory. This local configuration takes precedence over system-wide settings, enabling per-project customization and easier extension development.

Extension Settings

You can pass custom settings to extensions through the settings section in config.yaml. Settings are organized by extension name and can contain any configuration parameters your extension needs:

settings:
  extension1:
    parameter1: "value1"
    parameter2: "value2"
  extension2:
    parameter1: "value1"
    parameter2: "value2"

2. Extension API

The ExtensionAPI defines:

  • The data passed from the editor to the extension.
  • The utility functions available for extensions to interact with the editor.
  • Can be imported in your extension using from notbadai_ide import api

Every extension must include a function with the following definition:

from notbadai_ide import api

def start():
    pass

This function is executed by the editor when the extension runs.

3. Debug Logs

During extension development, you can add debug logs using the log function provided by the ExtensionAPI.

These logs are generated each time the extension runs.

To view the logs:

  • Go to ViewToggle Developer Tools

  • Or use the shortcut Shift+Cmd+I

Setting Up Voice

Server Setup

We’ve tested faster-whisper-server as the backend for transcription.
It’s quite fast and easy to set up.

  1. Run the transcription server.
  2. Install the IDE with voice support enabled:
curl -sSL https://raw.githubusercontent.com/notbadai/ide/main/install.sh | bash -s -- --voice "<URL>"