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.3.tar.gz (59.6 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.3-py3-none-any.whl (73.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: claudelab-0.1.3.tar.gz
  • Upload date:
  • Size: 59.6 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.3.tar.gz
Algorithm Hash digest
SHA256 409db7693c0a28e59e4266a714cec8eeb430c89e32e12e8c2167f93bc90d654b
MD5 d9a8993758e6d31650d608c4de89cb51
BLAKE2b-256 f2e02ff6b2967397e86f6dd571d6df9d97803fc25f5f3785c9825346ef18ca72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: claudelab-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 73.0 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6c6131a6afba7a3ad7f13e030fe76e32c5c3e57f839d40ba074f7d60bef838f4
MD5 f11632fa253852b5dfedbf81757708c4
BLAKE2b-256 1ffa94ebdb944be5d824d3c32c5a421b70c4b13f23730b1b13110dcfd2e72ffc

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