vibecli

command module
v0.1.96 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2026 License: GPL-2.0, GPL-3.0 Imports: 20 Imported by: 0

README

vibecli

Image Size Platforms Test coverage Mutation OpenSSF Best Practices OpenSSF Scorecard SBOM

A minimal browser terminal for the Kiro CLI — kiro-cli in a tab, nothing more.

What it is

Vibecli is a single Go binary that serves a static web UI and brokers a PTY for one kiro-cli process per session. Unlike its sister app vibekit, there is no ACP bridge, no chat protocol, and no chat-history persistence — the browser drives kiro-cli's own TUI directly through the terminal stream, the same as an SSH session. Terminal state lives only in the server's in-memory VT buffer and is replayed to the browser on reconnect.

Features

  • Raw kiro-cli TUI in the browser — full terminal UI, reconnect with screen + scrollback replay (survives sleep/network blips).
  • Persistent state on a single /config bind mount: kiro-cli auth/tokens, tools, and settings.
  • Pinned kiro-cli — version + sha256 are Renovate-tracked in entrypoint.sh; bumps land via image rebuild (auto-update disabled for reproducibility).

Run it

# compose.yaml
services:
  vibecli:
    image: ghcr.io/cplieger/vibecli:latest
    ports:
      - "9848:9848"
    volumes:
      - "/opt/appdata/vibecli:/config"
      - "/opt/appdata/vibecli/workspace:/workspace"  # your repos
    restart: unless-stopped

The container runs as root by design so kiro-cli, git, and gh work over SSH; running as a non-root UID breaks them. The entrypoint creates /config and /workspace on first boot, so there's no host-side setup; files written there are root-owned on the host (chown them to your user to reach the checkouts from outside the container). See CONTRIBUTING.md for the passwd/uid rationale.

kiro-cli is downloaded and pinned on first boot (it is not redistributed in the image, per the AWS Customer Agreement). Open http://localhost:9848, authenticate kiro-cli, and you have a terminal.

Tools

The image ships kiro-cli, git, and base utilities only. Optional developer tools (language servers for Go/Python/TypeScript, the GitHub CLI, golangci-lint) are opt-in per host: there's no management UI, so you enable them by editing /config/tools.json, setting "enabled": true on the entries you want, and restarting the container. They install into /config/tools/ and persist across restarts.

Security

Network-exposed: put it behind an authenticating reverse proxy — a browser tab here is a shell with filesystem access to /workspace. Observability is slog-only (structured access log; no metrics endpoint). Debian base (a shell + the kiro-cli subprocess are required). Images are published with cosign signatures and SBOM attestations.

Disclaimer

This project is built with care and follows security best practices, but it is intended for personal / self-hosted use. No guarantees of fitness for production environments. Use at your own risk.

This project was built with AI-assisted tooling using Claude Opus and Kiro. The human maintainer defines architecture, supervises implementation, and makes all final decisions.

License

GPL-3.0. See LICENSE.

Documentation

Overview

Package main is vibecli — a browser terminal wrapped around kiro-cli. Each /ws connection exec's `kiro-cli chat` directly in a PTY. Server-side state lives in the web-terminal-engine VT screen buffer (its vt package): on reconnect, the current cell snapshot is replayed to the client. No external multiplexer.

Directories

Path Synopsis
internal
api
Package api holds the HTTP response helpers shared by the server.
Package api holds the HTTP response helpers shared by the server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL