From claude-brain-sync
Initializes Git-based sync network for Claude Code brain, exporting memories, skills, settings to private remote repo. Validates security, supports age encryption.
npx claudepluginhub toroleapinc/claude-brain --plugin claude-brain-syncThis skill uses the workspace's default tool permissions.
The user wants to initialize their Claude Brain sync network.
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.
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.
Backs up Claude Code workspace (~/.clawd), agent state (~/.clawdbot), and skills to encrypted .tgz archives with retention pruning and optional rclone cloud sync.
Share bugs, ideas, or general feedback.
The user wants to initialize their Claude Brain sync network.
Parse arguments:
Arguments provided: $ARGUMENTS
First, check dependencies by running:
"${CLAUDE_PLUGIN_ROOT}/scripts/common.sh" && echo "OK"
If jq and git are missing, tell the user what to install.
Validate the remote URL for security:
source "${CLAUDE_PLUGIN_ROOT}/scripts/common.sh"
validate_remote_url "$ARGUMENTS"
If the URL is detected as pointing to a PUBLIC repository, STOP and warn the user:
Show the user their current brain inventory by running:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/status.sh"
IMPORTANT: Show the user a security notice before proceeding: Tell the user:
Ask the user to confirm they want to initialize brain sync with the provided remote.
Run the initialization sequence:
# Parse arguments for encryption flag
ENABLE_ENCRYPTION=false
REMOTE_URL=""
for arg in $ARGUMENTS; do
case "$arg" in
--encrypt) ENABLE_ENCRYPTION=true ;;
*) if [ -z "$REMOTE_URL" ]; then REMOTE_URL="$arg"; fi ;;
esac
done
# Create brain repo directory
mkdir -p ~/.claude/brain-repo
# Initialize git repo
cd ~/.claude/brain-repo
git init
git remote add origin "$REMOTE_URL" 2>/dev/null || git remote set-url origin "$REMOTE_URL"
# Create directory structure
mkdir -p machines consolidated meta
# Initialize meta files
echo '{"entries":[]}' > meta/merge-log.json
# Set up encryption if requested
if [ "$ENABLE_ENCRYPTION" = "true" ]; then
echo "Setting up age encryption..."
# Check if age is installed
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
# Generate age keypair
source "${CLAUDE_PLUGIN_ROOT}/scripts/common.sh"
IDENTITY_FILE="${HOME}/.claude/brain-age-key.txt"
RECIPIENTS_FILE="${HOME}/.claude/brain-repo/meta/recipients.txt"
generate_age_keypair "$IDENTITY_FILE" "$RECIPIENTS_FILE"
echo "Age encryption configured:"
echo " Private key: $IDENTITY_FILE"
echo " Public key: $RECIPIENTS_FILE"
fi
# Register this machine (with encryption settings)
if [ "$ENABLE_ENCRYPTION" = "true" ]; then
bash "${CLAUDE_PLUGIN_ROOT}/scripts/register-machine.sh" "$REMOTE_URL" --encrypt
else
bash "${CLAUDE_PLUGIN_ROOT}/scripts/register-machine.sh" "$REMOTE_URL"
fi
# Export initial brain snapshot
MACHINE_ID=$(cat ~/.claude/brain-config.json | jq -r '.machine_id')
mkdir -p "machines/${MACHINE_ID}"
bash "${CLAUDE_PLUGIN_ROOT}/scripts/export.sh" --output "machines/${MACHINE_ID}/brain-snapshot.json"
# Copy as initial consolidated brain
cp "machines/${MACHINE_ID}/brain-snapshot.json" consolidated/brain.json
# Commit and push (specific paths, not -A)
git add machines/ consolidated/ meta/
git commit -m "Initialize brain: $(hostname)"
git branch -M main
git push -u origin main
Confirm success and show the user:
If any step fails, show the error and suggest fixes (e.g., create the remote repo first on GitHub).