Skip to content
/ kaja Public

A code-based UI for exploring and calling gRPC and Twirp APIs.

License

Notifications You must be signed in to change notification settings

wham/kaja

Repository files navigation

Kaja

Explore and call your APIs with code

A code-based UI for gRPC and Twirp APIs with full IntelliSense.
Write TypeScript to construct requests, call services, and inspect responses — no forms, no clicking through fields.

Live Demo · Website · Docker Hub

Latest Release Docker Pulls License

Kaja — calling a gRPC service with TypeScript

Features

  • Code-based — Write TypeScript to call your APIs. Full IntelliSense with autocomplete for services, methods, and message fields.
  • gRPC & Twirp — Native support for both protocols. Reads your .proto files or uses gRPC server reflection.
  • macOS & Docker — Available as a macOS desktop app or a Docker container for any environment.

Quick Start

Docker

docker run --pull always --name kaja -d -p 41520:41520 \
    -v /my_app/proto:/workspace/proto \
    -v /my_app/kaja.json:/workspace/kaja.json \
    --add-host=host.docker.internal:host-gateway kajatools/kaja:latest

Then open http://localhost:41520.

macOS

Download the latest Kaja.dmg from GitHub Releases.

Configuration

On macOS, projects are configured through the UI. The configuration is stored at ~/.kaja/kaja.json.

With Docker, create a kaja.json file and mount it into the container:

{
  "projects": [
    {
      "name": "my_app",
      "protocol": "RPC_PROTOCOL_TWIRP",
      "url": "http://host.docker.internal:41522"
    }
  ]
}

Project options

Option Description
name Display name.
protocol RPC_PROTOCOL_TWIRP or RPC_PROTOCOL_GRPC.
url URL where the service is running.
protoDir Path to .proto files. Required unless useReflection is enabled.
useReflection Use gRPC server reflection instead of local proto files. Only works with gRPC.
headers Headers sent with each request (e.g. {"Authorization": "Bearer xxx"}). For gRPC, sent as metadata.

Docker arguments

Argument Description
--pull always Always pull the latest image. Kaja is updated frequently.
--name kaja Name the container for easy management.
-d Run in detached mode.
-p 41520:41520 Map the container port. Kaja listens on 41520 by default.
-v .../proto:/workspace/proto Mount your proto_path into the container.
-v .../kaja.json:/workspace/kaja.json Mount your configuration file.
--add-host=host.docker.internal:host-gateway Access host services from the container.

Development

The development scripts require Go and Node.js installed. If not installed, they will offer to install them for you via Homebrew.

  • Run in local server: scripts/server
  • Run in Docker: scripts/docker
  • Run the desktop app: scripts/desktop
  • Test UI: (cd ui && npm test)
  • TSC UI: (cd ui && npm run tsc)
  • Test server: (cd server && go test ./... -v)
  • Update demo protos: scripts/demo-protos (The demo services are deployed via kaja/tools/website)

About

A code-based UI for exploring and calling gRPC and Twirp APIs.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 7