Skip to content

Multi-Project Setup

Catalyst supports completely isolated contexts for different clients and projects using HumanLayer profiles.

Each profile points to a different thoughts repository, keeping contexts completely isolated:

  • Personal work — Your own projects
  • Client A — One client’s projects
  • Client B — Another client’s projects
  • Open source — Community projects
Terminal window
# List profiles
humanlayer thoughts profile list
# Create new profile
humanlayer thoughts profile create acme --repo ~/clients/acme/thoughts
# Initialize project with profile
cd /path/to/acme-project
humanlayer thoughts init --profile acme
# Check current status
humanlayer thoughts status
Terminal window
# Create profile
humanlayer thoughts profile create acme --repo ~/clients/acme/thoughts
# Initialize a project with this profile
cd /path/to/acme-project
humanlayer thoughts init --profile acme

HumanLayer maintains repoMappings that map working directories to profiles:

  1. Run humanlayer thoughts init --profile acme in /path/to/project
  2. HumanLayer records the mapping: /path/to/projectacme profile
  3. Future humanlayer thoughts commands in that directory auto-detect the profile
  4. No need to specify --profile on every command

Each profile gets its own isolated repository:

~/thoughts/ # Personal (default)
~/clients/acme/thoughts/ # ACME client
~/clients/megacorp/thoughts/ # MegaCorp client

Each repository has the same internal structure:

thoughts/
├── repos/ # Project-specific
│ ├── project-a/
│ │ ├── ryan/
│ │ └── shared/
│ └── project-b/
│ ├── ryan/
│ └── shared/
└── global/ # Cross-project
├── ryan/
└── shared/
Terminal window
cd ~/code-repos/my-project
humanlayer thoughts init --profile coalesce-labs
/create-plan # Works as normal
Terminal window
cd ~/code-repos/github/acme/project
humanlayer thoughts init --profile acme
/create-plan # Uses client-specific context

Personal thoughts: Push to GitHub as a private repo — it’s your IP.

Client thoughts: Check your contract/NDA. Options:

  • Keep local only (good for sensitive work)
  • Push to your private repo
  • Push to the client’s organization (if allowed)
Terminal window
cd ~/clients/acme/thoughts
gh repo create ryan/acme-thoughts --private --source=. --push

Use descriptive profile names (acme, coalesce-labs, google-consulting) rather than vague ones (client1, work, temp).

Initialize projects immediately when starting work in a new directory.