Brain Join logo

Brain Join

Community
toroleapinc
brain-join

Join an existing brain sync network from another machine. Pulls the consolidated brain and merges with any local state.

Overview

Publishertoroleapinc
Repositoryclaude-brain
Skill namebrain-join
Stars
92
Forks
23
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by toroleapinc on GitHub. Read the source before you install it.

Installation

Install the Brain Join AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/toroleapinc/claude-brain/tree/main/skills/brain-join
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/toroleapinc/claude-brain.git /tmp/claude-brain
mkdir -p .claude/skills
cp -r /tmp/claude-brain/skills/brain-join .claude/skills/brain-join
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Brain Join in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Brain Join on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Brain Join is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

The user wants to join an existing brain network from this machine.

The Git remote URL is provided as: $ARGUMENTS

Steps

  1. Check dependencies (git, jq or python3).

  2. Validate the remote URL for security:

    bash
    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.

  3. Show current local brain inventory:

    bash "${CLAUDE_PLUGIN_ROOT}/scripts/status.sh"
  4. Show security notice:

    • "Joining a brain network means:"
    • " - Your local brain data will be PUSHED to the remote repository"
    • " - Remote brain data (skills, agents, rules) will be IMPORTED to your machine"
    • " - Auto-sync will run on every Claude Code session start/end"
    • ""
    • "Only join brain networks you trust — imported skills and agents execute with Claude's permissions."
  5. Clone the brain repo:

    bash
    git clone "$ARGUMENTS" ~/.claude/brain-repo

    If the directory exists, do git -C ~/.claude/brain-repo pull origin main instead.

  6. Check if the network uses encryption:

    bash
    # 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
  7. Register this machine:

    bash
    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
  8. Show what's in the consolidated brain vs what's local. Run export first:

    bash
    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
  9. Ask the user how to handle existing local data:

    • Merge (recommended): Merge local brain into consolidated
    • Overwrite: Replace local with consolidated brain
    • Keep local: Keep local as-is, only add new items from consolidated
  10. Based on choice:

    • Merge: Run merge-structured.sh then merge-semantic.sh between local snapshot and consolidated
    • Overwrite: Run import.sh directly with consolidated brain
    • Keep local: Run import.sh but skip files that already exist locally
  11. Push the updated state:

    bash
    cd ~/.claude/brain-repo
    git add machines/ consolidated/ meta/
    git commit -m "Join: $(hostname) joined brain network"
    git push origin main
  12. Confirm success:

    • Show how many machines are now in the network
    • Show what was imported/merged
    • Note: "Auto-sync is now enabled. Your brain syncs on every Claude Code session start/end."
    • Reminder: "A backup of your pre-join brain state was saved to ~/.claude/brain-backups/"

Frequently asked questions

What does the Brain Join AI skill do?

Join an existing brain sync network from another machine. Pulls the consolidated brain and merges with any local state.

Why use Brain Join on TypingMind?

Because you install it once and use it with any model. Brain Join is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Brain Join in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/toroleapinc/claude-brain/tree/main/skills/brain-join. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Brain Join?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Brain Join?

As many as you like. As long as a model supports skills, you can use Brain Join with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Brain Join AI skill free?

Yes. It is published on GitHub by toroleapinc under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇