Skip to main content

A self-hosted web dashboard for supervising multiple Claude Code AI sessions running in tmux

Project description

Lumbergh

A self-hosted web dashboard for supervising multiple Claude Code AI sessions running in tmux.

Think "micromanager for your AI interns."

Documentation & Screenshots

Lumbergh Dashboard

Features

  • Multi-session dashboard — view and manage multiple Claude Code sessions at a glance
  • Terminal streaming — interact with live terminal sessions via xterm.js + WebSockets
  • Git diff viewer — monitor live diffs, commit history, and branch switching as the AI works
  • Git graph — visualize commit history with an interactive graph
  • File browser — browse project files with syntax highlighting
  • AI chat — manager AI agent for reviewing and coordinating work
  • Todo lists & scratchpad — per-project notes and task tracking
  • Prompt templates — reusable prompts with mention/variable support
  • Shared files — share context across sessions
  • Settings — configurable AI providers and preferences
  • Mobile-friendly — responsive design for phones and tablets
  • PWA support — installable as a progressive web app

Quick Start

Install and run with one command:

uv tool install pylumbergh
lumbergh

Or with pip:

pip install pylumbergh
lumbergh

Then open http://localhost:8420 in your browser.

Prerequisites

Tool Install
tmux sudo apt install tmux or brew install tmux
git sudo apt install git or brew install git

That's it. The lumbergh command checks for these on startup and tells you what's missing.

Remote access (phone/tablet)

Lumbergh binds to 0.0.0.0 so it's accessible from other devices on your network. For secure remote access (especially from mobile), we recommend Tailscale:

  1. Install Tailscale on your server and your phone/tablet
  2. Access Lumbergh at http://<tailscale-ip>:8420

This gives you a private, encrypted connection without exposing ports to the internet.

Development

If you want to contribute or hack on Lumbergh itself:

git clone https://github.com/voglster/lumbergh.git
cd lumbergh
./bootstrap.sh

This creates a tmux session with three windows (claude, backend, frontend) and opens http://localhost:5420 with the Vite dev server. You'll need uv, npm, and Claude Code in addition to the prerequisites above.

Tech Stack

  • Backend: Python 3.11+, FastAPI, libtmux, TinyDB
  • Frontend: React + Vite + TypeScript, xterm.js, TanStack Query, Tailwind CSS

Project Structure

lumbergh/
├── backend/
│   ├── main.py              # FastAPI app entry point
│   ├── tmux_pty.py           # PTY/tmux attachment logic
│   ├── session_manager.py    # PTY pooling for WebSocket clients
│   ├── git_utils.py          # Git operations (diff, log, branches)
│   ├── file_utils.py         # File browsing utilities
│   ├── db_utils.py           # TinyDB persistence helpers
│   ├── diff_cache.py         # Diff caching layer
│   ├── idle_detector.py      # Session idle detection
│   ├── idle_monitor.py       # Idle monitoring service
│   ├── message_buffer.py     # Message buffering for AI context
│   ├── models.py             # Pydantic models
│   ├── constants.py          # Shared constants
│   ├── ai/                   # AI provider integration
│   │   ├── providers.py
│   │   └── prompts.py
│   ├── routers/
│   │   ├── ai.py             # AI chat endpoints
│   │   ├── notes.py          # Todo, scratchpad, prompt template APIs
│   │   ├── sessions.py       # Session management endpoints
│   │   ├── settings.py       # Settings endpoints
│   │   └── shared.py         # Shared files endpoints
│   ├── tests/
│   ├── pyproject.toml
│   └── start.sh
├── frontend/
│   ├── src/
│   │   ├── App.tsx
│   │   ├── pages/
│   │   │   ├── Dashboard.tsx
│   │   │   └── SessionDetail.tsx
│   │   ├── components/
│   │   │   ├── Terminal.tsx
│   │   │   ├── QuickInput.tsx
│   │   │   ├── DiffViewer.tsx
│   │   │   ├── FileBrowser.tsx
│   │   │   ├── TodoList.tsx
│   │   │   ├── Scratchpad.tsx
│   │   │   ├── PromptTemplates.tsx
│   │   │   ├── SessionCard.tsx
│   │   │   ├── CreateSessionModal.tsx
│   │   │   ├── BranchPicker.tsx
│   │   │   ├── SettingsModal.tsx
│   │   │   ├── SharedFiles.tsx
│   │   │   ├── ResizablePanes.tsx
│   │   │   ├── VerticalResizablePanes.tsx
│   │   │   ├── diff/
│   │   │   │   ├── FileList.tsx
│   │   │   │   ├── FileDiff.tsx
│   │   │   │   └── CommitList.tsx
│   │   │   └── graph/
│   │   ├── hooks/
│   │   └── utils/
│   └── start.sh
├── slides/                # Slidev presentation
├── docs/                  # PRD, architecture, roadmap
├── start.sh               # Start both backend + frontend
└── LICENSE

License

MIT

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

pylumbergh-0.1.1.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

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

pylumbergh-0.1.1-py3-none-any.whl (3.2 MB view details)

Uploaded Python 3

File details

Details for the file pylumbergh-0.1.1.tar.gz.

File metadata

  • Download URL: pylumbergh-0.1.1.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylumbergh-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2b756229542f4c996796197844d8230b7309bf22d280bd954b315c5bf116ba9d
MD5 3ac9b6d7921a36132626f5973fe4635a
BLAKE2b-256 ecbc43c6ab9f5fc54e333bdeb39b20fcb9d67cf7b719050da87e7345f621ed0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylumbergh-0.1.1.tar.gz:

Publisher: release-stable.yml on voglster/lumbergh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylumbergh-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pylumbergh-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylumbergh-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fe0a97626fbf5dddaf78e75c4698323138fd33b1fe58b3a670c6a956b3a900cb
MD5 ebef2ed4726388ce82319ec728c090da
BLAKE2b-256 cffc1b8d937133423fa221fae71134b8a4dd11d8cf8082d826fb924ed6a12bdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylumbergh-0.1.1-py3-none-any.whl:

Publisher: release-stable.yml on voglster/lumbergh

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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