Restart the Vellum assistant and gateway services with branch-aware git behavior.
-
Ensure Bun is on PATH:
export PATH="$HOME/.bun/bin:$PATH"
-
Preflight snapshot - capture current state before making changes:
vellum ps
-
Quiesce with vellum sleep - stop assistant and gateway processes. This is directory-agnostic and stops processes globally regardless of CWD:
vellum sleep || true
-
Verify stopped - run vellum ps and confirm no running processes. If vellum ps shows processes still running, run fallback cleanup to force-kill them:
vellum ps
Fallback cleanup if vellum ps confirms processes are still running:
pkill -x "vellum-assistant" || true
pkill -f "gateway/src/index" || true
lsof -ti :7830 | xargs kill -9 2>/dev/null || true
lsof -ti :7821 | xargs kill -9 2>/dev/null || true
After fallback cleanup, run vellum ps again to confirm all processes are stopped.
-
Smart branch handling - determine what git operations (if any) to perform:
CURRENT=$(git branch --show-current)
GIT_OPS_RAN=false
Case A - --pull flag: Force pull on the current branch.
if [[ "$ARGUMENTS" == "--pull" ]]; then
git pull
GIT_OPS_RAN=true
fi
Case B - Explicit branch name provided: Check out the requested branch, pulling if possible. Before checking out, verify the working tree is clean - if there are uncommitted changes, stop and warn the user rather than silently losing work. Do NOT stash automatically.
if [[ -n "$ARGUMENTS" && "$ARGUMENTS" != "--pull" ]]; then
if ! git diff --quiet || ! git diff --cached --quiet; then
echo "ERROR: Uncommitted changes detected. Commit or stash them before switching branches."
fi
git checkout "$ARGUMENTS"
git pull origin "$ARGUMENTS" 2>/dev/null || true
GIT_OPS_RAN=true
fi
Case C - No args, on main: Pull latest from origin (preserves current default behavior).
if [[ -z "$ARGUMENTS" && "$CURRENT" == "main" ]]; then
git pull origin main
GIT_OPS_RAN=true
fi
Case D - No args, on a feature branch: Skip git ops entirely - just restart with the current checkout.
if [[ -z "$ARGUMENTS" && "$CURRENT" != "main" ]]; then
echo "On branch '$CURRENT' - skipping git pull, restarting with current checkout"
fi
-
Install dependencies - only if git operations ran (dependencies are unlikely to have changed for a local-only restart):
if [[ "$GIT_OPS_RAN" == "true" ]]; then
cd assistant && bun install && cd ..
cd gateway && bun install && cd ..
fi
-
Restart with vellum wake - start assistant and gateway from the current checkout. vellum wake must be run from the checkout directory that should supply the new assistant code:
vellum wake
-
Verify fresh state - run vellum ps to confirm processes are running:
sleep 5
echo ""
echo "=== Startup Summary ==="
vellum ps
echo "======================="