basecamp
Claude Code multi-project workspace launcher with custom prompts and isolated worktrees.
git clone https://github.com/btimothy-har/basecamp.git
cd basecamp && uv run install.py
basecamp setup
basecamp claude basecamp
Why basecamp?
When working with Claude Code across multiple projects, you face friction:
- Scattered context — Each project needs different prompts, working styles, and domain knowledge
- Branch conflicts — Parallel conversations on the same repo compete for the working directory
- Repetitive setup — Re-configuring directories and prompts for each session
basecamp solves this with a single command that:
- Replaces Claude's default system prompt — Full control over behavior, consistency across sessions, tailored to your workflow (Claude Code still appends its tool definitions)
- Configures project context — Loads project-specific prompts and working styles automatically
- Supports isolated worktrees — Use
-l <label> to work in a labeled worktree for parallel conversations
- Manages multi-repo projects — Groups related repositories under one project definition
Installation
Requires uv and Claude Code.
git clone https://github.com/btimothy-har/basecamp.git
cd basecamp
uv run install.py # interactive (prompts for editable mode)
uv run install.py -e # editable (recommended for development)
uv run install.py --no-editable
This installs two tools (basecamp and observer) and saves the install directory to ~/.basecamp/config.json.
Then initialize the environment:
basecamp setup # check prerequisites, scaffold dirs, create default config
If basecamp or observer aren't in your PATH:
export PATH="$HOME/.local/bin:$PATH"
Upgrading
uv tool upgrade basecamp-core && uv tool upgrade basecamp-observer
Uninstalling
uv tool uninstall basecamp-core && uv tool uninstall basecamp-observer
Usage
Launching Projects
basecamp claude <project> # Launch Claude in project directory
basecamp claude . # Launch Claude in current directory
basecamp claude ~/path/to/dir # Launch Claude in any directory path
basecamp claude <project> --resume # Resume previous conversation (-r)
basecamp claude <project> -l <label> # Work in labeled worktree (creates if new)
Opening in VS Code
basecamp open <project> # Open basecamp + project directories
basecamp open <project> -n # Open in new window
basecamp open <project> -l <label> # Open in existing worktree
Managing Projects
basecamp project list # List available projects
basecamp project add # Interactively add a new project
basecamp project edit <name> # Interactively edit a project
basecamp project remove <name> # Remove a project
Managing Worktrees
basecamp worktree list <project> # List worktrees for project
basecamp worktree list --all # List all worktrees (-a)
basecamp worktree clean <project> # Interactive cleanup
basecamp worktree clean <project> <name> # Remove specific worktree
basecamp worktree clean <project> --all # Remove all worktrees
basecamp worktree clean <project> -f # Force removal (--force)
Dispatching Workers
Dispatch parallel Claude sessions from within a running session (requires Kitty or tmux):
basecamp dispatch # Dispatch worker with auto-generated name
basecamp dispatch --name <task> # Dispatch with specific task name
basecamp dispatch --model opus # Dispatch with specific model
Logseq Integration
basecamp log "message" # Append block to today's journal
basecamp log "message" -p ProjectName # Append with [[ProjectName]] page reference
basecamp reflect # Launch reflective journaling session (end of day)
basecamp plan # Launch daily planning session (start of day)
Requires Logseq graph path configured via basecamp setup.
Configuration
Projects are defined in ~/.basecamp/config.json:
{
"web-app": {
"dirs": ["GitHub/web-app"],
"description": "Main web application",
"working_style": "engineering"
},
"data-pipeline": {
"dirs": ["GitHub/pipeline", "GitHub/pipeline-config"],
"description": "ETL pipeline and configuration",
"working_style": "engineering",
"context": "pipeline"
}
}