Using the IntelliJ & PyCharm plugin

IntelliJ and PyCharm use the same plugin. From here on, we'll refer to both editors as just “IntelliJ”. In this article, you'll learn how to access all the features the IntelliJ plugin has to offer.


The only prerequisites are that you have Kite Engine running and the IntelliJ plugin installed. If you don't have the IntelliJ plugin installed, you can learn how to do so here.

Note: If you installed the IntelliJ plugin while IntelliJ was already running, you'll need to restart IntelliJ for the plugin to activate.

Checking the status of Kite

If Kite is installed properly, you should see a small Kite logo at the bottom right corner of the IntelliJ window. Hovering your mouse over this icon will tell you the current status of Kite.

There are a handful of possible states Kite can be in, as described in the following table:

Icon Message Description
Kite: Not Installed Kite Engine is not installed.
Kite: Not running Kite Engine is not running.
Kite: Not logged in Kite Engine is running, but you need to log in.
Kite: Syncing Kite Engine is syncing your files to the cloud.
Kite: Indexing The Kite backend is analyzing your uploaded code.
Kite: Ready Kite is ready to go - start coding!
Kite: Ready Kite is ready but inactive for your current file. This may be because the programming language is unsupported or because the file is not whitelisted.
Note: If you're running Kite for the first time, it may take several minutes for Kite to finish syncing and indexing your codebase.

Clicking on the icon will open a menu that will allow you to access your settings or get information about your account.


If you start writing code in an un-whitelisted directory, the plugin will prompt you to whitelist the directory so that Kite can work properly. You can click on the “More” link to see more options.

The rightmost link will whitelist the suggested directory. In this example, the root / directory would be whitelisted. Otherwise, you can click “Browse...” to choose a different directory. Clicking on “Settings” will open your settings in the browser and also give you the option to suppress the file or the directory.

Clicking on “Ignore this file” will automatically suppress the suggested directory. In this example, the root / directory would be suppressed.

Writing code and accessing features


To start, open a Python file in a whitelisted directory. Make sure that this file has been saved with a .py extension. Now type the following code:

import j # Cursor stops behind the "j"

A list of suggested completions should automatically appear.

Kite can provide autocompletions for Python keywords, name expressions or attribute expressions. The example above illustrates a name expression completion. An example of an attribute completion would be:

import json
json.d # Cursor stops behind the "d"

In the case of name and attribute completions, Kite will also provide the type of value represented by the completion (e.g. module or function) as well as documentation if available.

Function signatures

Continuing with the example code above, complete the function call to by typing the opening and closing parentheses.

import json
json.dumps() # Cursor is in between "(" and ")"

Kite should show you information about how to call json.dumps.

The top half of the UI shows the arguments that the function accepts. Keyword arguments will also have their default types shown. You may also click on the **kw link to show the arguments that are found in the keyword arguments dictionary.

As you type, Kite will show you which argument you are currently focused on.

If you have a Kite Pro subscription, the bottom half of the UI will show you the “Popular Patterns” associated with json.dumps. Each pattern represents a common way other programmers use the function, ranked from most popular to least popular using all the open source code available on GitHub. If you are calling a function that you have defined locally, Kite will extract patterns from your codebase directly instead of GitHub.

Expanding information

Kite also provides a UI to view more information about a Python identifier. There are a number of ways to access this UI. By default, if you hover your mouse over the identifier, you can click on the “more” link to get more information.

You may also use a keyboard shortcut to expand information ( ctrl + j for macOS and ctrl + q for Windows). When triggered, the expanded information shows up as a popup.

You can scroll vertically within the popup to see all the information. The information shown contains:

  • Information about the value
    • In this case, the panel shows information about the function signature for json.dumps
    • However, the information here varies depending on what the value is e.g. module, type, instance, etc.
  • Summary
    • This is the documentation for the value
  • Examples
    • Curated code examples that show you how to use the value
  • Links
    • Links to popular questions about this value on StackOverflow

Jump to definition

You can also jump to the definition of a module, class or function from your local codebase using Kite. The hover UI provides a def link to do so.

The popup with expanded information also contains a link to the definition.