summaryrefslogtreecommitdiff
path: root/scripts/claude-daemon-setup.sh
blob: 417693649731febe57a76a55a95395a99d86fca7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
# Set up Claude Code remote-control daemons for each app repo (run as root on Hetzner VPS).
set -e

# Install Claude Code if not present
if ! command -v claude &>/dev/null; then
  npm install -g @anthropic-ai/claude-code
fi

declare -A REPOS=(
  ["infra"]="/app/infra"
  ["tokyo"]="/app"
  ["whoisband"]="/app/whois-band"
)

for NAME in "${!REPOS[@]}"; do
  DIR="${REPOS[$NAME]}"
  SERVICE="claude-${NAME}.service"

  cat > "/etc/systemd/system/${SERVICE}" << EOF
[Unit]
Description=Claude Code Remote Session - ${NAME}
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=${DIR}
ExecStart=/usr/bin/env claude --remote-control "${NAME}"
Restart=always
RestartSec=15
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

  systemctl daemon-reload
  systemctl enable "${SERVICE}"
  systemctl restart "${SERVICE}"
  echo "Started: ${SERVICE} (WorkingDirectory: ${DIR})"
done

echo ""
echo "All Claude Code daemons running. Connect via https://claude.ai/code"
echo ""
echo "Useful commands:"
echo "  systemctl status claude-infra"
echo "  systemctl status claude-tokyo"
echo "  systemctl status claude-whoisband"
echo "  journalctl -u claude-tokyo -f"