Kulala is swahili for "rest" or "relax."
A straightforwarded, powerful, and extendable HTTP client library. It powers the Kulala toolchain, and can be used as a standalone library.
A RESTful API is a web service architecture that adheres to specific constraints:
- statelessness,
- uniform interface,
- client-server separation
Typically using HTTP methods like GET, POST, PUT, and DELETE.
It uses standard web protocols to enable interoperability
between distributed systems.
- HTTP RESTful (1.0, 1.1, 2, 3)
- GraphQL (queries, mutations)
- Host Environment
- Document variables
- Request scoped variables
http-client.envfiles- Built-in support for kuba
Supports JavaScript, Lua, and TypeScript for:
- Pre-request
- Post-request
- Conditional
- Inline
- External
- Basic
- Bearer
- OAuth 2.0
Assertions, automated testing and reporting is compatible with the IntelliJ HTTP Client:
See the examples directory for usage examples.
Resolution order: KULALA_CURL_PATH (if set),
then a pinned copy under the user cache (for example on Linux: ~/.local/share/kulala-core/cache/curl/<platform>-<arch>/curl),
then curl on your PATH,
then a one-time download of a pinned static build (SHA-256 verified) into that cache.
You can override the data or cache root with KULALA_CORE_DATA_DIR / KULALA_CORE_CACHE_DIR.
- Published library (
dist/): the npm build sets__KULALA_EMBED_CURL__=false, so the package does not embed curl from the machine that rannpm publish. bun build --compile: runpackages/core/scripts/generate-vendored-curl.ts(optionally with--target=bun-…for cross-compiles) so the matching curl is present in the cache and embedded for that build, then compile with--define __KULALA_EMBED_CURL__=true.