https://github.com/cplieger/vibekit
Browser-based web UI for the Kiro CLI (chat, editor, git, terminal)
https://github.com/cplieger/vibekit
acp go golang homelab kiro-cli terminal typescript web-ui
Last synced: 4 days ago
JSON representation
Browser-based web UI for the Kiro CLI (chat, editor, git, terminal)
- Host: GitHub
- URL: https://github.com/cplieger/vibekit
- Owner: cplieger
- License: gpl-3.0
- Created: 2026-05-22T04:39:47.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-28T01:08:52.000Z (5 days ago)
- Last Synced: 2026-06-28T03:00:41.743Z (4 days ago)
- Topics: acp, go, golang, homelab, kiro-cli, terminal, typescript, web-ui
- Language: Go
- Size: 22.3 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# vibekit
[](https://github.com/cplieger/vibekit/pkgs/container/vibekit)


[](https://goreportcard.com/report/github.com/cplieger/vibekit)
[](https://github.com/cplieger/vibekit/actions/workflows/coverage.yml)
[](https://github.com/cplieger/vibekit/issues?q=label%3Agremlins-tracker)
[](https://www.bestpractices.dev/projects/13224)
[](https://scorecard.dev/viewer/?uri=github.com/cplieger/vibekit)
[](https://github.com/cplieger/vibekit/releases)
A browser-based front-end for the Kiro CLI — chat with an AI coding agent from any device, with shared sessions, a live terminal, an editor, and git/forge workflows.
## What it is
Vibekit is a Go web server that drives `kiro-cli` over the Agent Client Protocol (ACP). Each active chat runs one `kiro-cli acp` subprocess (the "bridge"); multiple devices and tabs on the same chat share it. The server is the single source of truth and the client is a pure projection of server state — every mutation goes through `POST /api/command` and is echoed back over SSE, so there is no optimistic local rendering and no multi-device drift.
## Features
- **Multi-device chat** — open the same conversation on phone and desktop; both stay in sync via SSE fan-out. One JSON file per chat, atomic writes, full history.
- **Streaming with reasoning** — token-by-token markdown rendering with a collapsible "thinking" block, batched for smoothness.
- **Live terminal** — a real PTY shell in the browser (powered by [`@cplieger/vterm`](https://github.com/cplieger/vterm)) plus per-agent command terminals.
- **Editor + diff + conflict views** — read/edit workspace files, view tool-call diffs, resolve merge conflicts inline.
- **Checkpoints** — a content-addressed per-file snapshot system with two-phase atomic restore and cross-chat conflict detection (independent of git).
- **Supervised mode** — a per-chat write-gate that stages every agent file write for per-hunk accept/reject/merge before it touches disk.
- **Subagent crew monitor**, **rewind** (branch a chat from a past turn), **MCP integration** (add/configure MCP servers from the UI), and **git + forge workflows** (GitHub/GitLab/Gitea via the first-party `gh`/`glab`/`tea` CLIs — PRs, issues, releases).
- **PWA** with web-push notifications for turn-complete and permission prompts.
## Run it
```yaml
# compose.yaml
services:
vibekit:
image: ghcr.io/cplieger/vibekit:latest
ports:
- "8080:8080"
volumes:
- ./config:/config # chats, kiro-cli auth/state, tools
- ./workspace:/workspace # your repos
restart: unless-stopped
```
`kiro-cli` is downloaded and pinned on first boot (it is not redistributed in the image, per the AWS Customer Agreement). On first launch, authenticate `kiro-cli` and start chatting.
## Security
Network-exposed: put it behind an authenticating reverse proxy — vibekit has its own password/OIDC auth, but it controls an agent with shell and filesystem access to `/workspace`. Web-push uses an SSRF-hardened transport. Debian base (a shell + the `kiro-cli` subprocess are required, so this is not distroless). Images are published with cosign signatures and SBOM attestations.
## License
GPL-3.0. See [LICENSE](LICENSE).