import Image from "next/image"; import { EmailReveal } from "./email-reveal"; import { TerminalCascade } from "./terminal-cascade"; import { SearchIcon, GithubIcon, TerminalIcon, FolderIcon, NetworkIcon, GamepadIcon, BlocksIcon, ArrowRightIcon, ExternalLinkIcon, LinkedinIcon, MailIcon, SpaceInvadersIcon, EyeIcon, BellIcon, } from "raster-react"; function PixelDivider() { return (
{Array.from({ length: 40 }).map((_, i) => (
))}
); } function Keycap({ children }: { children: React.ReactNode }) { return {children}; } function TerminalWindow({ title, children, }: { title: string; children: React.ReactNode; }) { return (
{title}
{children}
); } function FeatureBlock({ icon, title, desc, }: { icon: React.ReactNode; title: string; desc: string; }) { return (
{icon}

{title}

{desc}

); } export default function Home() { return (
{/* ══════ HERO ══════ */}
{/* Grid background */}
{/* Nav */} {/* Two-column hero */}
{/* Left — text + CTA */}
cladm pixel art logo

CLADM

TUI LAUNCHER FOR CLAUDE CODE

Browse all your projects. See git status at a glance. Monitor which sessions are busy or idle in real time. Get notified when Claude finishes. Launch everything in parallel Terminal windows.

{/* Install command */}
$ bun install -g cladm _

requires{" "} bun {" "} >= 1.3 + macOS

{/* Right — terminal cascade */}
{/* Bottom edge - pixel staircase */}
{/* ══════ DEMO GIF ══════ */}

// SEE IT IN ACTION

cladm demo showing project navigation
{/* ══════ SCREENSHOTS ══════ */}

// SCREENSHOTS

{/* Main view */}

PROJECT LIST

All your projects sorted by recent Claude usage. Git branch, sync status, dirty state, session count, and auto-detected stack at a glance.

cladm main project list view
{/* Expanded view */}

EXPANDED VIEW

Press to expand. Browse branches, see session conversations with last prompt and Claude's response. Resume any session directly.

cladm expanded view with sessions and branches
{/* ══════ LIVE MONITORING ══════ */}

// LIVE SESSION MONITORING

cladm detects active Claude Code sessions and shows their real-time status. When Claude finishes responding, a sound notification plays so you never miss it.

Busy — Claude is actively processing
3m Idle — Claude finished 3 min ago, waiting for input
No session — No active Claude process

Detection works by monitoring JSONL file modification times in{" "} ~/.claude/projects/. Sessions writing within 5 seconds are busy; otherwise idle. Header shows total busy/idle count across all projects.

{/* ══════ FEATURES ══════ */}

// FEATURES

} title="AUTO-DISCOVERY" desc="Reads ~/.claude/history.jsonl to find every project you've used with Claude Code. No config needed." /> } title="GIT METADATA" desc="Branch, sync status (ahead/behind), last commit, dirty state — all loaded in parallel." /> } title="SESSION BROWSER" desc="Expand any project to browse past sessions. See conversation previews and resume directly." /> } title="BRANCH SWITCHING" desc="Select a non-current branch to launch Claude with an auto-prompt to switch and stash." /> } title="LIVE ACTIVITY" desc="See which sessions are busy or idle in real time. Green dot = Claude is working. Yellow dot + elapsed time = waiting for input." /> } title="DONE SOUND" desc="Plays a sound when Claude finishes responding. Never miss a completed task — even across multiple sessions." /> } title="PARALLEL LAUNCH" desc="Select multiple projects and hit Enter. Each opens in a new Terminal.app window simultaneously." /> } title="STACK DETECTION" desc="Auto-detects project stack: TypeScript, Python, Rust, Go, Docker, and more from config files." />
{/* ══════ KEYBINDINGS ══════ */}

// CONTROLS

{[ ["↑ ↓", "Navigate"], ["Space", "Toggle selection"], ["→", "Expand project"], ["←", "Collapse"], ["a", "Select all"], ["n", "Deselect all"], ["s", "Cycle sort mode"], ["f", "Open folder in Finder"], ["g", "Go to active session"], ["Enter", "Launch selected"], ["PgUp PgDn", "Jump 15 rows"], ["q / Esc", "Quit"], ].map(([key, desc]) => (
{key}
{desc}
))}
{/* ══════ INSTALL ══════ */}

// QUICK START

${" "} git clone{" "} https://github.com/alezmad/cladm.git
${" "} cd cladm
${" "} bun install
${" "} bun link {" "} # registers `cladm` globally
${" "} cladm _

Or try with mock data:{" "} cladm --demo

{/* ══════ LAUNCH RESULT ══════ */}

// HIT ENTER

Select your projects, press Enter, and watch them all launch in parallel. Each project opens a fresh Claude Code session in its own Terminal window.

{/* Mini cladm picker */}
{" PROJECT BRANCH LAST USE"}
[✓] {" "} acme-api{" "} main {" "}25m ago
2m [✓] quantum-dashboard{" "} feat/cha {" "}1h ago
[✓] ml-pipeline{" "} exp/bert {" "}just now
[ ] pixel-engine{" "}develop{" "}3h ago
{/* Arrow */}
>>>
{/* Claude Code terminals */}
{/* Stacked terminal windows effect */}
Claude Code session launched in Terminal
{/* ══════ AUTHOR ══════ */}
// BUILT BY
Alejandro Mourente
{/* ══════ FOOTER ══════ */}
); }