A fully-featured 🤏 HTTP-client 🐼 interface 🖥️ for Neovim ❤️.
  • Lua 91.8%
  • TypeScript 2.8%
  • JavaScript 2.4%
  • Shell 1.5%
  • Vim Script 0.4%
  • Other 1.1%
Find a file
github-actions[bot] 6656c9d332
docs: Auto-generate vimdocs + vimtags (#830)
Co-authored-by: YaroSpace <5670940+YaroSpace@users.noreply.github.com>
2026-02-08 21:40:37 +00:00
.github Weekly Updates (#810) 2026-01-24 09:55:51 +00:00
assets feat(assets): inline all possible assets (#343) 2025-01-28 18:50:25 +01:00
doc docs: Auto-generate vimdocs + vimtags (#830) 2026-02-08 21:40:37 +00:00
docs Weekly Updates (#819) 2026-02-08 21:39:43 +00:00
fmt@304929661c feat: CLI/CI, LSP formatter, JQ live filter, Client Credentials basic auth (#507) 2025-05-02 22:43:27 +02:00
lua Weekly Updates (#819) 2026-02-08 21:39:43 +00:00
schemas feat(parser): infer Content-Type from body, @secret metadata, create http-client.env + fixes (#621) 2025-07-20 14:26:44 +01:00
scripts Weekly Changes (#789) 2025-12-25 00:18:57 +00:00
syntax Weekly updates (#668) 2025-09-01 18:21:46 +03:00
tests Weekly Updates (#819) 2026-02-08 21:39:43 +00:00
.editorconfig WIP 2024-10-11 11:24:38 +02:00
.gitignore Weekly Updates (#752) 2025-11-11 09:20:59 +03:00
.gitmodules feat: CLI/CI, LSP formatter, JQ live filter, Client Credentials basic auth (#507) 2025-05-02 22:43:27 +02:00
.luacheckrc Add postprocessing of requests via metatags 2024-07-13 22:18:50 +02:00
.yamllint.yaml fix(ci): fix deploy docs workflow 2024-08-06 00:01:19 +02:00
CODE_OF_CONDUCT.md feat(docs): fix CODEOWNERS, add CODE_OF_CONDUCT & CONTRIBUTING (#264) 2024-10-06 14:42:13 +02:00
CODEOWNERS feat(docs): update codeowners (#359) 2025-02-08 15:49:25 +01:00
CONTRIBUTING.md fix(docs): typo in CONTRIBUTING (#265) 2024-10-06 14:46:58 +02:00
lazy.lua feat(parser): integrate kulala_http TS parser (#583) 2025-06-19 18:02:26 +01:00
LICENSE feat(docs): update LICENSE 2025-01-27 13:15:36 +01:00
logo.png feat: add logo 2024-06-26 18:33:07 +02:00
logo.svg feat: add logo 2024-06-26 18:33:07 +02:00
Makefile Weekly Changes (#789) 2025-12-25 00:18:57 +00:00
NEWS.md Weekly Updates (#819) 2026-02-08 21:39:43 +00:00
README.md feat(parser): integrate kulala_http TS parser (#583) 2025-06-19 18:02:26 +01:00
stylua.toml feat(parser): integrate kulala_http TS parser (#583) 2025-06-19 18:02:26 +01:00

Kulala Logo

kulala.nvim

Made with love GitHub release (latest by date) Discord

Main status Develop status

RequirementsInstallUsageHTTP File SpecKulala GH Action

A fully-featured REST Client Interface for Neovim.

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 will be happy to implement them ❤️

Install

Warning

Requires Neovim 0.10.0+ 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"},
    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.

This project was heavily inspired by the idea of having a REST client in Neovim.

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

curl.nvim

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

It's very different to this project, but it's a great tool for making HTTP requests from within Neovim and maybe just your cup of tea.

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.