// the find
codota/tabnine-intellij
Jetbrains IDEs client for TabNine. Compatible with all IntelliJ-based IDEs. https://plugins.jetbrains.com/plugin/12798-tabnine
This is the JetBrains plugin client for Tabnine, the AI code completion service. It's a thick client that ships a local binary (downloaded at runtime) and communicates with it via a JSON protocol, plus a bundled web-based chat panel. Developers who are already on Tabnine Pro or Enterprise and use IntelliJ-family IDEs are the target audience — there's not much here for anyone evaluating whether to adopt Tabnine in the first place.
The binary communication layer is well-structured: there's a clear abstraction boundary between the IDE plugin and the local inference binary, with typed request/response objects and proper exception hierarchies (BinaryCannotRecoverException, BinaryRequestTimeoutException, etc.). The inline completion rendering is non-trivial — custom inlay rendering with block and inline variants handles multi-line suggestions correctly, which most plugin authors get wrong. The CI setup is thorough: separate workflows for alpha/beta/production channels, EAP compatibility checks, CodeQL analysis, and an uninstall integrity check that most plugins don't bother with. The channel-based config system (alpha/beta/production/self_hosted) is a clean way to ship the same plugin binary across environments without build-time flags.
The codebase is a mixed Java/Kotlin mess with no clear migration strategy — you'll find Java files calling Kotlin and vice versa throughout Common/, which makes following any non-trivial code path harder than it needs to be. The chat UI is a bundled web app extracted at runtime (ChatBundleExtractor), which means debugging chat issues requires hunting across two different codebases and the version coupling is opaque. Last push was March 2024, which is a long time for a product competing with Copilot and Cursor — the repo feels like it's being maintained rather than actively developed. The plugin is useless without a Tabnine account and backend; there's no offline or self-evaluation path, so you can't assess the actual quality of completions from the source code alone.