docs: README, INSTALL.md (AI-guided setup)
This commit is contained in:
+245
@@ -0,0 +1,245 @@
|
||||
# Kitty-Workbench — AI-Guided Setup
|
||||
|
||||
You are an AI assistant helping a user set up Kitty-Workbench. Follow these steps in order. Do not ask the user what they have — detect it yourself. Present options conversationally.
|
||||
|
||||
## Step 0: Clone and Install
|
||||
|
||||
If the repo is not already cloned locally, clone it:
|
||||
|
||||
```bash
|
||||
git clone <repo-url>
|
||||
cd kitty-workbench
|
||||
```
|
||||
|
||||
Install the package:
|
||||
|
||||
```bash
|
||||
pip install .
|
||||
```
|
||||
|
||||
If `pip install` fails due to PEP 668, use:
|
||||
|
||||
```bash
|
||||
pip install --break-system-packages .
|
||||
```
|
||||
|
||||
Verify it installed:
|
||||
|
||||
```bash
|
||||
kitty-workbench --version
|
||||
```
|
||||
|
||||
If already installed, skip to Step 1.
|
||||
|
||||
## Step 1: Detect the Environment
|
||||
|
||||
Run these commands and collect the output. Do NOT ask the user — just run them:
|
||||
|
||||
```bash
|
||||
# Python
|
||||
python3 --version
|
||||
|
||||
# Platform
|
||||
uname -s -r -m
|
||||
|
||||
# Terminal environment
|
||||
echo "TERM_PROGRAM=$TERM_PROGRAM"
|
||||
echo "KITTY_PID=$KITTY_PID"
|
||||
echo "TMUX=$TMUX"
|
||||
echo "VTE_VERSION=$VTE_VERSION"
|
||||
|
||||
# Available tools
|
||||
which kitty 2>/dev/null && echo "kitty: found" || echo "kitty: not found"
|
||||
which tmux 2>/dev/null && echo "tmux: found" || echo "tmux: not found"
|
||||
which chafa 2>/dev/null && echo "chafa: found" || echo "chafa: not found"
|
||||
which img2sixel 2>/dev/null && echo "img2sixel: found" || echo "img2sixel: not found"
|
||||
|
||||
# Access topology — is the user local, SSH'd, or on remote desktop?
|
||||
echo "SSH_CONNECTION=$SSH_CONNECTION"
|
||||
echo "DISPLAY=$DISPLAY"
|
||||
echo "WAYLAND_DISPLAY=$WAYLAND_DISPLAY"
|
||||
who am i 2>/dev/null
|
||||
|
||||
# Kitty remote control (only if kitty is installed)
|
||||
kitty @ ls 2>&1 | head -1 || true
|
||||
```
|
||||
|
||||
## Step 2: Evaluate Options
|
||||
|
||||
Based on what you detected, determine:
|
||||
|
||||
### Access topology
|
||||
|
||||
- **Native** (no `$SSH_CONNECTION`, has `$DISPLAY` or `$WAYLAND_DISPLAY`): All backends work.
|
||||
- **Remote desktop** (RDP/VNC session detected): All backends work — same as native.
|
||||
- **SSH** (`$SSH_CONNECTION` is set): Only **tmux** works reliably for pane splitting. Kitty splits won't work (`kitty @` can't reach the user's local kitty instance). The plain backend can't open windows on the user's local machine.
|
||||
|
||||
### Available backends
|
||||
|
||||
| Backend | Requirement | Check |
|
||||
|---------|------------|-------|
|
||||
| **kitty** | `$KITTY_PID` set, or `kitty` on PATH + `kitty @ ls` succeeds | Best image quality, native splits. Only works for native/remote-desktop users. |
|
||||
| **tmux** | `$TMUX` set, or `tmux` on PATH | Good image quality (sixel), works over SSH. Recommended default. |
|
||||
| **plain** | Always available | Opens TUI in a separate terminal window. No splits. |
|
||||
|
||||
### Image protocol
|
||||
|
||||
| Protocol | Check |
|
||||
|----------|-------|
|
||||
| **kitty graphics** | Only if using kitty backend |
|
||||
| **sixel** | `$TERM_PROGRAM` is one of: iTerm2, WezTerm, foot, contour, xterm, mlterm, mintty. Or `$VTE_VERSION` >= 7600 (GNOME Terminal 46+). Or `$TERM` contains "xterm-kitty". |
|
||||
| **ASCII art** | `chafa` on PATH. Always works as fallback. |
|
||||
| **none** | Plain text placeholder with file path. |
|
||||
|
||||
## Step 3: Present Options
|
||||
|
||||
Based on your evaluation, present the user's options conversationally. Be specific about what they have and what each option gives them.
|
||||
|
||||
**If over SSH:**
|
||||
Tell the user tmux is their only practical option. If tmux is installed, recommend it. If not, recommend installing it (`apt install tmux` / `brew install tmux`). Mention that images will work if their local terminal supports sixel.
|
||||
|
||||
**If native/remote desktop with tmux available:**
|
||||
Present tmux as the ready-now option. Optionally mention kitty as an upgrade for better image quality if they want to install it later.
|
||||
|
||||
**If native/remote desktop in kitty:**
|
||||
Great — they get the best experience. Just need `allow_remote_control yes` in kitty.conf.
|
||||
|
||||
**If no tmux and no kitty:**
|
||||
Recommend installing tmux (simplest) or kitty (best experience). Plain backend works but has no split panes.
|
||||
|
||||
## Step 4: Execute Setup
|
||||
|
||||
Based on what the user chose:
|
||||
|
||||
1. **Create project directory:**
|
||||
```bash
|
||||
mkdir -p ~/Kitty-Workbench
|
||||
```
|
||||
|
||||
2. **If kitty backend chosen**, ensure remote control is enabled:
|
||||
```bash
|
||||
# Check if already configured
|
||||
grep -q "allow_remote_control" ~/.config/kitty/kitty.conf 2>/dev/null
|
||||
```
|
||||
If not configured, add:
|
||||
```bash
|
||||
mkdir -p ~/.config/kitty
|
||||
echo "allow_remote_control yes" >> ~/.config/kitty/kitty.conf
|
||||
```
|
||||
|
||||
3. **Optional: install chafa** for ASCII art image fallback:
|
||||
- Linux: `sudo apt install chafa` or `sudo pacman -S chafa`
|
||||
- macOS: `brew install chafa`
|
||||
|
||||
## Step 5: Configure MCP
|
||||
|
||||
Add the Kitty-Workbench MCP server to the user's AI CLI configuration.
|
||||
|
||||
**Detect which CLI they're using** by checking for config files:
|
||||
|
||||
```bash
|
||||
ls ~/.claude/settings.json 2>/dev/null && echo "Claude Code detected"
|
||||
ls ~/.gemini/settings.json 2>/dev/null && echo "Gemini CLI detected"
|
||||
ls ~/.config/gemini/settings.json 2>/dev/null && echo "Gemini CLI detected (alt path)"
|
||||
```
|
||||
|
||||
**For Claude Code**, add to `~/.claude/settings.json` under `mcpServers`:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"kitty-workbench": {
|
||||
"command": "kitty-workbench",
|
||||
"args": ["mcp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**For Gemini CLI**, add to the appropriate MCP config.
|
||||
|
||||
**For other/unknown CLIs**, print the MCP configuration JSON and tell the user to add it to their CLI's MCP settings. The server command is `kitty-workbench mcp` on stdio transport.
|
||||
|
||||
## Step 6: Smoke Test
|
||||
|
||||
Verify everything works:
|
||||
|
||||
```bash
|
||||
# Check the CLI works
|
||||
kitty-workbench list
|
||||
|
||||
# Check the project directory exists
|
||||
ls ~/Kitty-Workbench/
|
||||
```
|
||||
|
||||
If the user is in tmux or kitty right now, you can also test the full flow:
|
||||
- Call `kitt_open` with a test project
|
||||
- Verify the TUI pane appears
|
||||
- Call `kitt_close` to clean up
|
||||
|
||||
If not in the right terminal environment, skip the live test — it will work when they start a session later.
|
||||
|
||||
## Step 7: Write START.md
|
||||
|
||||
Write `~/Kitty-Workbench/START.md` — a personalized startup guide for this user's environment.
|
||||
|
||||
Include:
|
||||
- Setup date
|
||||
- Detected backend and image protocol
|
||||
- Platform details
|
||||
- MCP configuration that was applied (which CLI, what config)
|
||||
- How to start a session (step by step for their specific setup)
|
||||
- What optional packages are installed
|
||||
- How to upgrade to a better backend later (if applicable)
|
||||
|
||||
Example:
|
||||
|
||||
```markdown
|
||||
# Kitty-Workbench — Start Guide
|
||||
|
||||
**Setup date:** 2026-03-29
|
||||
**Backend:** tmux
|
||||
**Image protocol:** sixel
|
||||
**Platform:** Linux (Ubuntu 24.04)
|
||||
|
||||
## Starting a Session
|
||||
|
||||
1. Open a tmux session (or use an existing one)
|
||||
2. Start your AI CLI
|
||||
3. Tell the AI to open a Kitty-Workbench project — it will call `kitt_open` and the display pane appears as a tmux split
|
||||
|
||||
## MCP Configuration
|
||||
|
||||
Configured in `~/.claude/settings.json`:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"kitty-workbench": {
|
||||
"command": "kitty-workbench",
|
||||
"args": ["mcp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Environment
|
||||
|
||||
- Python: 3.11.4
|
||||
- Textual: 0.79.0
|
||||
- tmux: 3.4
|
||||
- sixel: supported (GNOME Terminal 46)
|
||||
- chafa: installed
|
||||
|
||||
## Upgrading
|
||||
|
||||
To switch to kitty backend later:
|
||||
1. Install kitty
|
||||
2. Add `allow_remote_control yes` to `~/.config/kitty/kitty.conf`
|
||||
3. Launch your AI CLI from within kitty
|
||||
4. Backend auto-detects — no config change needed
|
||||
```
|
||||
|
||||
Adapt the content to match what you actually detected and configured. This file is for future AI sessions to read, so be precise.
|
||||
|
||||
## Done
|
||||
|
||||
Tell the user setup is complete and how to start their first session.
|
||||
Reference in New Issue
Block a user