Skip to main content

A visual terminal companion for Claude Code — animated isometric 2.5D office with AI engineers working

Project description

   _____ _                 _        _           _
  / ____| |               | |      | |         | |
 | |    | | __ _ _   _  __| | ___  | |     __ _| |__
 | |    | |/ _` | | | |/ _` |/ _ \ | |    / _` | '_ \
 | |____| | (_| | |_| | (_| |  __/ | |___| (_| | |_) |
  \_____|_|\__,_|\__,_|\__,_|\___| |______\__,_|_.__/

ClaudeLab

A visual terminal companion for Claude Code. Run it in a tmux pane or a second terminal and watch an isometric 2.5D office of AI "engineers" working while Claude Code edits your code, runs tests, and debugs issues.

Zero dependencies. Pure Python + curses. Works on any Linux terminal with truecolor or 256-color support.

Rendering Modes

Mode Style Requirements
Isometric (default) 2.5D diamond-tile office, brick walls, depth-sorted furniture Truecolor or 256-color terminal
Voxel Half-block pixel art, flat perspective Truecolor or 256-color terminal
Sixel High-res pixel graphics (4x resolution) Sixel-capable terminal (e.g. foot, mlterm)
ASCII Classic text-mode office Any terminal

The default auto mode selects isometric for capable terminals, falling back to ASCII.

Features

  • 6 animated scenes that change based on what Claude Code is doing:

    • Thinking -- agent sits with animated thought bubbles cycling through dots, question marks, and lightbulbs
    • Coding -- two agents type at desks with scrolling code on isometric monitors
    • Debugging -- red-tinted office with whiteboard error diagrams, agents point and examine bugs
    • Running -- control panel with LED grid, rotating gears, and progress bar on the isometric floor
    • Building -- conveyor belt with animated rollers carries colored code blocks across diamond tiles
    • Idle -- agent drinks coffee with rising steam while another leans back and chats
  • Dynamic scaling -- the isometric office grid scales to fill your terminal, from 40 to 200+ columns

  • Day/night cycle -- the office window reflects real system time

  • Activity detection via Claude Code hooks (primary), JSONL log watching (secondary), and inotify filesystem monitoring (tertiary)

  • Smooth animation at configurable FPS (default 8)

  • Terminal resize handled gracefully

Quick Start

pip install claudelab
claudelab install

That's it. The install command auto-detects the hook script, configures Claude Code hooks in ~/.claude/settings.json, and verifies everything works. No manual JSON editing needed.

Or install from source:

git clone https://github.com/ovexro/claudelab.git
cd claudelab
pip install -e .
claudelab install

Usage

Basic

Open a second terminal (or a tmux pane) and run:

claudelab

Then use Claude Code in your main terminal as usual. ClaudeLab detects the activity and animates the matching scene.

Demo Mode

To see all scenes cycle through without needing Claude Code:

claudelab --demo

tmux Setup

tmux new-session -s work
tmux split-window -h 'claudelab'

CLI Options

Flag / Command Default Description
claudelab install Auto-configure Claude Code hooks
claudelab doctor Diagnose setup issues
claudelab uninstall Remove hooks cleanly
--renderer {auto,iso,sixel,voxel,ascii} auto Rendering mode
--theme {dark,light} dark Colour theme
--fps N 8 Animation frame rate (1-30)
--demo off Cycle through all scenes automatically

Troubleshooting

If something isn't working, run the built-in diagnostics:

claudelab doctor

It checks hook configuration, permissions, state file freshness, Python version, and terminal capabilities — and tells you exactly what to fix.

How It Works

ClaudeLab runs a curses-based render loop at ~8 FPS. Each frame:

  1. Detect the current activity (hook state file, JSONL logs, or inotify)
  2. Select the matching scene (thinking, coding, debugging, running, building, idle)
  3. Render the isometric office with the scene's animation frame into the terminal

The isometric office dynamically sizes its diamond-tile floor grid to fill the terminal. Brick-textured walls, depth-sorted furniture (desks, monitors, chairs, server rack, plant), and character sprites are drawn back-to-front. Each scene adds its own overlays -- thought bubbles, conveyor belts, control panels, debug whiteboards, and more.

Activity Detection Priority

  1. Hook state file (/tmp/claudelab.state) -- written by the hook script on every tool use. Most reliable.
  2. JSONL log scanning -- parses Claude Code's log files for recent tool use entries.
  3. inotify -- watches the working directory for filesystem changes and infers activity.
  4. Timeouts -- falls back to "thinking" after 10s, "idle" after 60s.

Contributing

Contributions welcome! Ideas:

  • New scenes or agent animations
  • More furniture / office decorations
  • Windows / macOS support
  • Configurable office layouts
  • Multiple character appearances
git clone https://github.com/ovexro/claudelab.git
cd claudelab
pip install -e .
claudelab --demo

License

MIT -- see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claudelab-0.1.6.tar.gz (60.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claudelab-0.1.6-py3-none-any.whl (74.2 kB view details)

Uploaded Python 3

File details

Details for the file claudelab-0.1.6.tar.gz.

File metadata

  • Download URL: claudelab-0.1.6.tar.gz
  • Upload date:
  • Size: 60.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for claudelab-0.1.6.tar.gz
Algorithm Hash digest
SHA256 b90ef9010b6e76a737756c520cf9863226aa8a9ab3e14b1b74999346cee934e5
MD5 bd8ab709f0c6390c140cc504780ca13c
BLAKE2b-256 c4239096c4f840a8d6a4edae8ba117e0fb0b2b2a10b3f71dabf7ed339a108d0c

See more details on using hashes here.

File details

Details for the file claudelab-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: claudelab-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 74.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for claudelab-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7de29ff9cfe326f056721bddeca0df663c5f16c4933e08addaa385c30c0765dd
MD5 c1ad5d1d74dffe3e044af5fa5a6e23ed
BLAKE2b-256 d463ec5617cb6085153abe9b253d3797a4d3a87abb5a2ce1493305588dbe70e8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page