config/bin/dtach-router
Bastien Chanot 6d341f2c9f feat(bin): add dt, dtach-router, claude-provider CLI scripts
- dt: dtach session manager for claude-in-dtach sessions
- dtach-router: SSH-login dashboard to resume sessions (sourced from bashrc)
- claude-provider: switch Claude Code between Anthropic and OpenRouter;
  the OpenRouter API key is read from $OPENROUTER_API_KEY at runtime and
  is never stored in the repo

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 18:51:04 +02:00

55 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# dtach-router — au login SSH : s'il existe des sessions claude/dtach, affiche
# le dashboard et propose d'en rejoindre une (fzf). Sinon, shell normal direct.
# NE CREE PLUS de session (la creation se fait via l'alias `cc`).
# À SOURCER depuis ~/.bashrc. Pas de set -e/-u (fuiraient dans le shell hote).
set -o pipefail
# SSH interactif uniquement ; sinon on ne fait rien.
case $- in *i*) ;; *) return 0 2>/dev/null ;; esac
DT="${DT_BIN:-dt}"
raw=$("$DT" --raw 2>/dev/null)
# Aucune session : shell normal, zero friction.
[ -z "$raw" ] && return 0 2>/dev/null
# Des sessions existent : dashboard + menu de selection.
"$DT" ls || true
out=$(printf '%s\n' "$raw" | \
fzf --with-nth=2,3 --delimiter='\t' \
--header=$'ENTER=rejoindre une session ESC=shell normal' \
--preview 'echo "Dossier : {2}"; echo "Age : {3}"' \
--preview-window=down,15% )
# ESC / selection vide : shell normal.
[ -z "$out" ] && return 0 2>/dev/null
name=$(printf '%s' "$out" | cut -f1)
dt at "$name" </dev/tty >/dev/tty 2>&1
return 0 2>/dev/null
# ─────────────────────────────────────────────────────────────
# INSTALLATION (~/.bashrc serveur), a la fin :
#
# # creation de session claude-dans-dtach
# dtach_claude() { dtach -c "$HOME/.dtach/${1:-claude-$(date +%H%M%S)}" -e '^\' claude; }
# alias cc='dtach_claude'
#
# # dashboard + reprise au login
# [ -x "$HOME/.local/bin/dtach-router" ] && source "$HOME/.local/bin/dtach-router"
#
# # rappeler le menu depuis un shell :
# alias d='source ~/.local/bin/dtach-router'
#
# chmod +x ~/.local/bin/dt ~/.local/bin/dtach-router
#
# USAGE :
# cd ~/projets/seo && cc seo -> claude dans dtach, session "seo"
# Ctrl-\ -> detache, retour au shell
# (au prochain login) -> dashboard propose "seo", ENTER pour reprendre
# ─────────────────────────────────────────────────────────────