-
Notifications
You must be signed in to change notification settings - Fork 3
Getting Started
From zero to your first inter-machine task in about 30 minutes.
- 1–2+ computers running macOS or Linux (Windows supported with Node.js scripts)
- Claude Code installed on each machine
- A private git repository (GitHub free tier works)
- Tailscale for SSH between machines (free tier works; skip if single-machine)
- Node.js installed on each machine
Install Tailscale on every machine and join the same tailnet. Once done, verify:
# From your laptop — should print the server's Tailscale IP
ping <server-tailscale-hostname>
ssh <server-tailscale-hostname>If you're only using one machine, skip this step.
Create a private repo on GitHub (or GitLab, Gitea, etc.), then clone it as ~/knowledge on every machine:
# On each machine
git clone git@github.com:you/fleet-kb.git ~/knowledgeCopy the starter CLAUDE.md and KB structure from this repo:
# One-time setup on each machine
cd ~/knowledge
cp /path/to/claude-fleet/templates/CLAUDE.md .
# Create folders
mkdir -p inbox daily intelligence/techniques intelligence/decisions fleet projects sessions/active triggers
# Create inbox files — one per machine (use your actual machine names)
cp /path/to/claude-fleet/templates/inbox/example-machine.md inbox/alpha.md
cp /path/to/claude-fleet/templates/inbox/example-machine.md inbox/beta.md
git add . && git commit -m "init: knowledge base structure" && git pushMachine names: pick short, memorable names (alpha/beta/gamma, or laptop/desktop/server, or your actual hostnames). The name must match your inbox filename: inbox/<name>.md.
Clone this repo and copy the fleet scripts to ~/claude-fleet/ on each machine:
git clone https://github.com/ibrews/claude-fleet.git /tmp/claude-fleet-repo
mkdir -p ~/claude-fleet
cp /tmp/claude-fleet-repo/scripts/*.sh ~/claude-fleet/
cp /tmp/claude-fleet-repo/scripts/*.js ~/claude-fleet/
chmod +x ~/claude-fleet/*.shSet your machine name if it doesn't match your inbox filename:
# Add to ~/.zshrc or ~/.bashrc
export FLEET_MACHINE_NAME=alpha # must match inbox/alpha.mdCopy the template settings to ~/.claude/settings.json (this is the only file that must live in ~/.claude/):
cp /tmp/claude-fleet-repo/templates/settings.json ~/.claude/settings.jsonThe template wires up these hooks:
- SessionStart: session board check → inbox check
- Stop: KB sync → Telegram notification
- SessionEnd: session board checkout
Verify Node.js path for headless sessions:
which node # e.g. /opt/homebrew/bin/nodeIf it's not /usr/bin/node, update the notify-human.js hook command in settings.json to use the full path.
Telegram is optional but recommended — it's how you know when a session finishes without watching the terminal.
See docs/06-telegram-bot.md for setup. You'll need a bot token from @BotFather and your chat ID.
Add to your shell profile or ~/claude-fleet/fleet.env:
export TELEGRAM_BOT_TOKEN="your-token"
export TELEGRAM_CHAT_ID="your-chat-id"Send a task to another machine:
cd ~/knowledge
cat >> inbox/beta.md << 'EOF'
- [ ] [2024-01-15 12:00] @alpha → check: Are you alive? Write a one-line response to inbox/alpha.md.
EOF
git add inbox/ && git commit -m "test: ping beta" && git pushTrigger beta (from your laptop, SSH in and start a session — or just wait for beta's next scheduled session):
ssh beta "claude -p 'check your inbox' --max-turns 3"In a few seconds, check the KB:
cd ~/knowledge && git pull && cat inbox/alpha.mdYou should see beta's response. If Telegram is configured, you'll also get a notification.
While any session is running, open another terminal and check the board:
~/claude-fleet/session-board.sh boardYou'll see the session, its status, and any singleton resources it holds.
- Set up the fleet trigger to wake all machines at once: docs/08-fleet-trigger.md
- Add a Telegram channel for phone control: docs/06-telegram-bot.md
- Configure model routing: docs/13-model-routing.md
- Build your knowledge base: docs/15-second-brain.md