Skip to content

juspay/kolu

Repository files navigation

kolu icon

kolu

Web-based Agentic Development Environment (ADE) built on terminals.

Named after கோலு, the tradition of arranging figures on tiered steps.

Usage

nix run github:juspay/kolu       # serve on 0.0.0.0:7681
nix run github:juspay/kolu -- --host 127.0.0.1 --port 8080  # custom bind

Features

  • Multi-terminal — create, switch, and kill terminals from a collapsible sidebar
  • Git-aware — header shows repo name, branch, and working directory (auto-detected via OSC 7)
  • Command paletteCmd/Ctrl+K to search terminals, switch themes, and run actions
  • 200+ themes — color schemes from iTerm2-Color-Schemes, switchable at runtime
  • Sub-terminalsCtrl+`` toggles a bottom split panel per terminal for dev servers, lazygit, etc. Ctrl+Shift+``adds more tabs,Ctrl+PageDown/Up cycles
  • Keyboard-drivenCmd+T new terminal, Cmd+1-9 jump, Cmd+Shift+[/] cycle, Cmd+/ shortcuts help
  • Clipboard & image pasteCtrl+V pastes images into Claude Code via server-side clipboard shims
  • WebGL rendering — xterm.js with GPU acceleration, canvas fallback
  • Clickable URLs, find in buffer, Unicode 11, inline images (sixel, iTerm2, kitty)
  • Font zoomCmd/Ctrl +/-, persisted across sessions
  • Lazy attach — late-joining clients receive serialized screen state (~4KB) instead of replaying raw buffer

Architecture

pnpm monorepo, three packages:

Package Stack
common/ oRPC contract + Zod schemas
server/ Hono + node-pty + @xterm/headless
client/ SolidJS + xterm.js + Tailwind CSS v4

All communication over a single WebSocket (/rpc/ws) via oRPC. Terminal I/O, lifecycle, CWD tracking, and activity detection are typed RPC procedures with async generator streaming.

Development

Requires Nix with flakes enabled.

nix develop     # enter devshell
just dev        # run server + client with hot reload
just test       # e2e tests (full nix build)

CI

just ci builds all flake outputs on x86_64-linux and aarch64-darwin in parallel, runs e2e tests, and posts GitHub commit statuses. See ci/ for details and reuse instructions.

just ci              # full CI run
just ci::protect     # set branch protection
just ci::_summary    # check current status

Deployment (NixOS + home-manager)

A home-manager module runs kolu as a systemd user service:

{
  imports = [ kolu.homeManagerModules.default ];
  services.kolu = {
    enable = true;
    package = kolu.packages.${system}.default;
    host = "127.0.0.1"; # default
    port = 7681;         # default
  };
}

See nix/home/example/ for a full configuration with a VM test.

About

WIP: Web-based Agentic Development Environment (ADE) built on terminals

Resources

Stars

Watchers

Forks

Releases

No releases published