From claude-brain-sync
Joins an existing Claude Code brain sync network from another machine via Git clone/pull, handles age encryption setup, and merges local brain state for multi-machine sync.
npx claudepluginhub toroleapinc/claude-brain --plugin claude-brain-syncThis skill uses the workspace's default tool permissions.
The user wants to join an existing brain network from this machine.
Initializes Git-based sync network for Claude Code brain, exporting memories, skills, settings to private remote repo. Validates security, supports age encryption.
Manages StatsClaw Brain knowledge sharing lifecycle: user opt-in via context.md, git clone/pull of statsclaw/brain and brain-seedbank repos, consent for PR contributions.
Creates, lists, and cleans up Git worktrees for parallel Claude Code sessions on separate branches, enabling conflict-free multi-feature development.
Share bugs, ideas, or general feedback.
The user wants to join an existing brain network from this machine.
The Git remote URL is provided as: $ARGUMENTS
Check dependencies (git, jq or python3).
Validate the remote URL for security:
source "${CLAUDE_PLUGIN_ROOT}/scripts/common.sh"
validate_remote_url "$ARGUMENTS"
If the URL appears to point to a PUBLIC repo, warn the user and ask for confirmation.
Show current local brain inventory:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/status.sh"
Show security notice:
Clone the brain repo:
git clone "$ARGUMENTS" ~/.claude/brain-repo
If the directory exists, do git -C ~/.claude/brain-repo pull origin main instead.
Check if the network uses encryption:
# Check for recipients file indicating encryption
if [ -f ~/.claude/brain-repo/meta/recipients.txt ]; then
echo "This brain network uses age encryption."
if ! command -v age-keygen &>/dev/null; then
echo "ERROR: age not found. Install it from https://github.com/FiloSottile/age"
echo "On macOS: brew install age"
echo "On Ubuntu/Debian: apt install age"
exit 1
fi
echo ""
echo "You need to set up age encryption to join this network."
echo "Options:"
echo " 1. Generate a new age keypair for this machine"
echo " 2. Use an existing age private key"
echo ""
read -p "Generate new keypair? (y/n): " -r generate_key
if [ "$generate_key" = "y" ] || [ "$generate_key" = "Y" ]; then
# Generate new keypair
source "${CLAUDE_PLUGIN_ROOT}/scripts/common.sh"
IDENTITY_FILE="${HOME}/.claude/brain-age-key.txt"
age-keygen -o "$IDENTITY_FILE"
chmod 600 "$IDENTITY_FILE"
# Extract public key
PUBLIC_KEY=$(grep "# public key:" "$IDENTITY_FILE" | cut -d' ' -f4)
echo ""
echo "Generated age keypair. Your public key is:"
echo "$PUBLIC_KEY"
echo ""
echo "IMPORTANT: Share this public key with the brain network owner"
echo "so they can add it to the recipients file."
echo ""
echo "The network owner should run:"
echo " echo '$PUBLIC_KEY' >> ~/.claude/brain-repo/meta/recipients.txt"
echo " git add meta/recipients.txt && git commit -m 'Add machine: $(hostname)' && git push"
echo ""
read -p "Press Enter when the network owner has added your public key..."
# Pull to get updated recipients
git -C ~/.claude/brain-repo pull origin main
REGISTER_FLAGS="--encrypt"
else
echo "Please place your existing age private key at: ~/.claude/brain-age-key.txt"
echo "Make sure it's readable only by you: chmod 600 ~/.claude/brain-age-key.txt"
read -p "Press Enter when ready..."
if [ ! -f ~/.claude/brain-age-key.txt ]; then
echo "ERROR: Age private key not found at ~/.claude/brain-age-key.txt"
exit 1
fi
REGISTER_FLAGS="--encrypt"
fi
else
echo "This brain network does not use encryption."
REGISTER_FLAGS=""
fi
Register this machine:
if [ -n "$REGISTER_FLAGS" ]; then
bash "${CLAUDE_PLUGIN_ROOT}/scripts/register-machine.sh" "$ARGUMENTS" $REGISTER_FLAGS
else
bash "${CLAUDE_PLUGIN_ROOT}/scripts/register-machine.sh" "$ARGUMENTS"
fi
Show what's in the consolidated brain vs what's local. Run export first:
MACHINE_ID=$(cat ~/.claude/brain-config.json | jq -r '.machine_id')
mkdir -p ~/.claude/brain-repo/machines/${MACHINE_ID}
bash "${CLAUDE_PLUGIN_ROOT}/scripts/export.sh" --output ~/.claude/brain-repo/machines/${MACHINE_ID}/brain-snapshot.json
Ask the user how to handle existing local data:
Based on choice:
Push the updated state:
cd ~/.claude/brain-repo
git add machines/ consolidated/ meta/
git commit -m "Join: $(hostname) joined brain network"
git push origin main
Confirm success: