kulala.nvim

May 31, 2026 · View on GitHub

Kulala Logo

kulala.nvim

Made with love GitHub release (latest by date) Discord

Main status

RequirementsInstallUsageHTTP File SpecKulala GH Action

A fully-featured 🤏 HTTP/GraphQL/gRPC/Websocket-client 🐼 interface 🖥️ for Neovim ❤️, that supports the Jetbrains .http spec (with full scripting support).

Kulala is swahili for "rest" or "relax."

It allows you to make HTTP requests from within Neovim.

demo

Features

Protocols: HTTP, gRPC, GraphQL, WebSocket, Streaming

Specs: HTTP File Spec and IntelliJ HTTP Client compliant

Variables: Environment, Document, Request, Dynamic, Prompt, http-client.env files

Importing and running requests from external *.http files

Importing and saving request/response data to/from external files

JS and Lua scripting: Pre-request, Post-request, Conditional, Inline, External

Authentication: Basic, Bearer, Digest, NTLM, OAuth2, Negotiate, AWS, SSL

Response formatting and live filtering

Assertions, automated testing and reporting

Built-in LSP completion and formatting

Import/export to/from Postman, OpenAPI, Bruno

CLI tooling and CI hooks

Scratchpad: for making requests

100% Compatibility with IntelliJ HTTP Client

Together with our standalone products Kulala Language Server and Kulala Formatter, we aim to provide the best REST Client experience on the web without leaving your favourite editor!

••

Kulala team loves feature requests and feedback, so if you have any ideas or suggestions, please let us know!
We'll be happy to implement them ❤️

Install

Warning

Requires Neovim 0.12+ and cURL.

See requirements.

Via lazy.nvim:

Configuration

require("lazy").setup({
  {
    "mistweaverco/kulala.nvim",
    keys = {
      { "<leader>Rs", desc = "Send request" },
      { "<leader>Ra", desc = "Send all requests" },
      { "<leader>Rb", desc = "Open scratchpad" },
    },
    ft = {"http", "rest", "javascript", "lua"},
    opts = {
      global_keymaps = false,
      global_keymaps_prefix = "<leader>R",
      kulala_keymaps_prefix = "",
    },
  },
})

Note

By default global keymaps are disabled, change to global_keymaps = true to get a complete set of key mappings for Kulala. Check the keymaps documentation for details.

See complete configuration options for more information.

Honorable mentions

rest.nvim

For getting this project started.

The actual state of rest.nvim as archived kicked off the development of kulala.nvim.

It's not archived anymore, but the state of the project at the time was a great motivation

curl.nvim

If you want a uncomplicated scratchpad for making HTTP requests, check out curl.nvim

Different to this project, but also a great option if you just want to make quick HTTP requests from within Neovim.

httpbin.org

For providing a great service for testing HTTP requests and making it in all the kulala examples.

Thanks for making it easy to test and develop this plugin.